<?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>163246</bug_id>
          
          <creation_ts>2016-10-10 15:12:51 -0700</creation_ts>
          <short_desc>B3 needs a special WasmBoundsCheck Opcode</short_desc>
          <delta_ts>2016-10-12 18:45:35 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238564</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-10 15:12:51 -0700</bug_when>
    <thetext>In order to make WASM as fast as possible we need to give B3 a through understanding of how WASM works. In particular, B3 needs to understand the memory model of WASM and what optimizations it can make within those constraints. To this end we should add a WASMCheckBounds opcode. This opcode should take the following bits of information: WASMCheckBounds(Value* ptr, Reg sizeRegister, size_t guardedBytes). When emitting a load WASM will first emit a WASMBoundsCheck value passing WASMCheckBounds(WASMUserPtrValue, pinnedSizeRegister, max(0, MMapedMemoryBeyondMaxRequested - WASMLoadOpOffsetImmediate - sizeOfLoadOpcode)). So if a module had a memory max of 1MB and we mapped 1088 KB (64 KB extra) and a WASM I32.Load operation with an offset immediate of 1024 bytes we could emit a WASMCheckBounds(@ptr, %r13, 64 * KB - 1024 - 4).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238698</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-10 19:48:45 -0700</bug_when>
    <thetext>Couldn&apos;t help thinking about this more.

Seems like you need WASMCheckBounds to have one form where the check is inclusive and one where it isn&apos;t (i.e. &lt; versus &lt;=).  Some kind of enum that indicates whether it&apos;s Inclusive/BelowEqual or Exclusive/Below.  Please add printInternal functions for any new enums, particularly since you&apos;ll need to dump it as part of WASMCheckBoundsValue::dump().

Also, what are you planning on doing about representing this in Air?

You have these options:

1) Patch opcode, and a Air::Special subclass that does what you want.
2) A Custom opcode, and code in AirCustom.h|cpp that does what you want.
3) A normal opcode, and code in MacroAssembler that does what you want.

I think that (2) will be the most natural.  You&apos;ll want two Custom opcodes: WASMCheckBoundsBelow and WASMCheckBoundsBelowEqual, and they will basically be magical versions of jit.branch(Below or BelowEqual, ...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239410</commentid>
    <comment_count>2</comment_count>
      <attachid>291378</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 12:07:10 -0700</bug_when>
    <thetext>Created attachment 291378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239417</commentid>
    <comment_count>3</comment_count>
      <attachid>291378</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 12:12:37 -0700</bug_when>
    <thetext>Comment on attachment 291378
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        B3 needs a special WASMBoundsCheck Opcode

You should probably rename the title.

&gt; Source/JavaScriptCore/B3WasmBoundsCheckValue.cpp:50
&gt; +        comma, &quot;generator = &quot;, RawPointer(m_generator.get()), &quot;, sizeRegister = &quot;, m_pinnedGPR,

I don&apos;t understand why you have a generator.

&gt; Source/JavaScriptCore/B3WasmBoundsCheckValue.cpp:67
&gt; +CCallHelpers::Jump WasmBoundsCheckValue::generate(Air::Inst&amp; inst, CCallHelpers&amp; jit, Air::GenerationContext&amp; context)
&gt; +{
&gt; +    CCallHelpers::Jump outOfBounds = Air::Inst(Air::Branch64, this, Air::Arg::relCond(CCallHelpers::AboveOrEqual), inst.args[0], inst.args[1]).generate(jit, context);
&gt; +
&gt; +    context.latePaths.append(createSharedTask&lt;Air::GenerationContext::LatePathFunction&gt;(
&gt; +        [=] (CCallHelpers&amp; jit, Air::GenerationContext&amp;) {
&gt; +            outOfBounds.link(&amp;jit);
&gt; +            m_generator-&gt;run(jit, m_pinnedGPR, m_offset);
&gt; +        }));
&gt; +
&gt; +    // We said we were not a terminal.
&gt; +    return CCallHelpers::Jump();
&gt; +}

This doesn&apos;t make sense.  Why is this here?

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2497
&gt; +                    append(Add64, Arg::bigImm(value-&gt;offset()), temp);

There is no such instruction.  You&apos;re going to have to come up with some other way of handling this case.

&gt; Source/JavaScriptCore/b3/B3WasmBoundsCheckValue.h:66
&gt; +    void setGenerator(RefPtr&lt;WasmBoundsCheckGenerator&gt; generator)
&gt; +    {
&gt; +        m_generator = generator;
&gt; +    }
&gt; +
&gt; +    template&lt;typename Functor&gt;
&gt; +    void setGenerator(const Functor&amp; functor)
&gt; +    {
&gt; +        m_generator = createSharedTask&lt;WasmBoundsCheckGeneratorFunction&gt;(functor);
&gt; +    }

This seems like totally unnecessary indirection.

&gt; Source/JavaScriptCore/b3/air/AirCustom.h:310
&gt; +        return static_cast&lt;WasmBoundsCheckValue*&gt;(inst.origin)-&gt;generate(inst, jit, context);

This should do the code generation directly.  You don&apos;t get anything by having a generator callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239418</commentid>
    <comment_count>4</comment_count>
      <attachid>291382</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 12:12:44 -0700</bug_when>
    <thetext>Created attachment 291382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239442</commentid>
    <comment_count>5</comment_count>
      <attachid>291382</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 13:06:06 -0700</bug_when>
    <thetext>Comment on attachment 291382
Patch

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

&gt; Source/JavaScriptCore/B3WasmBoundsCheckValue.cpp:62
&gt; +            m_generator-&gt;run(jit, m_pinnedGPR, m_offset);

Hmmm.  I missed this part last time around.

If you want to keep the generator then I recommend inlining WasmBoundsCheckValue into WasmBoundsCheckCustom.

I don&apos;t think we want the generator, though.  Isn&apos;t it always going to be the same code?  I think it&apos;s better to just have B3 know what that code is!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239445</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 13:06:35 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 291382 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291382&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/B3WasmBoundsCheckValue.cpp:62
&gt; &gt; +            m_generator-&gt;run(jit, m_pinnedGPR, m_offset);
&gt; 
&gt; Hmmm.  I missed this part last time around.
&gt; 
&gt; If you want to keep the generator then I recommend inlining
&gt; WasmBoundsCheckValue into WasmBoundsCheckCustom.

*WasmBoundsCheckValue::generate into WasmBoundsCheckCustom::generate.

&gt; 
&gt; I don&apos;t think we want the generator, though.  Isn&apos;t it always going to be
&gt; the same code?  I think it&apos;s better to just have B3 know what that code is!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239456</commentid>
    <comment_count>7</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 13:31:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 291382 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=291382&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/B3WasmBoundsCheckValue.cpp:62
&gt; &gt; &gt; +            m_generator-&gt;run(jit, m_pinnedGPR, m_offset);
&gt; &gt; 
&gt; &gt; Hmmm.  I missed this part last time around.
&gt; &gt; 
&gt; &gt; If you want to keep the generator then I recommend inlining
&gt; &gt; WasmBoundsCheckValue into WasmBoundsCheckCustom.
&gt; 
&gt; *WasmBoundsCheckValue::generate into WasmBoundsCheckCustom::generate.
&gt; 
&gt; &gt; 
&gt; &gt; I don&apos;t think we want the generator, though.  Isn&apos;t it always going to be
&gt; &gt; the same code?  I think it&apos;s better to just have B3 know what that code is!

Fair enough, I deleted WasmBoundsCheckValue::generate and inlined the old code into WasmBoundsCheckCustom::generate. I still think we want to have a generator at some point since I think it&apos;s better to minimize the amount of wasm specific code in B3. In the mean time I can delete the generator since it&apos;s trivial to restore later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239458</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 13:32:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Comment on attachment 291382 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=291382&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/B3WasmBoundsCheckValue.cpp:62
&gt; &gt; &gt; &gt; +            m_generator-&gt;run(jit, m_pinnedGPR, m_offset);
&gt; &gt; &gt; 
&gt; &gt; &gt; Hmmm.  I missed this part last time around.
&gt; &gt; &gt; 
&gt; &gt; &gt; If you want to keep the generator then I recommend inlining
&gt; &gt; &gt; WasmBoundsCheckValue into WasmBoundsCheckCustom.
&gt; &gt; 
&gt; &gt; *WasmBoundsCheckValue::generate into WasmBoundsCheckCustom::generate.
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think we want the generator, though.  Isn&apos;t it always going to be
&gt; &gt; &gt; the same code?  I think it&apos;s better to just have B3 know what that code is!
&gt; 
&gt; Fair enough, I deleted WasmBoundsCheckValue::generate and inlined the old
&gt; code into WasmBoundsCheckCustom::generate. I still think we want to have a
&gt; generator at some point since I think it&apos;s better to minimize the amount of
&gt; wasm specific code in B3. In the mean time I can delete the generator since
&gt; it&apos;s trivial to restore later.

What about Procedure::setWasmBoundsCheckGenerator(things)?

Patchpoints need many different generators within the same procedure.  This doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239460</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 13:33:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; Comment on attachment 291382 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=291382&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/B3WasmBoundsCheckValue.cpp:62
&gt; &gt; &gt; &gt; &gt; +            m_generator-&gt;run(jit, m_pinnedGPR, m_offset);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Hmmm.  I missed this part last time around.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; If you want to keep the generator then I recommend inlining
&gt; &gt; &gt; &gt; WasmBoundsCheckValue into WasmBoundsCheckCustom.
&gt; &gt; &gt; 
&gt; &gt; &gt; *WasmBoundsCheckValue::generate into WasmBoundsCheckCustom::generate.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I don&apos;t think we want the generator, though.  Isn&apos;t it always going to be
&gt; &gt; &gt; &gt; the same code?  I think it&apos;s better to just have B3 know what that code is!
&gt; &gt; 
&gt; &gt; Fair enough, I deleted WasmBoundsCheckValue::generate and inlined the old
&gt; &gt; code into WasmBoundsCheckCustom::generate. I still think we want to have a
&gt; &gt; generator at some point since I think it&apos;s better to minimize the amount of
&gt; &gt; wasm specific code in B3. In the mean time I can delete the generator since
&gt; &gt; it&apos;s trivial to restore later.
&gt; 
&gt; What about Procedure::setWasmBoundsCheckGenerator(things)?
&gt; 
&gt; Patchpoints need many different generators within the same procedure.  This
&gt; doesn&apos;t.

Yeah, I think I can get behind that such an API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239509</commentid>
    <comment_count>10</comment_count>
      <attachid>291397</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 14:44:28 -0700</bug_when>
    <thetext>Created attachment 291397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239517</commentid>
    <comment_count>11</comment_count>
      <attachid>291398</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 14:55:44 -0700</bug_when>
    <thetext>Created attachment 291398
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239523</commentid>
    <comment_count>12</comment_count>
      <attachid>291398</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 14:59:58 -0700</bug_when>
    <thetext>Comment on attachment 291398
rebased

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

&gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:893
&gt; +# This is a special wasm opcode that branches to a trap handler. Like Patch this takes a special that
&gt; +# must be the first operand.

Is this really true?  Only Patch should take a Special.  It would be weird if we changed that assumption.

&gt; Source/JavaScriptCore/b3/testb3.cpp:15206
&gt; +    RUN(testWasmBoundsCheck(10000));

Add a test for ridonculous offset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239561</commentid>
    <comment_count>13</comment_count>
      <attachid>291413</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 16:23:10 -0700</bug_when>
    <thetext>Created attachment 291413
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239564</commentid>
    <comment_count>14</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 16:26:30 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 291398 [details]
&gt; rebased
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291398&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirOpcode.opcodes:893
&gt; &gt; +# This is a special wasm opcode that branches to a trap handler. Like Patch this takes a special that
&gt; &gt; +# must be the first operand.
&gt; 

Whoops, I meant to change that comment. I changed it to:

# This is a special wasm opcode that branches to a trap handler. This uses the generator located to Air::Code
# to produce the side-exit code.

&gt; Is this really true?  Only Patch should take a Special.  It would be weird
&gt; if we changed that assumption.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/testb3.cpp:15206
&gt; &gt; +    RUN(testWasmBoundsCheck(10000));
&gt; 
&gt; Add a test for ridonculous offset.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239573</commentid>
    <comment_count>15</comment_count>
      <attachid>291418</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 16:50:57 -0700</bug_when>
    <thetext>Created attachment 291418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239574</commentid>
    <comment_count>16</comment_count>
      <attachid>291419</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 16:51:54 -0700</bug_when>
    <thetext>Created attachment 291419
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239614</commentid>
    <comment_count>17</comment_count>
      <attachid>291433</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-12 18:11:18 -0700</bug_when>
    <thetext>Created attachment 291433
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239618</commentid>
    <comment_count>18</comment_count>
      <attachid>291433</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 18:45:30 -0700</bug_when>
    <thetext>Comment on attachment 291433
Patch for landing

Clearing flags on attachment: 291433

Committed r207266: &lt;http://trac.webkit.org/changeset/207266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239619</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 18:45:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291378</attachid>
            <date>2016-10-12 12:07:10 -0700</date>
            <delta_ts>2016-10-12 12:12:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163246-20161012120346.patch</filename>
            <type>text/plain</type>
            <size>27526</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWEwMDgzZDQ0NTg2M2I2M2FjZGFjYWJmYjQwYzRjY2M4Y2JlNjJhLi4zY2YwNjliNDk1ZGE5MTRh
ZjE2MmUzYzAzNmMzNmE1YjNhM2UwMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV0FTTUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6
OlZhbHVlIHN1YmNsYXNzCisgICAgICAgIGZvciBpdCwgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGZvdXIgcGllY2VzIG9mCisgICAgICAgIGluZm9ybWF0
aW9uLiBUaGUgZmlyc3QgaXMgdGhlIEludDMyIHBvaW50ZXIgdmFsdWUgdXNlZCB0byBiZSB1c2Vk
IGJ5IHRoZSBMb2FkLgorICAgICAgICBOZXh0IGlzIHRoZSBwaW5uZWQgcmVnaXN0ZXIuIFRoZSBw
aW5uZWQgcmVnaXN0ZXIgbXVzdCBiZSBwaW5uZWQgYnkgY2FsbGluZworICAgICAgICBwcm9jLnNl
dFBpbm5lZCgpIHByaW9yIHRvIGNvbXBpbGluZyB0aGUgUHJvY2VkdXJlLiBMYXN0bHksIHRoZSBX
YXNtQm91bmRzQ2hlY2tWYWx1ZQorICAgICAgICB0YWtlcyBhbiBvZmZzZXQuIFRoZSBXYXNtQm91
bmRzQ2hlY2tWYWx1ZSBpcyB3aWxsIHRoZW4gZW1pdCBjb2RlIHRoYXQgc2lkZS1leGl0cworICAg
ICAgICBpZiB0aGUgSW50NjQgc3VtIG9mIHRoZSBvZmZzZXQgYW5kIHBvaW50ZXIgaXMgZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBpbgorICAgICAgICB0aGUgcGlubmVkUmVnaXN0
ZXIuIEluIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgQ3VzdG9tIG9wY29kZSwgV2FzbUJvdW5k
c0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGFkZCBXYXNtQm91bmRz
Q2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUgcmVkdW5kYW50CisgICAgICAgIGJvdW5k
cyBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNhbiByZW1vdmUgYW55IFdhc21Cb3VuZHND
aGVjayBkb21pbmF0ZWQgYnkKKyAgICAgICAgYW5vdGhlciBXYXNtQm91bmRzQ2hlY2sgd2l0aCB0
aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFuZCBhIGxhcmdlciBvZmZzZXQuCisKKyAg
ICAgICAgKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21Cb3VuZHNDaGVja1ZhbHVlKToKKyAgICAg
ICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVlOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZSk6
CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6ZHVtcE1ldGEpOgorICAg
ICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmdlbmVyYXRlKToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIz
L0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omlt
bSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAg
KiBiMy9CM09wY29kZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6CisgICAgICAg
ICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0cyk6Cisg
ICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6CisgICAgICAgICogYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVj
a1ZhbHVlOjphY2NlcHRzKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVl
OjpzZXRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6
OmdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6cGlu
bmVkR1BSKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVlOjpvZmZzZXQp
OgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpXYXNtQm91bmRzQ2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKiBiMy9haXIv
QWlyQ3VzdG9tLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3Rv
bTo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1
c3RvbTo6aXNWYWxpZEZvcm1TdGF0aWMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91
bmRzQ2hlY2tDdXN0b206OmFkbWl0c1N0YWNrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2Fz
bUJvdW5kc0NoZWNrQ3VzdG9tOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
V2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Z2VuZXJhdGUpOgorICAg
ICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6
OkIzOjpydW4pOgorCiAyMDE2LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtET01KSVRdIEltcGxlbWVudCBOb2RlIGFjY2Vzc29ycyBpbiBE
T01KSVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YWZlODA5OWUyODAwYTNjYmU4ZTEyZWNjZTkwMTU2ZDRmYTYxNmJm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0IzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNXYXNt
Qm91bmRzQ2hlY2tWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFp
ckdlbmVyYXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiQWlySW5zdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKKworV2FzbUJvdW5kc0NoZWNrVmFsdWU6On5XYXNtQm91bmRz
Q2hlY2tWYWx1ZSgpCit7Cit9CisKK1dhc21Cb3VuZHNDaGVja1ZhbHVlOjpXYXNtQm91bmRzQ2hl
Y2tWYWx1ZShPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcHRyLCBHUFJSZWcgcGlubmVkR1BSLCB1bnNp
Z25lZCBvZmZzZXQpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBXYXNtQm91bmRzQ2hlY2ss
IG9yaWdpbiwgcHRyKQorICAgICwgbV9waW5uZWRHUFIocGlubmVkR1BSKQorICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQoreworfQorCit2b2lkIFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpkdW1wTWV0YShD
b21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5w
cmludCgKKyAgICAgICAgY29tbWEsICJnZW5lcmF0b3IgPSAiLCBSYXdQb2ludGVyKG1fZ2VuZXJh
dG9yLmdldCgpKSwgIiwgc2l6ZVJlZ2lzdGVyID0gIiwgbV9waW5uZWRHUFIsCisgICAgICAgICIs
IG9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKK30KKworCitDQ2FsbEhlbHBlcnM6Okp1bXAgV2FzbUJv
dW5kc0NoZWNrVmFsdWU6OmdlbmVyYXRlKEFpcjo6SW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBq
aXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIG91dE9mQm91bmRzID0gQWlyOjpJbnN0KEFpcjo6QnJhbmNoNjQsIHRoaXMsIEFpcjo6
QXJnOjpyZWxDb25kKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsKSwgaW5zdC5hcmdzWzBdLCBp
bnN0LmFyZ3NbMV0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisKKyAgICBjb250ZXh0LmxhdGVQ
YXRocy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazxBaXI6OkdlbmVyYXRpb25Db250ZXh0OjpMYXRl
UGF0aEZ1bmN0aW9uPigKKyAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgQWlyOjpHZW5l
cmF0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgICAgIG91dE9mQm91bmRzLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICBtX2dlbmVyYXRvci0+cnVuKGppdCwgbV9waW5uZWRHUFIsIG1fb2Zmc2V0KTsK
KyAgICAgICAgfSkpOworCisgICAgLy8gV2Ugc2FpZCB3ZSB3ZXJlIG5vdCBhIHRlcm1pbmFsLgor
ICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXAoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBlNTcyN2Y1NDE1MmM2OGNiOWY3MWRjMGU1NmY4NjgyY2JlY2QyY2NkLi4zMjUy
ZGYyNTI0NWEzOTM0YWIxZjQ5ZDBiZTgwMWYxN2YwNDI2MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTIwNSw2ICsxMjA1LDggQEAKIAkJNTJDOTUyQjkxOUEyOEExQzAwNjlC
Mzg2IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkM5NTJCODE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNw
cCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2
MDBBRjdBMEIgLyogV0FTTVBsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkYxRDVDRTk1MDAwQUY3QTBC
IC8qIFdBU01QbGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgKi87IH07CisJ
CTUzNDFGQzcwMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzZGMURB
QzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLzsgfTsKKwkJNTM0
MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CiAJCTUzNDg2QkI3MUMx
Nzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVk
QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTUzNDg2QkJCMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQkExQzE4RTg0NTAwRjZG
M0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgKi87IH07CiAJCTUzNDkwMjg1MUM3Mjc2QjcwMDEyQkNC
OCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVz
dC5jcHAgKi87IH07CkBAIC0zNDM4LDYgKzM0NDAsOCBAQAogCQk1MkM5NTJCODE5QTI4QTFDMDA2
OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9maWxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJDMUQ1Q0U2NzYwMEFG
N0EwQiAvKiBXQVNNUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNN
UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCRTFENUNFOTUwMDBB
RjdBMEIgLyogV0FTTVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0FTTVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQxRkM2RjFE
QUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYz
QUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThF
ODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDg1Myw2ICs0ODU3LDggQEAKIAkJCQkwRjMzOEUxODFCRjI4NkVBMDAxM0M4OEYg
LyogQjNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEJBMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCAqLywKIAkJCQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIg
LyogQjNCb3R0b21Qcm92aWRlci5oICovLAorCQkJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAv
KiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQk1MzQxRkM3MTFEQUMzNDNDMDBF
N0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJCTBGNkI4QURFMUM0RUZF
MTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJMEY2QjhBREYx
QzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCiAJCQkJREM5QTBD
MUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uY3BwICovLApAQCAtNzY0Myw2
ICs3NjQ5LDcgQEAKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNjcxNTNBMjFFMjAw
MEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkI5MjFEMTZEMDJGMzAwMDU1QTVEQiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAv
KiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2ODJGQjMxOUJDQjM2
NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5
RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTM1Nyw2ICs5MzY0LDcgQEAKIAkJCQkyQUFDRTYzQzE4Q0E1QTAzMDBFRDAxOTEg
LyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJGMTVB
OERDRTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkFERkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3RENBMDA4NUYzQzYgLyog
R2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMzE4QjAxNzYzMDA1
Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUx
MDdFQzBFNzAwMTNFN0IyIC8qIEdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZjZlODRlM2RmNzZmNjM1
NmQzYmM0YWEwOWRjNWZhMDNjMjI5MTdjZi4uZmRhZDllODEwODE0MGQ0YmQxNzcyMTdhY2UxNGIw
NzI2NmNiNzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
QEAgLTU1MSwxMyArNTUxLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBsb2FkUHJvbWlz
ZShsb2FkVmFsdWUsIExvYWQpOwogICAgIH0KIAorICAgIEFyZyBpbW0oaW50NjRfdCBpbnRWYWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmc6OmltbShpbnRWYWx1ZSk7CisgICAgICAgIHJldHVybiBBcmco
KTsKKyAgICB9CisKICAgICBBcmcgaW1tKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS0+aGFzSW50KCkpIHsKLSAgICAgICAgICAgIGludDY0X3QgaW50VmFsdWUgPSB2YWx1
ZS0+YXNJbnQoKTsKLSAgICAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbW0oaW50VmFsdWUpOwotICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZS0+aGFzSW50KCkpCisgICAgICAgICAgICByZXR1cm4gaW1tKHZh
bHVlLT5hc0ludCgpKTsKICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgIH0KIApAQCAtMjQ3OSw2
ICsyNDgzLDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazogeworICAgICAgICAgICAgV2FzbUJvdW5kc0No
ZWNrVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCk7CisK
KyAgICAgICAgICAgIFZhbHVlKiBwdHIgPSB2YWx1ZS0+Y2hpbGQoMCk7CisKKyAgICAgICAgICAg
IEFyZyB0ZW1wID0gbV9jb2RlLm5ld1RtcChBcmc6OkdQKTsKKyAgICAgICAgICAgIGFwcGVuZChJ
bnN0KE1vdmUzMiwgdmFsdWUsIHRtcChwdHIpLCB0ZW1wKSk7CisgICAgICAgICAgICBpZiAodmFs
dWUtPm9mZnNldCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGltbSh2YWx1ZS0+b2Zmc2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBhcHBlbmQoQWRkNjQsIGltbSh2YWx1ZS0+b2Zmc2V0KCkp
LCB0ZW1wKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZChBZGQ2NCwgQXJnOjpiaWdJbW0odmFsdWUtPm9mZnNldCgpKSwgdGVtcCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBhcHBlbmQoSW5zdChXYXNtQm91bmRzQ2hlY2ssIHZhbHVlLCB0ZW1w
LCBBcmcodmFsdWUtPnBpbm5lZEdQUigpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBVcHNpbG9uOiB7CiAgICAgICAgICAgICBWYWx1ZSogdmFsdWUg
PSBtX3ZhbHVlLT5jaGlsZCgwKTsKICAgICAgICAgICAgIGFwcGVuZCgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IGYwM2E5NGNlZGVmZmU4NGYyOWM0Njk1ZWYzMzg5MTY2
MjE1YjUzOTYuLmUxMDBkM2IzOWZmNTJjMjIyODJjY2Q3Y2Q1OTk3MWVjYWMyNDc3ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtMjcyLDYgKzI3Miw5IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2Ug
Q2hlY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2hlY2siKTsKICAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICBvdXQucHJpbnQoIldhc21Cb3VuZHNDaGVj
ayIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICBvdXQucHJp
bnQoIlVwc2lsb24iKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuaAppbmRleCBjOTc3MzQ3NzBkYzk1MjVjOGJmY2I2ODdhZTUwMWVmNWMyOWE3MGM0Li5lMzJl
OWQzMDIwZGY2Mzk2ZDA2MDI5YzdmYTU1MjMzOTg5ODBlMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaApAQCAtMjA5LDYgKzIwOSwxMiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3Qg
ewogICAgIC8vIFdhcm1BbnkuIEl0IHdpbGwgbm90IGhhdmUgYW4gb3V0cHV0IGNvbnN0cmFpbnQu
CiAgICAgQ2hlY2ssCiAKKyAgICAvLyBTcGVjaWFsIFdhc20gb3Bjb2RlIHRoYXQgdGFrZXMgYSBJ
bnQzMiwgYSBzcGVjaWFsIHBpbm5lZCBncHIgYW5kIGFuIG9mZnNldC4gVGhpcyBub2RlIGV4aXN0
cworICAgIC8vIHRvIGFsbG93IHVzIHRvIENTRSBXYXNtQm91bmRzQ2hlY2tzIGlmIGJvdGggdXNl
IHRoZSBzYW1lIHBvaW50ZXIgYW5kIG9uZSBkb21pbmF0ZXMgdGhlIG90aGVyLgorICAgIC8vIFdp
dGhvdXQgc29tZSBzdWNoIG5vZGUgQjMgd291bGQgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IGFib3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB3YXNtCisgICAgLy8gdG8gYmUgYWJsZSB0byBw
ZXJmb3JtIHN1Y2ggb3B0aW1pemF0aW9ucy4KKyAgICBXYXNtQm91bmRzQ2hlY2ssCisKICAgICAv
LyBTU0Egc3VwcG9ydCwgaW4gdGhlIHN0eWxlIG9mIERGRyBTU0EuCiAgICAgVXBzaWxvbiwgLy8g
VGhpcyB1c2VzIHRoZSBVcHNpbG9uVmFsdWUgY2xhc3MuCiAgICAgUGhpLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCmluZGV4IGFmYzAwYTJlYWI1MGNmYjNiZWYxZTE4NDI1
OTcwMjUxNDQ2MmIxZjYuLmFhNjQxNTk4YTIxOTdlMWY5MmMzZDYwNDk3NzdiYmQwODljNzRiOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVk
ZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5o
IgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZS5oIgogI2luY2x1ZGUgIkIz
VmFyaWFibGVWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQxMyw2ICs0MTUsMTMgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5hczxTdGFja21hcFZhbHVlPigp
LT5jb25zdHJhaW5lZENoaWxkKDApLnJlcCgpID09IFZhbHVlUmVwOjpXYXJtQW55LCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2ttYXAodmFsdWUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5jb2RlKCkuaXNQaW5uZWQodmFsdWUtPmFz
PFdhc21Cb3VuZHNDaGVja1ZhbHVlPigpLT5waW5uZWRHUFIoKSksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVl
PigpLT5nZW5lcmF0b3IoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVXBzaWxvbjoKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IGEwODdmNTFlY2UxZGQy
NWUxYzIyNDM2YTgzNzAzNzM3ODcwMzg0MGQuLjViNDExOTg2MDZjNTY3YTc3ZDViZTg0MTJjNWE2
ZWQ5NGU5Zjg3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKQEAgLTYxNiw2
ICs2MTYsMTAgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDaGVj
azoKICAgICAgICAgcmVzdWx0ID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CisgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBVcHNpbG9uOgogICAgIGNhc2UgU2V0OgogICAgICAgICByZXN1bHQud3Jp
dGVzTG9jYWxTdGF0ZSA9IHRydWU7CkBAIC04MDksNiArODEzLDcgQEAgVHlwZSBWYWx1ZTo6dHlw
ZUZvcihLaW5kIGtpbmQsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCiAg
ICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBPb3BzOgogICAgIGNhc2UgRW50cnlTd2l0Y2g6Cisg
ICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CiAgICAgICAgIHJldHVybiBWb2lkOwogICAgIGNhc2Ug
U2VsZWN0OgogICAgICAgICBBU1NFUlQoc2Vjb25kQ2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI4YWVj
NGE1NjhlNjlhY2M2N2I0ZjVkNGRmM2Q3ZWQ4NDk5MmUzNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgKQEAgLTAsMCAr
MSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNWYWx1
ZS5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKKworbmFtZXNwYWNlIEFpciB7CitzdHJ1Y3QgSW5zdDsKK3N0cnVjdCBHZW5lcmF0
aW9uQ29udGV4dDsKK30KKwordHlwZWRlZiB2b2lkIFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1
bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZywgdW5zaWduZWQpOwordHlwZWRlZiBTaGFyZWRU
YXNrPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uPiBXYXNtQm91bmRzQ2hlY2tHZW5l
cmF0b3I7CisKK2NsYXNzIFdhc21Cb3VuZHNDaGVja1ZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIH5XYXNtQm91bmRzQ2hl
Y2tWYWx1ZSgpOworCisgICAgdm9pZCBzZXRHZW5lcmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVj
a0dlbmVyYXRvcj4gZ2VuZXJhdG9yKQorICAgIHsKKyAgICAgICAgbV9nZW5lcmF0b3IgPSBnZW5l
cmF0b3I7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lk
IHNldEdlbmVyYXRvcihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgbV9n
ZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0
aW9uPihmdW5jdG9yKTsKKyAgICB9CisKKyAgICBSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJh
dG9yPiBnZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvcjsgfQorCisgICAgR1BS
UmVnIHBpbm5lZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkR1BSOyB9CisgICAgdW5zaWdu
ZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKworICAgIC8vIFdlIHB1dCB0
aGUgZ2VuZXJhdGUgaGVyZSByYXRoZXIgdGhhbiBpbiBhIGZ1bmN0aW9uIHNpbmNlIHdlIGRvbid0
IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIGFzIGZhciBhcyBBaXIgaXMKKyAgICAvLyBjb25jZXJu
ZWQuCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRlKEFpcjo6SW5zdCYsIENDYWxsSGVs
cGVycyYsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgV2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luLCBWYWx1ZSogcHRyLCBHUFJSZWcgcGlu
bmVkR1BSLCB1bnNpZ25lZCBvZmZzZXQpOworCisgICAgUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dl
bmVyYXRvcj4gbV9nZW5lcmF0b3I7CisgICAgR1BSUmVnIG1fcGlubmVkR1BSOworICAgIHVuc2ln
bmVkIG1fb2Zmc2V0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDdXN0b20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20u
Y3BwCmluZGV4IGY2ZWI1ZjM4ZDFmYTBkY2Y2YTVkNGU2ZTlhMGYwNWY2YTNiNmMyZDQuLjJhMmRm
MmZiZGM3Yjk3NGFhMjNkODlkNzI0YjgyZDBjNTQ4MDIyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKQEAgLTE3OCw2ICsxNzgsMTcgQEAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIFNodWZmbGVDdXN0b206OmdlbmVyYXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVy
cyYsIEdlbmVyYXRpb24KICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wKCk7CiB9CiAKK2Jv
b2wgV2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjppc1ZhbGlkRm9ybShJbnN0JiBpbnN0KQoreworICAg
IGlmIChpbnN0LmFyZ3Muc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWluc3QuYXJnc1swXS5pc1RtcCgpICYmICFpbnN0LmFyZ3NbMF0uaXNTb21lSW1tKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBpbnN0LmFyZ3NbMV0uaXNSZWcoKTsK
K30KKworCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
dXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKaW5kZXgg
OGI5MGZlZjBlMjA3ZjdlNWQ2ZGQ3NDNkNTFjNjA0ZDg4MjhkMjU1Ni4uYjJiZGNlNGJlYWQyNjYy
YzEyZmJjMmQ2ZjY2NzlhOGVkNzA2NmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckN1c3RvbS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWlySW5zdC5oIgogI2lu
Y2x1ZGUgIkFpclNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKQEAgLTI3Myw2ICsyNzQsNDMgQEAgc3RydWN0IEVudHJ5U3dpdGNo
Q3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8RW50cnlTd2l0Y2hDdXN0b20+IHsKICAg
ICB9CiB9OwogCitzdHJ1Y3QgV2FzbUJvdW5kc0NoZWNrQ3VzdG9tIDogcHVibGljIENvbW1vbkN1
c3RvbUJhc2U8V2FzbUJvdW5kc0NoZWNrQ3VzdG9tPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KKyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IEZ1bmMm
IGZ1bmN0b3IpCisgICAgeworICAgICAgICBmdW5jdG9yKGluc3QuYXJnc1swXSwgQXJnOjpVc2Us
IEFyZzo6R1AsIEFyZzo6V2lkdGg2NCk7CisgICAgICAgIGZ1bmN0b3IoaW5zdC5hcmdzWzFdLCBB
cmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpXaWR0aDY0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEZvcm1TdGF0aWMo
QXJndW1lbnRzLi4uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHN0YXRpYyBib29sIGlzVmFsaWRGb3JtKEluc3QmKTsKKworICAgIHN0YXRpYyBib29sIGFkbWl0
c1N0YWNrKEluc3QmLCB1bnNpZ25lZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1Rlcm1pbmFsKEluc3QmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBoYXNOb25BcmdOb25D
b250cm9sRWZmZWN0cyhJbnN0JikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHN0YXRpYyBDQ2FsbEhlbHBlcnM6Okp1bXAgZ2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0Nh
bGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdhc21Cb3VuZHNDaGVja1ZhbHVlKj4oaW5zdC5vcmlnaW4p
LT5nZW5lcmF0ZShpbnN0LCBqaXQsIGNvbnRleHQpOworICAgIH0KK307CisKIH0gfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCA4Y2MzODU0
MjgzYWY1OGQxOTU2NTEzZTQ3ZTBiYmU3ZjUwN2VkYjllLi5lMDE4ZmI5OWRjMTc3MTUyNjAwYTA3
MTcwOTQ4ZmRkYWIzZjNiMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg4NCw0ICs4ODQsNyBAQCBjdXN0b20gUGF0Y2gKIGN1c3Rv
bSBDQ2FsbAogY3VzdG9tIENvbGRDQ2FsbAogCisjIFRoaXMgaXMgYSBzcGVjaWFsIHdhc20gb3Bj
b2RlIHRoYXQgYnJhbmNoZXMgdG8gYSB0cmFwIGhhbmRsZXIuIExpa2UgUGF0Y2ggdGhpcyB0YWtl
cyBhIHNwZWNpYWwgdGhhdAorIyBtdXN0IGJlIHRoZSBmaXJzdCBvcGVyYW5kLgorY3VzdG9tIFdh
c21Cb3VuZHNDaGVjawogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IDRiNDdi
MTM5MzBiMzk4ZGEwZTE2MjhkNzNiNWJmMzk3NDEwZjY3YTYuLjRkNDQ1ZjY5ZDc0MTRlYjUyZGNh
NTg4NTA0NjdjYTNjNWRlY2Y2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBA
IC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiQjNWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkIzVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVkZSAiQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1
ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCkBAIC0xMzM4MSw2ICsxMzM4Miwz
NiBAQCB2b2lkIHRlc3RQaW5SZWdpc3RlcnMoKQogICAgIGdvKGZhbHNlKTsKIH0KIAordm9pZCB0
ZXN0V2FzbUJvdW5kc0NoZWNrKHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHByb2Mu
cGluUmVnaXN0ZXIocGlubmVkKTsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGxlZnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaWYgKHBvaW50
ZXJUeXBlKCkgIT0gSW50MzIpCisgICAgICAgIGxlZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgbGVmdCk7CisgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUq
IGNoZWNrID0gcm9vdC0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgbGVmdCwgcGlubmVkLCBvZmZzZXQpOworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgYWN0dWFsT2Zm
c2V0KSB7CisgICAgICAgIENIRUNLX0VRKHBpbm5lZEdQUiwgcGlubmVkKTsKKyAgICAgICAgQ0hF
Q0tfRVEoYWN0dWFsT2Zmc2V0LCBvZmZzZXQpOworCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFs
d2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2
ZSBjYWxsZWUKKyAgICAgICAgLy8gc2F2ZXMuCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOwor
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMHg0Mik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMSwgMiArIG9mZnNldCksIDB4
NDIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMywgMiArIG9mZnNldCks
IDQyKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIDIsIDIgKyBvZmZzZXQp
LCA0Mik7Cit9CisKIC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9w
dGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lOTElORSBkb3VibGUgemVybygpCiB7CkBAIC0x
NDgwMCw3ICsxNDgzMSwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVO
KHRlc3RTb21lRWFybHlSZWdpc3RlcigpKTsKICAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5h
bFJldHVyblZhbHVlKHRydWUpKTsKICAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVy
blZhbHVlKGZhbHNlKSk7Ci0gICAgCisKKyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7
CisgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAwKSk7CisgICAgUlVOKHRlc3RXYXNtQm91
bmRzQ2hlY2soMTAwMDApKTsKKwogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAgIFJVTih0ZXN0
QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0
MzIsIEFpcjo6QXJnOjpUbXApKTsKICAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNp
b24oSWRlbnRpdHksIEludDY0LCAweGZmLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6OlRt
cCkpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cgYi9XZWJzaXRl
cy93ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA0YzcwZjc5NWRkNzM2NTliMGYwYzliYjgxYzll
M2JmZjZjNjZmODRiLi5kZTNjYWVjZGUyMTEyMmIzZDVjMTQxMWZjNjQ3Y2UyNzc4NjY0ZDdlIDEw
MDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZworKysgYi9XZWJzaXRlcy93
ZWJraXQub3JnL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTEyICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEIzIG5lZWRzIGEgc3Bl
Y2lhbCBXYXNtQm91bmRzQ2hlY2sgT3Bjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIGRvY3MgZm9yIHRoZSBuZXcgV2FzbUJvdW5k
c0NoZWNrIG9wY29kZS4KKworICAgICAgICAqIGRvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2Vu
dGF0aW9uLmh0bWw6CisKIDIwMTYtMTAtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBjb250cmlidXRvcnMuanNvbiB0byBhIGZsYXQg
bGlzdApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0
ZS1yZXByZXNlbnRhdGlvbi5odG1sIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVy
bWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCmluZGV4IGJkYzU3YTEwNDk3YjMxZmQ5Mjc2MDdm
YzY1OTBhYjQ3ZjMyNDc1ZGYuLjQ1ZjYzM2RhM2FkMzRmMTgyNDVlODA0MzUyYTRmY2UwMmIyYTNm
ZTggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUt
cmVwcmVzZW50YXRpb24uaHRtbAorKysgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50
ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxo
ZWFkPgogICA8dGl0bGU+QjMgSW50ZXJtZWRpYXRlIFJlcHJlc2VudGF0aW9uPC90aXRsZT4KLSAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic3R5bGUuY3NzIj4K
K24gIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN0eWxlLmNz
cyI+CiA8L2hlYWQ+CiA8Ym9keT4KICAgPGRpdiBpZD0iYmFubmVyIj4KQEAgLTUzNyw2ICs1Mzcs
MTQgQEAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICB0byBhbiBpbnN0cnVjdGlv
biB0aGF0IGJyYW5jaGVzIHRvIHRoZSBleGl0IGlmIEBhICZndDs9IEBiIG9yIGlmIGVpdGhlciBA
YSBvciBAYiBhcmUKICAgICAgICAgTmFOLiAgTXVzdCB1c2UgdGhlIENoZWNrVmFsdWUgY2xhc3Mu
PC9kZD4KIAorICAgICAgPGR0PlZvaWQgV2FzbUJvdW5kc0NoZWNrKEludDMyLCBwaW5uZWRHUFIs
IG9mZnNldCk8L2R0PgorICAgICAgPGRkPlNwZWNpYWwgV2FzbSBvcGNvZGUuIFRoaXMgYnJhbmNo
ZXMgb24gdGhlIGZpcnN0IGNoaWxkLiBJZiB0aGUgZmlyc3QgY2hpbGQgcGx1cyB0aGUgb2Zmc2V0
CisgICAgICAgIHByb2R1Y2VzIGEgSW50NjQgbGVzcyB0aGFuIHRvIHRoZSBwaW5uZWRHUFIgdGhp
cyBmYWxscyB0aHJvdWdoLiBPdGhlcndpc2UsIGl0IGJyYW5jaGVzIHRvCisgICAgICAgIHRoZSBl
eGl0IHBhdGggZ2VuZXJhdGVkIGJ5IHRoZSBwYXNzZWQgZ2VuZXJhdG9yLiBUaGUgR1JQUmVnIHBh
c3NlZCBpbiBwaW5uZWRHUFIgbXVzdCBhbHNvIGJlCisgICAgICAgIG1hcmtlZCBhcyBwaW5uZWQg
YnkgY2FsbGluZyB0aGUgUHJvY2VkdXJlJ3MgcGlubmluZyBBUEkuIEIzIGFzc3VtZXMgdGhlIFdh
c21Cb3VuZHNDaGVjayB3aWxsCisgICAgICAgIHNpZGUtZXhpdCB3aGVuIHRoZSBpdCBicmFuY2hl
cywgc28gdGhlIGdlbmVyYXRvciBtdXN0IGRvIHNvbWUga2luZCBvZiB0ZXJtaW5hdGlvbi4gSW4g
V2FzbQorICAgICAgICB0aGlzIGlzIHVzZWQgdG8gdHJhcCBhbmQgdW53aW5kIGJhY2sgdG8gSlMu
IE11c3QgdXNlIHRoZSBXYXNtQm91bmRzQ2hlY2tWYWx1ZSBjbGFzcy48L2RkPgorCiAgICAgICA8
ZHQ+Vm9pZCBVcHNpbG9uKFQsIF5waGkpPC9kdD4KICAgICAgIDxkZD5CMyB1c2VzIFNTQS4gIFNT
QSByZXF1aXJlcyB0aGF0IGVhY2ggdmFyaWFibGUgZ2V0cyBhc3NpZ25lZCB0byBvbmx5IG9uY2Ug
YW55d2hlcmUgaW4KICAgICAgICAgdGhlIHByb2NlZHVyZS4gIEJ1dCB0aGF0IGRvZXNuJ3Qgd29y
ayBpZiB5b3UgaGF2ZSBhIHZhcmlhYmxlIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291382</attachid>
            <date>2016-10-12 12:12:44 -0700</date>
            <delta_ts>2016-10-12 14:44:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163246-20161012120919.patch</filename>
            <type>text/plain</type>
            <size>27295</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWEwMDgzZDQ0NTg2M2I2M2FjZGFjYWJmYjQwYzRjY2M4Y2JlNjJhLi4zY2YwNjliNDk1ZGE5MTRh
ZjE2MmUzYzAzNmMzNmE1YjNhM2UwMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV0FTTUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6
OlZhbHVlIHN1YmNsYXNzCisgICAgICAgIGZvciBpdCwgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGZvdXIgcGllY2VzIG9mCisgICAgICAgIGluZm9ybWF0
aW9uLiBUaGUgZmlyc3QgaXMgdGhlIEludDMyIHBvaW50ZXIgdmFsdWUgdXNlZCB0byBiZSB1c2Vk
IGJ5IHRoZSBMb2FkLgorICAgICAgICBOZXh0IGlzIHRoZSBwaW5uZWQgcmVnaXN0ZXIuIFRoZSBw
aW5uZWQgcmVnaXN0ZXIgbXVzdCBiZSBwaW5uZWQgYnkgY2FsbGluZworICAgICAgICBwcm9jLnNl
dFBpbm5lZCgpIHByaW9yIHRvIGNvbXBpbGluZyB0aGUgUHJvY2VkdXJlLiBMYXN0bHksIHRoZSBX
YXNtQm91bmRzQ2hlY2tWYWx1ZQorICAgICAgICB0YWtlcyBhbiBvZmZzZXQuIFRoZSBXYXNtQm91
bmRzQ2hlY2tWYWx1ZSBpcyB3aWxsIHRoZW4gZW1pdCBjb2RlIHRoYXQgc2lkZS1leGl0cworICAg
ICAgICBpZiB0aGUgSW50NjQgc3VtIG9mIHRoZSBvZmZzZXQgYW5kIHBvaW50ZXIgaXMgZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBpbgorICAgICAgICB0aGUgcGlubmVkUmVnaXN0
ZXIuIEluIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgQ3VzdG9tIG9wY29kZSwgV2FzbUJvdW5k
c0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGFkZCBXYXNtQm91bmRz
Q2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUgcmVkdW5kYW50CisgICAgICAgIGJvdW5k
cyBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNhbiByZW1vdmUgYW55IFdhc21Cb3VuZHND
aGVjayBkb21pbmF0ZWQgYnkKKyAgICAgICAgYW5vdGhlciBXYXNtQm91bmRzQ2hlY2sgd2l0aCB0
aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFuZCBhIGxhcmdlciBvZmZzZXQuCisKKyAg
ICAgICAgKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21Cb3VuZHNDaGVja1ZhbHVlKToKKyAgICAg
ICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVlOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZSk6
CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6ZHVtcE1ldGEpOgorICAg
ICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmdlbmVyYXRlKToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIz
L0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omlt
bSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAg
KiBiMy9CM09wY29kZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6CisgICAgICAg
ICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0cyk6Cisg
ICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6CisgICAgICAgICogYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVj
a1ZhbHVlOjphY2NlcHRzKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVl
OjpzZXRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6
OmdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6cGlu
bmVkR1BSKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVlOjpvZmZzZXQp
OgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpXYXNtQm91bmRzQ2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKiBiMy9haXIv
QWlyQ3VzdG9tLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3Rv
bTo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1
c3RvbTo6aXNWYWxpZEZvcm1TdGF0aWMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91
bmRzQ2hlY2tDdXN0b206OmFkbWl0c1N0YWNrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2Fz
bUJvdW5kc0NoZWNrQ3VzdG9tOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
V2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Z2VuZXJhdGUpOgorICAg
ICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6
OkIzOjpydW4pOgorCiAyMDE2LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtET01KSVRdIEltcGxlbWVudCBOb2RlIGFjY2Vzc29ycyBpbiBE
T01KSVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YWZlODA5OWUyODAwYTNjYmU4ZTEyZWNjZTkwMTU2ZDRmYTYxNmJm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0IzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNXYXNt
Qm91bmRzQ2hlY2tWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFp
ckdlbmVyYXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiQWlySW5zdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKKworV2FzbUJvdW5kc0NoZWNrVmFsdWU6On5XYXNtQm91bmRz
Q2hlY2tWYWx1ZSgpCit7Cit9CisKK1dhc21Cb3VuZHNDaGVja1ZhbHVlOjpXYXNtQm91bmRzQ2hl
Y2tWYWx1ZShPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcHRyLCBHUFJSZWcgcGlubmVkR1BSLCB1bnNp
Z25lZCBvZmZzZXQpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBXYXNtQm91bmRzQ2hlY2ss
IG9yaWdpbiwgcHRyKQorICAgICwgbV9waW5uZWRHUFIocGlubmVkR1BSKQorICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQoreworfQorCit2b2lkIFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpkdW1wTWV0YShD
b21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5w
cmludCgKKyAgICAgICAgY29tbWEsICJnZW5lcmF0b3IgPSAiLCBSYXdQb2ludGVyKG1fZ2VuZXJh
dG9yLmdldCgpKSwgIiwgc2l6ZVJlZ2lzdGVyID0gIiwgbV9waW5uZWRHUFIsCisgICAgICAgICIs
IG9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKK30KKworCitDQ2FsbEhlbHBlcnM6Okp1bXAgV2FzbUJv
dW5kc0NoZWNrVmFsdWU6OmdlbmVyYXRlKEFpcjo6SW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBq
aXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIG91dE9mQm91bmRzID0gQWlyOjpJbnN0KEFpcjo6QnJhbmNoNjQsIHRoaXMsIEFpcjo6
QXJnOjpyZWxDb25kKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsKSwgaW5zdC5hcmdzWzBdLCBp
bnN0LmFyZ3NbMV0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisKKyAgICBjb250ZXh0LmxhdGVQ
YXRocy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazxBaXI6OkdlbmVyYXRpb25Db250ZXh0OjpMYXRl
UGF0aEZ1bmN0aW9uPigKKyAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgQWlyOjpHZW5l
cmF0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgICAgIG91dE9mQm91bmRzLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICBtX2dlbmVyYXRvci0+cnVuKGppdCwgbV9waW5uZWRHUFIsIG1fb2Zmc2V0KTsK
KyAgICAgICAgfSkpOworCisgICAgLy8gV2Ugc2FpZCB3ZSB3ZXJlIG5vdCBhIHRlcm1pbmFsLgor
ICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXAoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBlNTcyN2Y1NDE1MmM2OGNiOWY3MWRjMGU1NmY4NjgyY2JlY2QyY2NkLi4zMjUy
ZGYyNTI0NWEzOTM0YWIxZjQ5ZDBiZTgwMWYxN2YwNDI2MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTIwNSw2ICsxMjA1LDggQEAKIAkJNTJDOTUyQjkxOUEyOEExQzAwNjlC
Mzg2IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkM5NTJCODE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNw
cCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2
MDBBRjdBMEIgLyogV0FTTVBsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkYxRDVDRTk1MDAwQUY3QTBC
IC8qIFdBU01QbGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgKi87IH07CisJ
CTUzNDFGQzcwMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzZGMURB
QzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLzsgfTsKKwkJNTM0
MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CiAJCTUzNDg2QkI3MUMx
Nzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVk
QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTUzNDg2QkJCMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQkExQzE4RTg0NTAwRjZG
M0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgKi87IH07CiAJCTUzNDkwMjg1MUM3Mjc2QjcwMDEyQkNC
OCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVz
dC5jcHAgKi87IH07CkBAIC0zNDM4LDYgKzM0NDAsOCBAQAogCQk1MkM5NTJCODE5QTI4QTFDMDA2
OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9maWxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJDMUQ1Q0U2NzYwMEFG
N0EwQiAvKiBXQVNNUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNN
UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCRTFENUNFOTUwMDBB
RjdBMEIgLyogV0FTTVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0FTTVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQxRkM2RjFE
QUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYz
QUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThF
ODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDg1Myw2ICs0ODU3LDggQEAKIAkJCQkwRjMzOEUxODFCRjI4NkVBMDAxM0M4OEYg
LyogQjNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEJBMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCAqLywKIAkJCQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIg
LyogQjNCb3R0b21Qcm92aWRlci5oICovLAorCQkJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAv
KiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQk1MzQxRkM3MTFEQUMzNDNDMDBF
N0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJCTBGNkI4QURFMUM0RUZF
MTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJMEY2QjhBREYx
QzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCiAJCQkJREM5QTBD
MUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uY3BwICovLApAQCAtNzY0Myw2
ICs3NjQ5LDcgQEAKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNjcxNTNBMjFFMjAw
MEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkI5MjFEMTZEMDJGMzAwMDU1QTVEQiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAv
KiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2ODJGQjMxOUJDQjM2
NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5
RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTM1Nyw2ICs5MzY0LDcgQEAKIAkJCQkyQUFDRTYzQzE4Q0E1QTAzMDBFRDAxOTEg
LyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJGMTVB
OERDRTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkFERkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3RENBMDA4NUYzQzYgLyog
R2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMzE4QjAxNzYzMDA1
Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUx
MDdFQzBFNzAwMTNFN0IyIC8qIEdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZjZlODRlM2RmNzZmNjM1
NmQzYmM0YWEwOWRjNWZhMDNjMjI5MTdjZi4uOGI2ZDI1OTc3M2MzODI2MmVhZGY0YzQyMGFmYjg0
MzZlMThjMWU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
QEAgLTU1MSwxMyArNTUxLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBsb2FkUHJvbWlz
ZShsb2FkVmFsdWUsIExvYWQpOwogICAgIH0KIAorICAgIEFyZyBpbW0oaW50NjRfdCBpbnRWYWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmc6OmltbShpbnRWYWx1ZSk7CisgICAgICAgIHJldHVybiBBcmco
KTsKKyAgICB9CisKICAgICBBcmcgaW1tKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS0+aGFzSW50KCkpIHsKLSAgICAgICAgICAgIGludDY0X3QgaW50VmFsdWUgPSB2YWx1
ZS0+YXNJbnQoKTsKLSAgICAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbW0oaW50VmFsdWUpOwotICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZS0+aGFzSW50KCkpCisgICAgICAgICAgICByZXR1cm4gaW1tKHZh
bHVlLT5hc0ludCgpKTsKICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgIH0KIApAQCAtMjQ3OSw2
ICsyNDgzLDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEIzOjpXYXNtQm91bmRzQ2hlY2s6IHsKKyAgICAgICAgICAgIFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVlPigp
OworCisgICAgICAgICAgICBWYWx1ZSogcHRyID0gdmFsdWUtPmNoaWxkKDApOworCisgICAgICAg
ICAgICBBcmcgdGVtcCA9IG1fY29kZS5uZXdUbXAoQXJnOjpHUCk7CisgICAgICAgICAgICBhcHBl
bmQoSW5zdChNb3ZlMzIsIHZhbHVlLCB0bXAocHRyKSwgdGVtcCkpOworICAgICAgICAgICAgaWYg
KHZhbHVlLT5vZmZzZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbW0odmFsdWUtPm9mZnNl
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBpbW0odmFsdWUtPm9mZnNl
dCgpKSwgdGVtcCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBh
cHBlbmQoQWRkNjQsIEFyZzo6YmlnSW1tKHZhbHVlLT5vZmZzZXQoKSksIHRlbXApOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYXBwZW5kKEluc3QoQWlyOjpXYXNtQm91bmRzQ2hlY2ssIHZh
bHVlLCB0ZW1wLCBBcmcodmFsdWUtPnBpbm5lZEdQUigpKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKICAgICAgICAgY2FzZSBVcHNpbG9uOiB7CiAgICAgICAgICAgICBWYWx1
ZSogdmFsdWUgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKICAgICAgICAgICAgIGFwcGVuZCgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IGYwM2E5NGNlZGVmZmU4NGYyOWM0Njk1
ZWYzMzg5MTY2MjE1YjUzOTYuLmUxMDBkM2IzOWZmNTJjMjIyODJjY2Q3Y2Q1OTk3MWVjYWMyNDc3
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtMjcyLDYgKzI3Miw5
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQog
ICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2hlY2siKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICBvdXQucHJpbnQoIldhc21C
b3VuZHNDaGVjayIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBVcHNpbG9uOgogICAgICAg
ICBvdXQucHJpbnQoIlVwc2lsb24iKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaAppbmRleCBjOTc3MzQ3NzBkYzk1MjVjOGJmY2I2ODdhZTUwMWVmNWMyOWE3
MGM0Li5lMzJlOWQzMDIwZGY2Mzk2ZDA2MDI5YzdmYTU1MjMzOTg5ODBlMjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtMjA5LDYgKzIwOSwxMiBAQCBlbnVtIE9wY29kZSA6
IGludDE2X3QgewogICAgIC8vIFdhcm1BbnkuIEl0IHdpbGwgbm90IGhhdmUgYW4gb3V0cHV0IGNv
bnN0cmFpbnQuCiAgICAgQ2hlY2ssCiAKKyAgICAvLyBTcGVjaWFsIFdhc20gb3Bjb2RlIHRoYXQg
dGFrZXMgYSBJbnQzMiwgYSBzcGVjaWFsIHBpbm5lZCBncHIgYW5kIGFuIG9mZnNldC4gVGhpcyBu
b2RlIGV4aXN0cworICAgIC8vIHRvIGFsbG93IHVzIHRvIENTRSBXYXNtQm91bmRzQ2hlY2tzIGlm
IGJvdGggdXNlIHRoZSBzYW1lIHBvaW50ZXIgYW5kIG9uZSBkb21pbmF0ZXMgdGhlIG90aGVyLgor
ICAgIC8vIFdpdGhvdXQgc29tZSBzdWNoIG5vZGUgQjMgd291bGQgbm90IGhhdmUgZW5vdWdoIGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB3YXNtCisgICAgLy8gdG8gYmUg
YWJsZSB0byBwZXJmb3JtIHN1Y2ggb3B0aW1pemF0aW9ucy4KKyAgICBXYXNtQm91bmRzQ2hlY2ss
CisKICAgICAvLyBTU0Egc3VwcG9ydCwgaW4gdGhlIHN0eWxlIG9mIERGRyBTU0EuCiAgICAgVXBz
aWxvbiwgLy8gVGhpcyB1c2VzIHRoZSBVcHNpbG9uVmFsdWUgY2xhc3MuCiAgICAgUGhpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCmluZGV4IGFmYzAwYTJlYWI1MGNmYjNi
ZWYxZTE4NDI1OTcwMjUxNDQ2MmIxZjYuLmFhNjQxNTk4YTIxOTdlMWY5MmMzZDYwNDk3NzdiYmQw
ODljNzRiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJDb2RlLmgi
CiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgpAQCAtNDAsNiArNDEsNyBAQAog
I2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZS5oIgogI2lu
Y2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQxMyw2ICs0MTUs
MTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5hczxTdGFja21h
cFZhbHVlPigpLT5jb25zdHJhaW5lZENoaWxkKDApLnJlcCgpID09IFZhbHVlUmVwOjpXYXJtQW55
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2ttYXAodmFs
dWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXYXNtQm91bmRz
Q2hlY2s6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFC
aXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
Pm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5jb2RlKCkuaXNQaW5uZWQo
dmFsdWUtPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVlPigpLT5waW5uZWRHUFIoKSksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmFzPFdhc21Cb3VuZHND
aGVja1ZhbHVlPigpLT5nZW5lcmF0b3IoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVXBzaWxvbjoKICAgICAgICAgICAgICAgICBW
QUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0
ICIsICp2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IGEwODdm
NTFlY2UxZGQyNWUxYzIyNDM2YTgzNzAzNzM3ODcwMzg0MGQuLjViNDExOTg2MDZjNTY3YTc3ZDVi
ZTg0MTJjNWE2ZWQ5NGU5Zjg3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAK
QEAgLTYxNiw2ICs2MTYsMTAgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAg
Y2FzZSBDaGVjazoKICAgICAgICAgcmVzdWx0ID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CisgICAgICAgIHJlc3VsdC5yZWFk
c1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBVcHNpbG9uOgogICAgIGNhc2UgU2V0OgogICAgICAgICBy
ZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CkBAIC04MDksNiArODEzLDcgQEAgVHlwZSBW
YWx1ZTo6dHlwZUZvcihLaW5kIGtpbmQsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25k
Q2hpbGQpCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBPb3BzOgogICAgIGNhc2UgRW50cnlT
d2l0Y2g6CisgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CiAgICAgICAgIHJldHVybiBWb2lkOwog
ICAgIGNhc2UgU2VsZWN0OgogICAgICAgICBBU1NFUlQoc2Vjb25kQ2hpbGQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjI4YWVjNGE1NjhlNjlhY2M2N2I0ZjVkNGRmM2Q3ZWQ4NDk5MmUzNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgK
QEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVk
ZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKKworbmFtZXNwYWNlIEFpciB7CitzdHJ1Y3QgSW5zdDsKK3N0cnVj
dCBHZW5lcmF0aW9uQ29udGV4dDsKK30KKwordHlwZWRlZiB2b2lkIFdhc21Cb3VuZHNDaGVja0dl
bmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZywgdW5zaWduZWQpOwordHlwZWRl
ZiBTaGFyZWRUYXNrPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uPiBXYXNtQm91bmRz
Q2hlY2tHZW5lcmF0b3I7CisKK2NsYXNzIFdhc21Cb3VuZHNDaGVja1ZhbHVlIDogcHVibGljIFZh
bHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIFdhc21Cb3Vu
ZHNDaGVjazoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIH5XYXNt
Qm91bmRzQ2hlY2tWYWx1ZSgpOworCisgICAgdm9pZCBzZXRHZW5lcmF0b3IoUmVmUHRyPFdhc21C
b3VuZHNDaGVja0dlbmVyYXRvcj4gZ2VuZXJhdG9yKQorICAgIHsKKyAgICAgICAgbV9nZW5lcmF0
b3IgPSBnZW5lcmF0b3I7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
KyAgICB2b2lkIHNldEdlbmVyYXRvcihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAg
ICAgICAgbV9nZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPFdhc21Cb3VuZHNDaGVja0dlbmVy
YXRvckZ1bmN0aW9uPihmdW5jdG9yKTsKKyAgICB9CisKKyAgICBSZWZQdHI8V2FzbUJvdW5kc0No
ZWNrR2VuZXJhdG9yPiBnZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvcjsgfQor
CisgICAgR1BSUmVnIHBpbm5lZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkR1BSOyB9Cisg
ICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKworICAgIC8v
IFdlIHB1dCB0aGUgZ2VuZXJhdGUgaGVyZSByYXRoZXIgdGhhbiBpbiBhIGZ1bmN0aW9uIHNpbmNl
IHdlIGRvbid0IGRvIGFueXRoaW5nIGludGVyZXN0aW5nIGFzIGZhciBhcyBBaXIgaXMKKyAgICAv
LyBjb25jZXJuZWQuCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRlKEFpcjo6SW5zdCYs
IENDYWxsSGVscGVycyYsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmKTsKKworcHJvdGVjdGVkOgor
ICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgV2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luLCBWYWx1ZSogcHRyLCBH
UFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCBvZmZzZXQpOworCisgICAgUmVmUHRyPFdhc21Cb3Vu
ZHNDaGVja0dlbmVyYXRvcj4gbV9nZW5lcmF0b3I7CisgICAgR1BSUmVnIG1fcGlubmVkR1BSOwor
ICAgIHVuc2lnbmVkIG1fb2Zmc2V0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisK
KyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDdXN0b20uY3BwCmluZGV4IGY2ZWI1ZjM4ZDFmYTBkY2Y2YTVkNGU2ZTlhMGYwNWY2YTNiNmMy
ZDQuLjJhMmRmMmZiZGM3Yjk3NGFhMjNkODlkNzI0YjgyZDBjNTQ4MDIyY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKQEAgLTE3OCw2ICsxNzgsMTcgQEAg
Q0NhbGxIZWxwZXJzOjpKdW1wIFNodWZmbGVDdXN0b206OmdlbmVyYXRlKEluc3QmIGluc3QsIEND
YWxsSGVscGVycyYsIEdlbmVyYXRpb24KICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wKCk7
CiB9CiAKK2Jvb2wgV2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjppc1ZhbGlkRm9ybShJbnN0JiBpbnN0
KQoreworICAgIGlmIChpbnN0LmFyZ3Muc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWluc3QuYXJnc1swXS5pc1RtcCgpICYmICFpbnN0LmFyZ3NbMF0uaXNTb21l
SW1tKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBpbnN0LmFyZ3NbMV0u
aXNSZWcoKTsKK30KKworCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9t
LmgKaW5kZXggOGI5MGZlZjBlMjA3ZjdlNWQ2ZGQ3NDNkNTFjNjA0ZDg4MjhkMjU1Ni4uYjJiZGNl
NGJlYWQyNjYyYzEyZmJjMmQ2ZjY2NzlhOGVkNzA2NmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckN1c3RvbS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWlySW5z
dC5oIgogI2luY2x1ZGUgIkFpclNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKQEAgLTI3Myw2ICsyNzQsNDMgQEAgc3RydWN0IEVu
dHJ5U3dpdGNoQ3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8RW50cnlTd2l0Y2hDdXN0
b20+IHsKICAgICB9CiB9OwogCitzdHJ1Y3QgV2FzbUJvdW5kc0NoZWNrQ3VzdG9tIDogcHVibGlj
IENvbW1vbkN1c3RvbUJhc2U8V2FzbUJvdW5kc0NoZWNrQ3VzdG9tPiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KKyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNv
bnN0IEZ1bmMmIGZ1bmN0b3IpCisgICAgeworICAgICAgICBmdW5jdG9yKGluc3QuYXJnc1swXSwg
QXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6V2lkdGg2NCk7CisgICAgICAgIGZ1bmN0b3IoaW5zdC5h
cmdzWzFdLCBBcmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpXaWR0aDY0KTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEZv
cm1TdGF0aWMoQXJndW1lbnRzLi4uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGlzVmFsaWRGb3JtKEluc3QmKTsKKworICAgIHN0YXRpYyBi
b29sIGFkbWl0c1N0YWNrKEluc3QmLCB1bnNpZ25lZCkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1Rlcm1pbmFsKEluc3QmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBoYXNO
b25BcmdOb25Db250cm9sRWZmZWN0cyhJbnN0JikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHN0YXRpYyBDQ2FsbEhlbHBlcnM6Okp1bXAgZ2VuZXJhdGUoSW5zdCYg
aW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdhc21Cb3VuZHNDaGVja1ZhbHVlKj4oaW5z
dC5vcmlnaW4pLT5nZW5lcmF0ZShpbnN0LCBqaXQsIGNvbnRleHQpOworICAgIH0KK307CisKIH0g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRl
eCA4Y2MzODU0MjgzYWY1OGQxOTU2NTEzZTQ3ZTBiYmU3ZjUwN2VkYjllLi5lMDE4ZmI5OWRjMTc3
MTUyNjAwYTA3MTcwOTQ4ZmRkYWIzZjNiMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg4NCw0ICs4ODQsNyBAQCBjdXN0b20gUGF0
Y2gKIGN1c3RvbSBDQ2FsbAogY3VzdG9tIENvbGRDQ2FsbAogCisjIFRoaXMgaXMgYSBzcGVjaWFs
IHdhc20gb3Bjb2RlIHRoYXQgYnJhbmNoZXMgdG8gYSB0cmFwIGhhbmRsZXIuIExpa2UgUGF0Y2gg
dGhpcyB0YWtlcyBhIHNwZWNpYWwgdGhhdAorIyBtdXN0IGJlIHRoZSBmaXJzdCBvcGVyYW5kLgor
Y3VzdG9tIFdhc21Cb3VuZHNDaGVjawogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmlu
ZGV4IDRiNDdiMTM5MzBiMzk4ZGEwZTE2MjhkNzNiNWJmMzk3NDEwZjY3YTYuLjRkNDQ1ZjY5ZDc0
MTRlYjUyZGNhNTg4NTA0NjdjYTNjNWRlY2Y2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiQjNWYWxpZGF0ZS5oIgogI2luY2x1
ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5o
IgogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCkBAIC0xMzM4MSw2
ICsxMzM4MiwzNiBAQCB2b2lkIHRlc3RQaW5SZWdpc3RlcnMoKQogICAgIGdvKGZhbHNlKTsKIH0K
IAordm9pZCB0ZXN0V2FzbUJvdW5kc0NoZWNrKHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOwor
ICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKKworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGxlZnQgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
aWYgKHBvaW50ZXJUeXBlKCkgIT0gSW50MzIpCisgICAgICAgIGxlZnQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgbGVmdCk7CisgICAgV2FzbUJvdW5kc0No
ZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbGVmdCwgcGlubmVkLCBvZmZzZXQpOworICAgIGNoZWNrLT5zZXRHZW5l
cmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQg
YWN0dWFsT2Zmc2V0KSB7CisgICAgICAgIENIRUNLX0VRKHBpbm5lZEdQUiwgcGlubmVkKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoYWN0dWFsT2Zmc2V0LCBvZmZzZXQpOworCisgICAgICAgIC8vIFRoaXMg
c2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQg
bmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgLy8gc2F2ZXMuCisgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOwor
ICAgIH0pOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMHg0Mik7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMSwgMiArIG9m
ZnNldCksIDB4NDIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMywgMiAr
IG9mZnNldCksIDQyKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIDIsIDIg
KyBvZmZzZXQpLCA0Mik7Cit9CisKIC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3Qg
dHJ5IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lOTElORSBkb3VibGUgemVybygp
CiB7CkBAIC0xNDgwMCw3ICsxNDgzMSwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIp
CiAgICAgUlVOKHRlc3RTb21lRWFybHlSZWdpc3RlcigpKTsKICAgICBSVU4odGVzdFBhdGNocG9p
bnRUZXJtaW5hbFJldHVyblZhbHVlKHRydWUpKTsKICAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJt
aW5hbFJldHVyblZhbHVlKGZhbHNlKSk7Ci0gICAgCisKKyAgICBSVU4odGVzdFdhc21Cb3VuZHND
aGVjaygwKSk7CisgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAwKSk7CisgICAgUlVOKHRl
c3RXYXNtQm91bmRzQ2hlY2soMTAwMDApKTsKKwogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAg
IFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpC
cmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKICAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRB
bmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAweGZmLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWly
OjpBcmc6OlRtcCkpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cg
Yi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA0YzcwZjc5NWRkNzM2NTliMGYw
YzliYjgxYzllM2JmZjZjNjZmODRiLi5kZTNjYWVjZGUyMTEyMmIzZDVjMTQxMWZjNjQ3Y2UyNzc4
NjY0ZDdlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZworKysgYi9X
ZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTEy
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEIzIG5l
ZWRzIGEgc3BlY2lhbCBXYXNtQm91bmRzQ2hlY2sgT3Bjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIGRvY3MgZm9yIHRoZSBuZXcg
V2FzbUJvdW5kc0NoZWNrIG9wY29kZS4KKworICAgICAgICAqIGRvY3MvYjMvaW50ZXJtZWRpYXRl
LXJlcHJlc2VudGF0aW9uLmh0bWw6CisKIDIwMTYtMTAtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBjb250cmlidXRvcnMuanNvbiB0
byBhIGZsYXQgbGlzdApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2lu
dGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2Nz
L2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCmluZGV4IGJkYzU3YTEwNDk3YjMx
ZmQ5Mjc2MDdmYzY1OTBhYjQ3ZjMyNDc1ZGYuLmJiNWM4Y2Q4NmVjZDA4YjExZDIwMWYyYWMzNWMx
Y2NjMzQzNzhmYTQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRl
cm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAorKysgYi9XZWJzaXRlcy93ZWJraXQub3JnL2Rv
Y3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKQEAgLTUzNyw2ICs1MzcsMTQg
QEAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICB0byBhbiBpbnN0cnVjdGlvbiB0
aGF0IGJyYW5jaGVzIHRvIHRoZSBleGl0IGlmIEBhICZndDs9IEBiIG9yIGlmIGVpdGhlciBAYSBv
ciBAYiBhcmUKICAgICAgICAgTmFOLiAgTXVzdCB1c2UgdGhlIENoZWNrVmFsdWUgY2xhc3MuPC9k
ZD4KIAorICAgICAgPGR0PlZvaWQgV2FzbUJvdW5kc0NoZWNrKEludDMyLCBwaW5uZWRHUFIsIG9m
ZnNldCk8L2R0PgorICAgICAgPGRkPlNwZWNpYWwgV2FzbSBvcGNvZGUuIFRoaXMgYnJhbmNoZXMg
b24gdGhlIGZpcnN0IGNoaWxkLiBJZiB0aGUgZmlyc3QgY2hpbGQgcGx1cyB0aGUgb2Zmc2V0Cisg
ICAgICAgIHByb2R1Y2VzIGEgSW50NjQgbGVzcyB0aGFuIHRvIHRoZSBwaW5uZWRHUFIgdGhpcyBm
YWxscyB0aHJvdWdoLiBPdGhlcndpc2UsIGl0IGJyYW5jaGVzIHRvCisgICAgICAgIHRoZSBleGl0
IHBhdGggZ2VuZXJhdGVkIGJ5IHRoZSBwYXNzZWQgZ2VuZXJhdG9yLiBUaGUgR1JQUmVnIHBhc3Nl
ZCBpbiBwaW5uZWRHUFIgbXVzdCBhbHNvIGJlCisgICAgICAgIG1hcmtlZCBhcyBwaW5uZWQgYnkg
Y2FsbGluZyB0aGUgUHJvY2VkdXJlJ3MgcGlubmluZyBBUEkuIEIzIGFzc3VtZXMgdGhlIFdhc21C
b3VuZHNDaGVjayB3aWxsCisgICAgICAgIHNpZGUtZXhpdCB3aGVuIHRoZSBpdCBicmFuY2hlcywg
c28gdGhlIGdlbmVyYXRvciBtdXN0IGRvIHNvbWUga2luZCBvZiB0ZXJtaW5hdGlvbi4gSW4gV2Fz
bQorICAgICAgICB0aGlzIGlzIHVzZWQgdG8gdHJhcCBhbmQgdW53aW5kIGJhY2sgdG8gSlMuIE11
c3QgdXNlIHRoZSBXYXNtQm91bmRzQ2hlY2tWYWx1ZSBjbGFzcy48L2RkPgorCiAgICAgICA8ZHQ+
Vm9pZCBVcHNpbG9uKFQsIF5waGkpPC9kdD4KICAgICAgIDxkZD5CMyB1c2VzIFNTQS4gIFNTQSBy
ZXF1aXJlcyB0aGF0IGVhY2ggdmFyaWFibGUgZ2V0cyBhc3NpZ25lZCB0byBvbmx5IG9uY2UgYW55
d2hlcmUgaW4KICAgICAgICAgdGhlIHByb2NlZHVyZS4gIEJ1dCB0aGF0IGRvZXNuJ3Qgd29yayBp
ZiB5b3UgaGF2ZSBhIHZhcmlhYmxlIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291397</attachid>
            <date>2016-10-12 14:44:28 -0700</date>
            <delta_ts>2016-10-12 14:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163246-20161012144104.patch</filename>
            <type>text/plain</type>
            <size>30430</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWEwMDgzZDQ0NTg2M2I2M2FjZGFjYWJmYjQwYzRjY2M4Y2JlNjJhLi5hNTc1MzEzMDZhODM4MGVm
NGUyMzM2ZmI2MDFmZDNhMjM5OWI5NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV2FzbUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6
OlZhbHVlIHN1YmNsYXNzIGZvciBpdCwKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIHRocmVlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gVGhl
IGZpcnN0IGlzCisgICAgICAgIHRoZSBJbnQzMiBwb2ludGVyIHZhbHVlIHVzZWQgdG8gYmUgdXNl
ZCBieSB0aGUgTG9hZC4gIE5leHQgaXMgdGhlIHBpbm5lZCByZWdpc3Rlci4gVGhlCisgICAgICAg
IHBpbm5lZCByZWdpc3RlciBtdXN0IGJlIHBpbm5lZCBieSBjYWxsaW5nIHByb2Muc2V0UGlubmVk
KCkgcHJpb3IgdG8gY29tcGlsaW5nIHRoZQorICAgICAgICBQcm9jZWR1cmUuIExhc3RseSwgdGhl
IFdhc21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGFuIG9mZnNldC4gVGhlIFdhc21Cb3VuZHNDaGVj
a1ZhbHVlIGlzCisgICAgICAgIHdpbGwgdGhlbiBlbWl0IGNvZGUgdGhhdCBzaWRlLWV4aXRzIGlm
IHRoZSBJbnQ2NCBzdW0gb2YgdGhlIG9mZnNldCBhbmQgcG9pbnRlciBpcyBncmVhdGVyCisgICAg
ICAgIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIGluIHRoZSBwaW5uZWRSZWdpc3Rlci4gSW5z
dGVhZCBvZiB0YWtpbmcgYSBnZW5lcmF0b3IgZm9yIGVhY2gKKyAgICAgICAgdmFsdWUgbGlrZSBD
aGVjay9QYXRjaHBvaW50LCBXYXNtQm91bmRzQ2hlY2sgZ2V0cyBpdHMgZ2VuZXJhdG9yIGRpcmVj
dGx5IG9mZiBBaXI6OkNvZGUuIEluCisgICAgICAgIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcg
Q3VzdG9tIG9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUg
d2Ugc2hvdWxkIGFkZCBXYXNtQm91bmRzQ2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUg
cmVkdW5kYW50IGJvdW5kcworICAgICAgICBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNh
biByZW1vdmUgYW55IFdhc21Cb3VuZHNDaGVjayBkb21pbmF0ZWQgYnkgYW5vdGhlcgorICAgICAg
ICBXYXNtQm91bmRzQ2hlY2sgd2l0aCB0aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFu
ZCBhIGxhcmdlciBvZmZzZXQuCisKKyAgICAgICAgKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21C
b3VuZHNDaGVja1ZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVl
OjpXYXNtQm91bmRzQ2hlY2tWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hl
Y2tWYWx1ZTo6ZHVtcE1ldGEpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAg
KiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OnNldFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcik6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAg
ICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6c2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKToK
KyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjp0eXBlRm9yKToKKyAgICAgICAgKiBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmFjY2VwdHMpOgor
ICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OnBpbm5lZEdQUik6CisgICAg
ICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6b2Zmc2V0KToKKyAgICAgICAgKiBi
My9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpzZXRXYXNtQm91
bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjp3YXNtQm91
bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKToK
KyAgICAgICAgKiBiMy9haXIvQWlyQ3VzdG9tLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldh
c21Cb3VuZHNDaGVja0N1c3RvbTo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6aXNWYWxpZEZvcm1TdGF0aWMpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0b206OmFkbWl0c1N0YWNrKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjppc1Rlcm1pbmFsKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjpoYXNOb25BcmdOb25Db250
cm9sRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3Rv
bTo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAg
ICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVj
ayk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE2LTEwLTEwICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtET01KSVRdIEltcGxlbWVudCBO
b2RlIGFjY2Vzc29ycyBpbiBET01KSVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM1dh
c21Cb3VuZHNDaGVja1ZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlMWFkNTU1NWVlNWJlYjg5YTE4
YzU3MjUzMmJiMTU4MGY1NDNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJ
VCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1dhc21Cb3VuZHNDaGVja1Zh
bHVlOjp+V2FzbUJvdW5kc0NoZWNrVmFsdWUoKQoreworfQorCitXYXNtQm91bmRzQ2hlY2tWYWx1
ZTo6V2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHB0ciwgR1BSUmVn
IHBpbm5lZEdQUiwgdW5zaWduZWQgb2Zmc2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwg
V2FzbUJvdW5kc0NoZWNrLCBvcmlnaW4sIHB0cikKKyAgICAsIG1fcGlubmVkR1BSKHBpbm5lZEdQ
UikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKK30KKwordm9pZCBXYXNtQm91bmRzQ2hlY2tW
YWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJzaXplUmVnaXN0ZXIgPSAiLCBtX3Bpbm5lZEdQ
UiwgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGU1NzI3ZjU0MTUyYzY4Y2I5ZjcxZGMwZTU2Zjg2ODJjYmVjZDJjY2QuLjMyNTJkZjI1
MjQ1YTM5MzRhYjFmNDlkMGJlODAxZjE3ZjA0MjYzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjA1LDYgKzEyMDUsOCBAQAogCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYg
LyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICov
OyB9OwogCQk1MzEzNzRCRDFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJDMUQ1Q0U2NzYwMEFG
N0EwQiAvKiBXQVNNUGxhbi5oICovOyB9OwogCQk1MzEzNzRCRjFENUNFOTUwMDBBRjdBMEIgLyog
V0FTTVBsYW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLzsgfTsKKwkJNTM0
MUZDNzAxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNkYxREFDMzNF
NTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovOyB9OworCQk1MzQxRkM3
MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdF
NEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0ODZCQjcxQzE3OTVD
MzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0
ODZCQkIxQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYg
LyogSlNUeXBlZEFycmF5LmNwcCAqLzsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8q
IFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNw
cCAqLzsgfTsKQEAgLTM0MzgsNiArMzQ0MCw4IEBACiAJCTUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4
NiAvKiBUeXBlUHJvZmlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVByb2ZpbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBC
IC8qIFdBU01QbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01QbGFu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0Ew
QiAvKiBXQVNNUGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
QVNNUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNDFGQzZGMURBQzMz
RTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNt
Qm91bmRzQ2hlY2tWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dh
c21Cb3VuZHNDaGVja1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAv
KiBKU1R5cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBl
ZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUw
MEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0g
QVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00ODUzLDYgKzQ4NTcsOCBAQAogCQkJCTBGMzM4RTE4MUJGMjg2RUEwMDEzQzg4RiAvKiBC
M0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg0QkExQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCURDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBC
M0JvdHRvbVByb3ZpZGVyLmggKi8sCisJCQkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovLAorCQkJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRE
NyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi8sCiAJCQkJMEY2QjhBREUxQzRFRkUxNzAw
OTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmNwcCAqLywKIAkJCQkwRjZCOEFERjFDNEVG
RTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMuaCAqLywKIAkJCQlEQzlBMEMxQzFE
MkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5jcHAgKi8sCkBAIC03NjQzLDYgKzc2
NDksNyBAQAogCQkJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFFM0E2NzE1M0EyMUUyMDAwRjk0
NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
QjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlERDMxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R1NwZWN1bGF0aXZlSklULmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY4MkZCMzE5QkNCMzY0MDBG
QTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDAx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MzU3LDYgKzkzNjQsNyBAQAogCQkJCTJBQUNFNjNDMThDQTVBMDMwMEVEMDE5MSAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMkYxNUE4RENF
MDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyQURGQTI2MzE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUzNDFGQzcwMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRC
eUlkU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDMzMkMzMThCMDE3NjMwMDVGOTc5
QSAvKiBHZXRCeUlkVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg1NTEwN0VD
MEU3MDAxM0U3QjIgLyogR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBmNmU4NGUzZGY3NmY2MzU2ZDNi
YzRhYTA5ZGM1ZmEwM2MyMjkxN2NmLi40MmRjNzYxNTVkNjIyMDQ4NjViODhlMTc0YzgwZjM0YTdl
N2VkYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAt
NTUxLDEzICs1NTEsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGxvYWRQcm9taXNlKGxv
YWRWYWx1ZSwgTG9hZCk7CiAgICAgfQogCisgICAgQXJnIGltbShpbnQ2NF90IGludFZhbHVlKQor
ICAgIHsKKyAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEltbUZvcm0oaW50VmFsdWUpKQorICAgICAg
ICAgICAgcmV0dXJuIEFyZzo6aW1tKGludFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEFyZygpOwor
ICAgIH0KKwogICAgIEFyZyBpbW0oVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHZh
bHVlLT5oYXNJbnQoKSkgewotICAgICAgICAgICAgaW50NjRfdCBpbnRWYWx1ZSA9IHZhbHVlLT5h
c0ludCgpOwotICAgICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEltbUZvcm0oaW50VmFsdWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBBcmc6OmltbShpbnRWYWx1ZSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKHZhbHVlLT5oYXNJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBpbW0odmFsdWUt
PmFzSW50KCkpOwogICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgfQogCkBAIC0yNDc5LDYgKzI0
ODMsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgQjM6Oldhc21Cb3VuZHNDaGVjazogeworICAgICAgICAgICAgV2FzbUJvdW5kc0No
ZWNrVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCk7CisK
KyAgICAgICAgICAgIFZhbHVlKiBwdHIgPSB2YWx1ZS0+Y2hpbGQoMCk7CisKKyAgICAgICAgICAg
IEFyZyB0ZW1wID0gbV9jb2RlLm5ld1RtcChBcmc6OkdQKTsKKyAgICAgICAgICAgIGFwcGVuZChJ
bnN0KE1vdmUzMiwgdmFsdWUsIHRtcChwdHIpLCB0ZW1wKSk7CisgICAgICAgICAgICBpZiAodmFs
dWUtPm9mZnNldCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGltbSh2YWx1ZS0+b2Zmc2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBhcHBlbmQoQWRkNjQsIGltbSh2YWx1ZS0+b2Zmc2V0KCkp
LCB0ZW1wKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQXJn
IGJpZ0ltbSA9IG1fY29kZS5uZXdUbXAoQXJnOjpHUCk7CisgICAgICAgICAgICAgICAgICAgIGFw
cGVuZChNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1ZS0+b2Zmc2V0KCkpLCBiaWdJbW0pOworICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQoQWRkNjQsIGJpZ0ltbSwgdGVtcCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXBwZW5kKEluc3QoQWlyOjpXYXNtQm91
bmRzQ2hlY2ssIHZhbHVlLCB0ZW1wLCBBcmcodmFsdWUtPnBpbm5lZEdQUigpKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBVcHNpbG9uOiB7CiAgICAg
ICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKICAgICAgICAgICAgIGFw
cGVuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IGYwM2E5NGNlZGVm
ZmU4NGYyOWM0Njk1ZWYzMzg5MTY2MjE1YjUzOTYuLmUxMDBkM2IzOWZmNTJjMjIyODJjY2Q3Y2Q1
OTk3MWVjYWMyNDc3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09w
Y29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAt
MjcyLDYgKzI3Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNv
ZGUgb3Bjb2RlKQogICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2hlY2siKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICBvdXQu
cHJpbnQoIldhc21Cb3VuZHNDaGVjayIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBVcHNp
bG9uOgogICAgICAgICBvdXQucHJpbnQoIlVwc2lsb24iKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCBjOTc3MzQ3NzBkYzk1MjVjOGJmY2I2ODdh
ZTUwMWVmNWMyOWE3MGM0Li5lMzJlOWQzMDIwZGY2Mzk2ZDA2MDI5YzdmYTU1MjMzOTg5ODBlMjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtMjA5LDYgKzIwOSwxMiBAQCBl
bnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIC8vIFdhcm1BbnkuIEl0IHdpbGwgbm90IGhhdmUg
YW4gb3V0cHV0IGNvbnN0cmFpbnQuCiAgICAgQ2hlY2ssCiAKKyAgICAvLyBTcGVjaWFsIFdhc20g
b3Bjb2RlIHRoYXQgdGFrZXMgYSBJbnQzMiwgYSBzcGVjaWFsIHBpbm5lZCBncHIgYW5kIGFuIG9m
ZnNldC4gVGhpcyBub2RlIGV4aXN0cworICAgIC8vIHRvIGFsbG93IHVzIHRvIENTRSBXYXNtQm91
bmRzQ2hlY2tzIGlmIGJvdGggdXNlIHRoZSBzYW1lIHBvaW50ZXIgYW5kIG9uZSBkb21pbmF0ZXMg
dGhlIG90aGVyLgorICAgIC8vIFdpdGhvdXQgc29tZSBzdWNoIG5vZGUgQjMgd291bGQgbm90IGhh
dmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB3YXNtCisg
ICAgLy8gdG8gYmUgYWJsZSB0byBwZXJmb3JtIHN1Y2ggb3B0aW1pemF0aW9ucy4KKyAgICBXYXNt
Qm91bmRzQ2hlY2ssCisKICAgICAvLyBTU0Egc3VwcG9ydCwgaW4gdGhlIHN0eWxlIG9mIERGRyBT
U0EuCiAgICAgVXBzaWxvbiwgLy8gVGhpcyB1c2VzIHRoZSBVcHNpbG9uVmFsdWUgY2xhc3MuCiAg
ICAgUGhpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggMjlm
YzFjNDEzMzkwODYyNjJmMzdjOTM5NjkyOGIzNmQ5YTIwOWI0YS4uNmNkZTJmMTEwNmY3NGQwZjdh
Nzg5ODNkMWRmNGFlY2I5YWMzYzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuY3BwCkBAIC0zNDgsNiArMzQ4LDExIEBAIHZvaWQgUHJvY2VkdXJlOjpzZXRCbG9ja09y
ZGVySW1wbChWZWN0b3I8QmFzaWNCbG9jayo+JiBibG9ja3MpCiAgICAgfQogfQogCit2b2lkIFBy
b2NlZHVyZTo6c2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFJlZlB0cjxXYXNtQm91bmRzQ2hl
Y2tHZW5lcmF0b3I+IGdlbmVyYXRvcikKK3sKKyAgICBjb2RlKCkuc2V0V2FzbUJvdW5kc0NoZWNr
R2VuZXJhdG9yKGdlbmVyYXRvcik7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmgKaW5kZXggZDFjNzIyZjRhMmZhZThmYTA5OGQ3NmJlODYzYTU4ZTY1NzgyNWRiNy4uMjIzNjE0
NWVmNTUzZjFhOWQyNTMzMmQxYzk4OTI3MzI0ODIxNTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmgKQEAgLTU4LDYgKzU4LDkgQEAgY2xhc3MgVmFyaWFibGU7CiAKIG5h
bWVzcGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9CiAKK3R5cGVkZWYgdm9pZCBXYXNtQm91bmRzQ2hl
Y2tHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBHUFJSZWcsIHVuc2lnbmVkKTsKK3R5
cGVkZWYgU2hhcmVkVGFzazxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5jdGlvbj4gV2FzbUJv
dW5kc0NoZWNrR2VuZXJhdG9yOworCiAvLyBUaGlzIHJlcHJlc2VudHMgQjMncyB2aWV3IG9mIGEg
cGllY2Ugb2YgY29kZS4gTm90ZSB0aGF0IHRoaXMgb2JqZWN0IG11c3QgZXhpc3QgaW4gYSAxOjEK
IC8vIHJlbGF0aW9uc2hpcCB3aXRoIEFpcjo6Q29kZS4gQjM6OlByb2NlZHVyZSBhbmQgQWlyOjpD
b2RlIGFyZSBqdXN0IGRpZmZlcmVudCBmYWNhZGVzIG9mIHRoZSBCMwogLy8gY29tcGlsZXIncyBr
bm93bGVkZ2UgYWJvdXQgYSBwaWVjZSBvZiBjb2RlLiBTb21lIGtpbmRzIG9mIHN0YXRlIGFyZW4n
dCBwZXJmZWN0IGZpdHMgZm9yIGVpdGhlcgpAQCAtMjIxLDYgKzIyNCwxNCBAQCBwdWJsaWM6CiAg
ICAgUENUb09yaWdpbk1hcCYgcGNUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fcGNUb09yaWdpbk1h
cDsgfQogICAgIFBDVG9PcmlnaW5NYXAgcmVsZWFzZVBDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBX
VEZNb3ZlKG1fcGNUb09yaWdpbk1hcCk7IH0KIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0
b3I+KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBzZXRXYXNt
Qm91bmRzQ2hlY2tHZW5lcmF0b3IoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAg
ICAgIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yPihjcmVhdGVTaGFyZWRUYXNrPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9u
PihmdW5jdG9yKSkpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJ
bnNlcnRpb25TZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRl
eCBhZmMwMGEyZWFiNTBjZmIzYmVmMWUxODQyNTk3MDI1MTQ0NjJiMWY2Li5iMDYzNDRlNDA1N2Jm
MzExZGQ2ZTZmNmUxMzdjMWYwMWRkMDcwOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsaWRhdGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisj
aW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIK
QEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkIzVmFyaWFibGUuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlICJC
M1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC00MTMsNiArNDE1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+YXM8U3RhY2ttYXBWYWx1ZT4oKS0+Y29uc3RyYWluZWRDaGlsZCgwKS5yZXAoKSA9
PSBWYWx1ZVJlcDo6V2FybUFueSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICB2
YWxpZGF0ZVN0YWNrbWFwKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1
ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50
MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUobV9wcm9jZWR1
cmUuY29kZSgpLmlzUGlubmVkKHZhbHVlLT5hczxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4oKS0+cGlu
bmVkR1BSKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKG1f
cHJvY2VkdXJlLmNvZGUoKS53YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVXBzaWxvbjoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCmluZGV4IGEwODdmNTFlY2UxZGQyNWUxYzIyNDM2YTgzNzAzNzM3ODcwMzg0MGQuLjVi
NDExOTg2MDZjNTY3YTc3ZDViZTg0MTJjNWE2ZWQ5NGU5Zjg3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5jcHAKQEAgLTYxNiw2ICs2MTYsMTAgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZm
ZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICAgICAgcmVzdWx0ID0gRWZmZWN0czo6
Zm9yQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6Cisg
ICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5leGl0c1Np
ZGV3YXlzID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVcHNpbG9uOgogICAgIGNh
c2UgU2V0OgogICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CkBAIC04MDks
NiArODEzLDcgQEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihLaW5kIGtpbmQsIFZhbHVlKiBmaXJzdENo
aWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBPb3Bz
OgogICAgIGNhc2UgRW50cnlTd2l0Y2g6CisgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CiAgICAg
ICAgIHJldHVybiBWb2lkOwogICAgIGNhc2UgU2VsZWN0OgogICAgICAgICBBU1NFUlQoc2Vjb25k
Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIwMjU2MzQ4NmY2NDI2MmJlMWY0YzVjZjE4MDhmNTAwNjdk
Y2FjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
QjNfSklUKQorCisjaW5jbHVkZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3MgV2FzbUJvdW5kc0No
ZWNrVmFsdWUgOiBwdWJsaWMgVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2Vw
dHMoS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Cisg
ICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgfldhc21Cb3VuZHNDaGVja1ZhbHVlKCk7CisKKyAgICBHUFJSZWcgcGlu
bmVkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9waW5uZWRHUFI7IH0KKyAgICB1bnNpZ25lZCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBk
dW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBXYXNtQm91bmRzQ2hlY2tWYWx1ZShPcmlnaW4sIFZhbHVlKiBwdHIsIEdQUlJlZyBwaW5u
ZWRHUFIsIHVuc2lnbmVkIG9mZnNldCk7CisKKyAgICBHUFJSZWcgbV9waW5uZWRHUFI7CisgICAg
dW5zaWduZWQgbV9vZmZzZXQ7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5o
CmluZGV4IDgzY2IyZTE0MDYwZGNjYjJmNGY2ZjYwN2JhMDYxY2VjMGU1NzkyNWYuLjZkNGExNDcy
MjM0YTNkNTkzYzQ5ODhiM2ViODc5ZGRiY2YxZjZmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5oCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVzcGFjZSBBaXIgewogY2xhc3Mg
QmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBDQ2FsbFNwZWNpYWw7CiAKK3R5cGVkZWYgdm9pZCBX
YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBHUFJSZWcsIHVu
c2lnbmVkKTsKK3R5cGVkZWYgU2hhcmVkVGFzazxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5j
dGlvbj4gV2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yOworCiAvLyBUaGlzIGlzIGFuIElSIHRoYXQg
aXMgdmVyeSBjbG9zZSB0byB0aGUgYmFyZSBtZXRhbC4gSXQgcmVxdWlyZXMgYWJvdXQgNDB4IG1v
cmUgYnl0ZXMgdGhhbiB0aGUKIC8vIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUgLSBmb3IgZXhhbXBs
ZSBpZiB5b3UncmUgZ2VuZXJhdGluZyAxTUIgb2YgbWFjaGluZSBjb2RlLCB5b3UgbmVlZCBhYm91
dAogLy8gNDBNQiBvZiBBaXIuCkBAIC0yNjEsNiArMjY0LDEzIEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IGNoYXIqIGxhc3RQaGFzZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQaGFzZU5hbWU7
IH0KIAorICAgIHZvaWQgc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFJlZlB0cjxXYXNtQm91
bmRzQ2hlY2tHZW5lcmF0b3I+IGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIG1fd2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yID0gZ2VuZXJhdG9yOworICAgIH0KKworICAgIFJlZlB0cjxXYXNtQm91
bmRzQ2hlY2tHZW5lcmF0b3I+IHdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1fd2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yOyB9CisKICAgICAvLyBUaGlzIGlzIGEgaGFz
aCBvZiB0aGUgY29kZS4gWW91IGNhbiB1c2UgdGhpcyBpZiB5b3Ugd2FudCB0byBwdXQgY29kZSBp
bnRvIGEgaGFzaHRhYmxlLCBidXQKICAgICAvLyBpdCdzIG1haW5seSBmb3IgdmFsaWRhdGluZyB0
aGUgcmVzdWx0cyBmcm9tIEpTQWlyLgogICAgIHVuc2lnbmVkIGpzSGFzaCgpIGNvbnN0OwpAQCAt
Mjk4LDYgKzMwOCw3IEBAIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgbV9jYWxs
ZWVTYXZlUmVnaXN0ZXJzOwogICAgIFZlY3RvcjxGcmVxdWVudGVkQmxvY2s+IG1fZW50cnlwb2lu
dHM7IC8vIFRoaXMgaXMgZW1wdHkgdW50aWwgYWZ0ZXIgbG93ZXJFbnRyeVN3aXRjaCgpLgogICAg
IFZlY3RvcjxDQ2FsbEhlbHBlcnM6OkxhYmVsPiBtX2VudHJ5cG9pbnRMYWJlbHM7IC8vIFRoaXMg
aXMgZW1wdHkgdW50aWwgY29kZSBnZW5lcmF0aW9uLgorICAgIFJlZlB0cjxXYXNtQm91bmRzQ2hl
Y2tHZW5lcmF0b3I+IG1fd2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yOwogICAgIGNvbnN0IGNoYXIq
IG1fbGFzdFBoYXNlTmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ3VzdG9tLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q3VzdG9tLmNwcAppbmRleCBmNmViNWYzOGQxZmEwZGNmNmE1ZDRlNmU5YTBmMDVmNmEzYjZjMmQ0
Li4yYTJkZjJmYmRjN2I5NzRhYTIzZDg5ZDcyNGI4MmQwYzU0ODAyMmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwCkBAIC0xNzgsNiArMTc4LDE3IEBAIEND
YWxsSGVscGVyczo6SnVtcCBTaHVmZmxlQ3VzdG9tOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2Fs
bEhlbHBlcnMmLCBHZW5lcmF0aW9uCiAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcCgpOwog
fQogCitib29sIFdhc21Cb3VuZHNDaGVja0N1c3RvbTo6aXNWYWxpZEZvcm0oSW5zdCYgaW5zdCkK
K3sKKyAgICBpZiAoaW5zdC5hcmdzLnNpemUoKSAhPSAyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFpbnN0LmFyZ3NbMF0uaXNUbXAoKSAmJiAhaW5zdC5hcmdzWzBdLmlzU29tZUlt
bSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaW5zdC5hcmdzWzFdLmlz
UmVnKCk7Cit9CisKKwogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgogCiAjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ3VzdG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5o
CmluZGV4IDhiOTBmZWYwZTIwN2Y3ZTVkNmRkNzQzZDUxYzYwNGQ4ODI4ZDI1NTYuLjg0Yzg4MGQ5
NGRkMDdjNzdlZTg4ODVmZGI4MzRmODU4NWM5ZjU1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDdXN0b20uaApAQCAtMjcsOSArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShCM19K
SVQpCiAKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSAiQWlyR2VuZXJhdGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJBaXJJbnN0LmgiCiAjaW5jbHVkZSAiQWlyU3BlY2lhbC5oIgogI2lu
Y2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlICJCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIApAQCAtMjcz
LDYgKzI3Niw1MyBAQCBzdHJ1Y3QgRW50cnlTd2l0Y2hDdXN0b20gOiBwdWJsaWMgQ29tbW9uQ3Vz
dG9tQmFzZTxFbnRyeVN3aXRjaEN1c3RvbT4gewogICAgIH0KIH07CiAKK3N0cnVjdCBXYXNtQm91
bmRzQ2hlY2tDdXN0b20gOiBwdWJsaWMgQ29tbW9uQ3VzdG9tQmFzZTxXYXNtQm91bmRzQ2hlY2tD
dXN0b20+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHN0YXRpYyB2b2lkIGZv
ckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgRnVuYyYgZnVuY3RvcikKKyAgICB7CisgICAgICAg
IGZ1bmN0b3IoaW5zdC5hcmdzWzBdLCBBcmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpXaWR0aDY0KTsK
KyAgICAgICAgZnVuY3RvcihpbnN0LmFyZ3NbMV0sIEFyZzo6VXNlLCBBcmc6OkdQLCBBcmc6Oldp
ZHRoNjQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkRm9ybVN0YXRpYyhBcmd1bWVudHMuLi4pCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEZvcm0o
SW5zdCYpOworCisgICAgc3RhdGljIGJvb2wgYWRtaXRzU3RhY2soSW5zdCYsIHVuc2lnbmVkKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlz
VGVybWluYWwoSW5zdCYpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAorICAgIHN0YXRpYyBib29sIGhhc05vbkFyZ05vbkNvbnRyb2xFZmZlY3RzKEluc3QmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIENDYWxsSGVscGVy
czo6SnVtcCBnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlv
bkNvbnRleHQmIGNvbnRleHQpCisgICAgeworICAgICAgICBXYXNtQm91bmRzQ2hlY2tWYWx1ZSog
dmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCk7CisgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBvdXRPZkJvdW5kcyA9IEluc3QoQWlyOjpCcmFuY2g2NCwgdmFs
dWUsIEFyZzo6cmVsQ29uZChDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCksIGluc3QuYXJnc1sw
XSwgaW5zdC5hcmdzWzFdKS5nZW5lcmF0ZShqaXQsIGNvbnRleHQpOworCisgICAgICAgIGNvbnRl
eHQubGF0ZVBhdGhzLmFwcGVuZChjcmVhdGVTaGFyZWRUYXNrPEdlbmVyYXRpb25Db250ZXh0OjpM
YXRlUGF0aEZ1bmN0aW9uPigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEFp
cjo6R2VuZXJhdGlvbkNvbnRleHQmKSB7CisgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMubGlu
aygmaml0KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmNvZGUtPndhc21Cb3VuZHNDaGVja0dl
bmVyYXRvcigpLT5ydW4oaml0LCB2YWx1ZS0+cGlubmVkR1BSKCksIHZhbHVlLT5vZmZzZXQoKSk7
CisgICAgICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gV2Ugc2FpZCB3ZSB3ZXJlIG5vdCBhIHRl
cm1pbmFsLgorICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wKCk7CisgICAgfQorfTsK
KwogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIz
X0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
CmluZGV4IDhjYzM4NTQyODNhZjU4ZDE5NTY1MTNlNDdlMGJiZTdmNTA3ZWRiOWUuLmUwMThmYjk5
ZGMxNzcxNTI2MDBhMDcxNzA5NDhmZGRhYjNmM2IzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtODg0LDQgKzg4NCw3IEBAIGN1c3Rv
bSBQYXRjaAogY3VzdG9tIENDYWxsCiBjdXN0b20gQ29sZENDYWxsCiAKKyMgVGhpcyBpcyBhIHNw
ZWNpYWwgd2FzbSBvcGNvZGUgdGhhdCBicmFuY2hlcyB0byBhIHRyYXAgaGFuZGxlci4gTGlrZSBQ
YXRjaCB0aGlzIHRha2VzIGEgc3BlY2lhbCB0aGF0CisjIG11c3QgYmUgdGhlIGZpcnN0IG9wZXJh
bmQuCitjdXN0b20gV2FzbUJvdW5kc0NoZWNrCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKaW5kZXggNGI0N2IxMzkzMGIzOThkYTBlMTYyOGQ3M2I1YmYzOTc0MTBmNjdhNi4uNDc3ZTIx
NTM4MjBkMTZjY2RlM2JmYTBlOGFkYjUyNjliNGU0MTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAj
aW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIK
KyNpbmNsdWRlICJCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKQEAgLTEz
MzgxLDYgKzEzMzgyLDM3IEBAIHZvaWQgdGVzdFBpblJlZ2lzdGVycygpCiAgICAgZ28oZmFsc2Up
OwogfQogCit2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQ
UjE7CisgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOworCisgICAgcHJvYy5zZXRXYXNtQm91
bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBpbm5lZEdQ
UiwgdW5zaWduZWQgYWN0dWFsT2Zmc2V0KSB7CisgICAgICAgIENIRUNLX0VRKHBpbm5lZEdQUiwg
cGlubmVkKTsKKyAgICAgICAgQ0hFQ0tfRVEoYWN0dWFsT2Zmc2V0LCBvZmZzZXQpOworCisgICAg
ICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNp
bXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgLy8gc2F2ZXMuCisgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAg
aml0LnJldCgpOworICAgIH0pOworCisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBpZiAocG9pbnRl
clR5cGUoKSAhPSBJbnQzMikKKyAgICAgICAgbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICByb290LT5hcHBlbmROZXc8V2FzbUJv
dW5kc0NoZWNrVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0LCBwaW5uZWQsIG9mZnNldCk7Cisg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAweDQyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAxLCAyICsgb2Zmc2V0KSwgMHg0
Mik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAzLCAyICsgb2Zmc2V0KSwg
NDIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgMiwgMiArIG9mZnNldCks
IDQyKTsKK30KKwogLy8gTWFrZSBzdXJlIHRoZSBjb21waWxlciBkb2VzIG5vdCB0cnkgdG8gb3B0
aW1pemUgYW55dGhpbmcgb3V0LgogTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKIHsKQEAgLTE0
ODAwLDcgKzE0ODMyLDExIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4o
dGVzdFNvbWVFYXJseVJlZ2lzdGVyKCkpOwogICAgIFJVTih0ZXN0UGF0Y2hwb2ludFRlcm1pbmFs
UmV0dXJuVmFsdWUodHJ1ZSkpOwogICAgIFJVTih0ZXN0UGF0Y2hwb2ludFRlcm1pbmFsUmV0dXJu
VmFsdWUoZmFsc2UpKTsKLSAgICAKKworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDApKTsK
KyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygxMDApKTsKKyAgICBSVU4odGVzdFdhc21Cb3Vu
ZHNDaGVjaygxMDAwMCkpOworCiAgICAgaWYgKGlzWDg2KCkpIHsKICAgICAgICAgUlVOKHRlc3RC
cmFuY2hCaXRBbmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAxLCBBaXI6OkJyYW5jaFRlc3Qz
MiwgQWlyOjpBcmc6OlRtcCkpOwogICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lv
bihJZGVudGl0eSwgSW50NjQsIDB4ZmYsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1w
KSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVz
L3dlYmtpdC5vcmcvQ2hhbmdlTG9nCmluZGV4IDRjNzBmNzk1ZGQ3MzY1OWIwZjBjOWJiODFjOWUz
YmZmNmM2NmY4NGIuLmRlM2NhZWNkZTIxMTIyYjNkNWMxNDExZmM2NDdjZTI3Nzg2NjRkN2UgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3dl
YmtpdC5vcmcvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMTAtMTIgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQjMgbmVlZHMgYSBzcGVj
aWFsIFdhc21Cb3VuZHNDaGVjayBPcGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzI0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgZG9jcyBmb3IgdGhlIG5ldyBXYXNtQm91bmRz
Q2hlY2sgb3Bjb2RlLgorCisgICAgICAgICogZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50
YXRpb24uaHRtbDoKKwogMjAxNi0xMC0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IGNvbnRyaWJ1dG9ycy5qc29uIHRvIGEgZmxhdCBs
aXN0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRl
LXJlcHJlc2VudGF0aW9uLmh0bWwgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJt
ZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKaW5kZXggYmRjNTdhMTA0OTdiMzFmZDkyNzYwN2Zj
NjU5MGFiNDdmMzI0NzVkZi4uNjJhYzk3Y2IzY2VhNDZkYWJiZTBmODQ2YzcxZTZkYmYyYzk3Mzk3
YSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1y
ZXByZXNlbnRhdGlvbi5odG1sCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRl
cm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbApAQCAtNTM3LDYgKzUzNywxNiBAQCBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIHRvIGFuIGluc3RydWN0aW9uIHRoYXQgYnJhbmNo
ZXMgdG8gdGhlIGV4aXQgaWYgQGEgJmd0Oz0gQGIgb3IgaWYgZWl0aGVyIEBhIG9yIEBiIGFyZQog
ICAgICAgICBOYU4uICBNdXN0IHVzZSB0aGUgQ2hlY2tWYWx1ZSBjbGFzcy48L2RkPgogCisgICAg
ICA8ZHQ+Vm9pZCBXYXNtQm91bmRzQ2hlY2soSW50MzIsIHBpbm5lZEdQUiwgb2Zmc2V0KTwvZHQ+
CisgICAgICA8ZGQ+U3BlY2lhbCBXYXNtIG9wY29kZS4gVGhpcyBicmFuY2hlcyBvbiB0aGUgZmly
c3QgY2hpbGQuIElmIHRoZSBmaXJzdCBjaGlsZCBwbHVzIHRoZSBvZmZzZXQKKyAgICAgICAgcHJv
ZHVjZXMgYSBJbnQ2NCBsZXNzIHRoYW4gdG8gdGhlIHBpbm5lZEdQUiB0aGlzIGZhbGxzIHRocm91
Z2guIE90aGVyd2lzZSwgaXQgYnJhbmNoZXMgdG8KKyAgICAgICAgdGhlIGV4aXQgcGF0aCBnZW5l
cmF0ZWQgYnkgdGhlIHBhc3NlZCBnZW5lcmF0b3IuIFVubGlrZSB0aGUgUGF0Y2gvQ2hlY2sgZmFt
aWx5LCB0aGUKKyAgICAgICAgZ2VuZXJhdG9yIHVzZWQgYnkgV2FzbUJvdW5kc0NoZWNrIHNvdWxk
IGJlIHNldCBvbiB0aGUgUHJvY3VkZXIgaXRzZWxmLiBUaGUgR1JQUmVnIHBhc3NlZCBpbgorICAg
ICAgICBwaW5uZWRHUFIgbXVzdCBhbHNvIGJlIG1hcmtlZCBhcyBwaW5uZWQgYnkgY2FsbGluZyB0
aGUgUHJvY2VkdXJlJ3MgcGlubmluZyBBUEkuIEIzIGFzc3VtZXMKKyAgICAgICAgdGhlIFdhc21C
b3VuZHNDaGVjayB3aWxsIHNpZGUtZXhpdCB3aGVuIHRoZSBpdCBicmFuY2hlcywgc28gdGhlIGdl
bmVyYXRvciBtdXN0IGRvIHNvbWUga2luZAorICAgICAgICBvZiB0ZXJtaW5hdGlvbi4gSW4gV2Fz
bSB0aGlzIGlzIHVzZWQgdG8gdHJhcCBhbmQgdW53aW5kIGJhY2sgdG8gSlMuIE11c3QgdXNlIHRo
ZQorICAgICAgICBXYXNtQm91bmRzQ2hlY2tWYWx1ZSBjbGFzcy48L2RkPgorCiAgICAgICA8ZHQ+
Vm9pZCBVcHNpbG9uKFQsIF5waGkpPC9kdD4KICAgICAgIDxkZD5CMyB1c2VzIFNTQS4gIFNTQSBy
ZXF1aXJlcyB0aGF0IGVhY2ggdmFyaWFibGUgZ2V0cyBhc3NpZ25lZCB0byBvbmx5IG9uY2UgYW55
d2hlcmUgaW4KICAgICAgICAgdGhlIHByb2NlZHVyZS4gIEJ1dCB0aGF0IGRvZXNuJ3Qgd29yayBp
ZiB5b3UgaGF2ZSBhIHZhcmlhYmxlIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291398</attachid>
            <date>2016-10-12 14:55:44 -0700</date>
            <delta_ts>2016-10-12 16:16:49 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>bug-163246-20161012145219.patch</filename>
            <type>text/plain</type>
            <size>30724</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi41MDA5ZGM2NjViMTQ2OTBm
OWRlYzcxMzRiYjdkY2RiYWEwMDRlMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV2FzbUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6
OlZhbHVlIHN1YmNsYXNzIGZvciBpdCwKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIHRocmVlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gVGhl
IGZpcnN0IGlzCisgICAgICAgIHRoZSBJbnQzMiBwb2ludGVyIHZhbHVlIHVzZWQgdG8gYmUgdXNl
ZCBieSB0aGUgTG9hZC4gIE5leHQgaXMgdGhlIHBpbm5lZCByZWdpc3Rlci4gVGhlCisgICAgICAg
IHBpbm5lZCByZWdpc3RlciBtdXN0IGJlIHBpbm5lZCBieSBjYWxsaW5nIHByb2Muc2V0UGlubmVk
KCkgcHJpb3IgdG8gY29tcGlsaW5nIHRoZQorICAgICAgICBQcm9jZWR1cmUuIExhc3RseSwgdGhl
IFdhc21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGFuIG9mZnNldC4gVGhlIFdhc21Cb3VuZHNDaGVj
a1ZhbHVlIGlzCisgICAgICAgIHdpbGwgdGhlbiBlbWl0IGNvZGUgdGhhdCBzaWRlLWV4aXRzIGlm
IHRoZSBJbnQ2NCBzdW0gb2YgdGhlIG9mZnNldCBhbmQgcG9pbnRlciBpcyBncmVhdGVyCisgICAg
ICAgIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIGluIHRoZSBwaW5uZWRSZWdpc3Rlci4gSW5z
dGVhZCBvZiB0YWtpbmcgYSBnZW5lcmF0b3IgZm9yIGVhY2gKKyAgICAgICAgdmFsdWUgbGlrZSBD
aGVjay9QYXRjaHBvaW50LCBXYXNtQm91bmRzQ2hlY2sgZ2V0cyBpdHMgZ2VuZXJhdG9yIGRpcmVj
dGx5IG9mZiBBaXI6OkNvZGUuIEluCisgICAgICAgIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcg
Q3VzdG9tIG9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUg
d2Ugc2hvdWxkIGFkZCBXYXNtQm91bmRzQ2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUg
cmVkdW5kYW50IGJvdW5kcworICAgICAgICBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNh
biByZW1vdmUgYW55IFdhc21Cb3VuZHNDaGVjayBkb21pbmF0ZWQgYnkgYW5vdGhlcgorICAgICAg
ICBXYXNtQm91bmRzQ2hlY2sgd2l0aCB0aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFu
ZCBhIGxhcmdlciBvZmZzZXQuCisKKyAgICAgICAgKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21C
b3VuZHNDaGVja1ZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVl
OjpXYXNtQm91bmRzQ2hlY2tWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hl
Y2tWYWx1ZTo6ZHVtcE1ldGEpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAg
KiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OnNldFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcik6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAg
ICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6c2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKToK
KyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjp0eXBlRm9yKToKKyAgICAgICAgKiBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmFjY2VwdHMpOgor
ICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OnBpbm5lZEdQUik6CisgICAg
ICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6b2Zmc2V0KToKKyAgICAgICAgKiBi
My9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpzZXRXYXNtQm91
bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjp3YXNtQm91
bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKToK
KyAgICAgICAgKiBiMy9haXIvQWlyQ3VzdG9tLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldh
c21Cb3VuZHNDaGVja0N1c3RvbTo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6aXNWYWxpZEZvcm1TdGF0aWMpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0b206OmFkbWl0c1N0YWNrKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjppc1Rlcm1pbmFsKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjpoYXNOb25BcmdOb25Db250
cm9sRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3Rv
bTo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAg
ICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVj
ayk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE2LTEwLTEyICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgdmFyaWFibGVzIGluIGFycmF5UHJv
dG9GdW5jU3BsaWNlKCkgdG8gbWF0Y2ggbmFtZXMgaW4gdGhlIHNwZWMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBm
ZTFhZDU1NTVlZTViZWI4OWExOGM1NzI1MzJiYjE1ODBmNTQzZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIK
KworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
CitXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21Cb3VuZHNDaGVja1ZhbHVlKCkKK3sKK30KKwor
V2FzbUJvdW5kc0NoZWNrVmFsdWU6Oldhc21Cb3VuZHNDaGVja1ZhbHVlKE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwdHIsIEdQUlJlZyBwaW5uZWRHUFIsIHVuc2lnbmVkIG9mZnNldCkKKyAgICA6IFZh
bHVlKENoZWNrZWRPcGNvZGUsIFdhc21Cb3VuZHNDaGVjaywgb3JpZ2luLCBwdHIpCisgICAgLCBt
X3Bpbm5lZEdQUihwaW5uZWRHUFIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7Cit9CisKK3Zv
aWQgV2FzbUJvdW5kc0NoZWNrVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hLCAic2l6ZVJlZ2lz
dGVyID0gIiwgbV9waW5uZWRHUFIsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNDRiMmM0ZDMyNjJkNDE5NTE0YzkxNGNlZGJmM2M1
YWE5ZWZmM2ZhLi45ODc0ZjQ5NjQyYTdkNzQxY2EwNjk0ZTFhZGY1ZmNjMjg1ZmYyODAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwNiw2ICsxMjA2LDggQEAKIAkJNTJDOTUy
QjkxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkM5NTJCODE5QTI4QTFDMDA2OUIzODYgLyog
VHlwZVByb2ZpbGVyLmNwcCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdB
U01QbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkYx
RDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxh
bi5jcHAgKi87IH07CisJCTUzNDFGQzcwMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cCAqLzsgfTsKKwkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNr
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07
CiAJCTUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2
RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CiAJCTUzNDg2QkJCMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZC
QkExQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgKi87IH07CiAJCTUzNDkwMjg1
MUM3Mjc2QjcwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8q
IFR5cGVkQXJyYXlDVGVzdC5jcHAgKi87IH07CkBAIC0zNDQxLDYgKzM0NDMsOCBAQAogCQk1MkM5
NTJCODE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3
NEJDMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXQVNNUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXQVNNUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEz
NzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0FTTVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0MUZDNzExREFDMzQz
QzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNt
Qm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJC
NjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5
Q1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJh
eUNUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg1Nyw2ICs0ODYxLDggQEAKIAkJCQkwRjMzOEUxODFC
RjI4NkVBMDAxM0M4OEYgLyogQjNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEJB
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCAqLywKIAkJCQlEQ0ZERkJENzFE
MUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oICovLAorCQkJCTUzNDFGQzZGMURB
QzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQk1MzQx
RkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJ
CTBGNkI4QURFMUM0RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8s
CiAJCQkJMEY2QjhBREYxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmgg
Ki8sCiAJCQkJREM5QTBDMUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uY3Bw
ICovLApAQCAtNzY1MCw2ICs3NjU2LDcgQEAKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUg
LyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
RTNBNjcxNTNBMjFFMjAwMEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRkI5MjFEMTZEMDJGMzAwMDU1QTVEQiAvKiBERkdTbG93UGF0aEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8q
IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQzMTMy
OERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2ODJGQjMxOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDg5RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTM2NSw2ICs5MzcyLDcgQEAKIAkJCQkyQUFDRTYzQzE4
Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNzY2RDJGMTVBOERDRTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkFERkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2lu
Zy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3
RENBMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjAz
MzJDMzE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyODA4NTUxMDdFQzBFNzAwMTNFN0IyIC8qIEdldHRlclNldHRlci5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXgg
ZDYxYTA3NjRhN2JmMmI1NjAzZjJjYjQ5MGYwZWVkODk1MTY1Y2U2Mi4uNWM4OWNiZGI5NjkyNzMz
ZDQ0NzMxZjZhYjU2ZDhkMWFhYzc2ZjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKQEAgLTU2OCwxMyArNTY4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBsb2FkUHJvbWlzZShsb2FkVmFsdWUsIExvYWQpOwogICAgIH0KIAorICAgIEFyZyBpbW0o
aW50NjRfdCBpbnRWYWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3Jt
KGludFZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBBcmc6OmltbShpbnRWYWx1ZSk7CisgICAg
ICAgIHJldHVybiBBcmcoKTsKKyAgICB9CisKICAgICBBcmcgaW1tKFZhbHVlKiB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIGlmICh2YWx1ZS0+aGFzSW50KCkpIHsKLSAgICAgICAgICAgIGludDY0X3Qg
aW50VmFsdWUgPSB2YWx1ZS0+YXNJbnQoKTsKLSAgICAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJ
bW1Gb3JtKGludFZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbW0oaW50VmFs
dWUpOwotICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS0+aGFzSW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gaW1tKHZhbHVlLT5hc0ludCgpKTsKICAgICAgICAgcmV0dXJuIEFyZygpOwogICAg
IH0KIApAQCAtMjYyNyw2ICsyNjMxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEIzOjpXYXNtQm91bmRzQ2hlY2s6IHsKKyAgICAg
ICAgICAgIFdhc21Cb3VuZHNDaGVja1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlPigpOworCisgICAgICAgICAgICBWYWx1ZSogcHRyID0gdmFsdWUtPmNoaWxk
KDApOworCisgICAgICAgICAgICBBcmcgdGVtcCA9IG1fY29kZS5uZXdUbXAoQXJnOjpHUCk7Cisg
ICAgICAgICAgICBhcHBlbmQoSW5zdChNb3ZlMzIsIHZhbHVlLCB0bXAocHRyKSwgdGVtcCkpOwor
ICAgICAgICAgICAgaWYgKHZhbHVlLT5vZmZzZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChp
bW0odmFsdWUtPm9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBp
bW0odmFsdWUtPm9mZnNldCgpKSwgdGVtcCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIEFyZyBiaWdJbW0gPSBtX2NvZGUubmV3VG1wKEFyZzo6R1ApOworICAg
ICAgICAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUtPm9mZnNldCgp
KSwgYmlnSW1tKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBiaWdJbW0sIHRl
bXApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVu
ZChJbnN0KEFpcjo6V2FzbUJvdW5kc0NoZWNrLCB2YWx1ZSwgdGVtcCwgQXJnKHZhbHVlLT5waW5u
ZWRHUFIoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgVXBzaWxvbjogewogICAgICAgICAgICAgVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+Y2hpbGQo
MCk7CiAgICAgICAgICAgICBhcHBlbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNw
cAppbmRleCBmMDNhOTRjZWRlZmZlODRmMjljNDY5NWVmMzM4OTE2NjIxNWI1Mzk2Li5lMTAwZDNi
MzlmZjUyYzIyMjgyY2NkN2NkNTk5NzFlY2FjMjQ3N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM09wY29kZS5jcHAKQEAgLTI3Miw2ICsyNzIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENoZWNrOgogICAgICAgICBv
dXQucHJpbnQoIkNoZWNrIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdhc21Cb3VuZHND
aGVjazoKKyAgICAgICAgb3V0LnByaW50KCJXYXNtQm91bmRzQ2hlY2siKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgVXBzaWxvbjoKICAgICAgICAgb3V0LnByaW50KCJVcHNpbG9uIik7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09w
Y29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggYzk3NzM0
NzcwZGM5NTI1YzhiZmNiNjg3YWU1MDFlZjVjMjlhNzBjNC4uZTMyZTlkMzAyMGRmNjM5NmQwNjAy
OWM3ZmE1NTIzMzk4OTgwZTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAg
LTIwOSw2ICsyMDksMTIgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBXYXJtQW55
LiBJdCB3aWxsIG5vdCBoYXZlIGFuIG91dHB1dCBjb25zdHJhaW50LgogICAgIENoZWNrLAogCisg
ICAgLy8gU3BlY2lhbCBXYXNtIG9wY29kZSB0aGF0IHRha2VzIGEgSW50MzIsIGEgc3BlY2lhbCBw
aW5uZWQgZ3ByIGFuZCBhbiBvZmZzZXQuIFRoaXMgbm9kZSBleGlzdHMKKyAgICAvLyB0byBhbGxv
dyB1cyB0byBDU0UgV2FzbUJvdW5kc0NoZWNrcyBpZiBib3RoIHVzZSB0aGUgc2FtZSBwb2ludGVy
IGFuZCBvbmUgZG9taW5hdGVzIHRoZSBvdGhlci4KKyAgICAvLyBXaXRob3V0IHNvbWUgc3VjaCBu
b2RlIEIzIHdvdWxkIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5uZXIg
d29ya2luZ3Mgb2Ygd2FzbQorICAgIC8vIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBzdWNoIG9wdGlt
aXphdGlvbnMuCisgICAgV2FzbUJvdW5kc0NoZWNrLAorCiAgICAgLy8gU1NBIHN1cHBvcnQsIGlu
IHRoZSBzdHlsZSBvZiBERkcgU1NBLgogICAgIFVwc2lsb24sIC8vIFRoaXMgdXNlcyB0aGUgVXBz
aWxvblZhbHVlIGNsYXNzLgogICAgIFBoaSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuY3BwCmluZGV4IDI5ZmMxYzQxMzM5MDg2MjYyZjM3YzkzOTY5MjhiMzZkOWEyMDliNGEu
LjZjZGUyZjExMDZmNzRkMGY3YTc4OTgzZDFkZjRhZWNiOWFjM2MxYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcApAQCAtMzQ4LDYgKzM0OCwxMSBAQCB2b2lkIFBy
b2NlZHVyZTo6c2V0QmxvY2tPcmRlckltcGwoVmVjdG9yPEJhc2ljQmxvY2sqPiYgYmxvY2tzKQog
ICAgIH0KIH0KIAordm9pZCBQcm9jZWR1cmU6OnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihS
ZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPiBnZW5lcmF0b3IpCit7CisgICAgY29kZSgp
LnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihnZW5lcmF0b3IpOworfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4IGQxYzcyMmY0YTJmYWU4ZmEwOThkNzZiZTg2M2E1
OGU2NTc4MjVkYjcuLjIyMzYxNDVlZjU1M2YxYTlkMjUzMzJkMWM5ODkyNzMyNDgyMTU2YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCkBAIC01OCw2ICs1OCw5IEBAIGNs
YXNzIFZhcmlhYmxlOwogCiBuYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCit0eXBlZGVm
IHZvaWQgV2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgR1BS
UmVnLCB1bnNpZ25lZCk7Cit0eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJh
dG9yRnVuY3Rpb24+IFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKKwogLy8gVGhpcyByZXByZXNl
bnRzIEIzJ3MgdmlldyBvZiBhIHBpZWNlIG9mIGNvZGUuIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBt
dXN0IGV4aXN0IGluIGEgMToxCiAvLyByZWxhdGlvbnNoaXAgd2l0aCBBaXI6OkNvZGUuIEIzOjpQ
cm9jZWR1cmUgYW5kIEFpcjo6Q29kZSBhcmUganVzdCBkaWZmZXJlbnQgZmFjYWRlcyBvZiB0aGUg
QjMKIC8vIGNvbXBpbGVyJ3Mga25vd2xlZGdlIGFib3V0IGEgcGllY2Ugb2YgY29kZS4gU29tZSBr
aW5kcyBvZiBzdGF0ZSBhcmVuJ3QgcGVyZmVjdCBmaXRzIGZvciBlaXRoZXIKQEAgLTIyMSw2ICsy
MjQsMTQgQEAgcHVibGljOgogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJl
dHVybiBtX3BjVG9PcmlnaW5NYXA7IH0KICAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3Jp
Z2luTWFwKCkgeyByZXR1cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CiAKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2Fz
bUJvdW5kc0NoZWNrR2VuZXJhdG9yPik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgIHZvaWQgc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCisgICAgeworICAgICAgICBzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoUmVmUHRy
PFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4oY3JlYXRlU2hhcmVkVGFzazxXYXNtQm91bmRzQ2hl
Y2tHZW5lcmF0b3JGdW5jdGlvbj4oZnVuY3RvcikpKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWxpZGF0ZS5jcHAKaW5kZXggYWZjMDBhMmVhYjUwY2ZiM2JlZjFlMTg0MjU5NzAyNTE0NDYy
YjFmNi4uYjA2MzQ0ZTQwNTdiZjMxMWRkNmU2ZjZlMTM3YzFmMDFkZDA3MDk5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJCM0FyZ3Vt
ZW50UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQjNEb21pbmF0b3JzLmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZh
bHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDEzLDYgKzQxNSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmFzPFN0YWNrbWFwVmFsdWU+KCktPmNvbnN0cmFp
bmVkQ2hpbGQoMCkucmVwKCkgPT0gVmFsdWVSZXA6Oldhcm1BbnksICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja21hcCh2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAx
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKG1fcHJvY2VkdXJlLmNvZGUoKS5pc1Bpbm5lZCh2YWx1ZS0+YXM8V2FzbUJvdW5k
c0NoZWNrVmFsdWU+KCktPnBpbm5lZEdQUigpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5jb2RlKCkud2FzbUJvdW5kc0NoZWNrR2VuZXJh
dG9yKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFVwc2lsb246CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCBhMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4
MzcwMzczNzg3MDM4NDBkLi41YjQxMTk4NjA2YzU2N2E3N2Q1YmU4NDEyYzVhNmVkOTRlOWY4NzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTYsNiArNjE2LDEwIEBA
IEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgICAg
IHJlc3VsdCA9IEVmZmVjdHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2FzbUJvdW5kc0NoZWNrOgorICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOworICAg
ICAgICByZXN1bHQuZXhpdHNTaWRld2F5cyA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVXBzaWxvbjoKICAgICBjYXNlIFNldDoKICAgICAgICAgcmVzdWx0LndyaXRlc0xvY2FsU3Rh
dGUgPSB0cnVlOwpAQCAtODA5LDYgKzgxMyw3IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBr
aW5kLCBWYWx1ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgUmV0
dXJuOgogICAgIGNhc2UgT29wczoKICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgIGNhc2UgV2Fz
bUJvdW5kc0NoZWNrOgogICAgICAgICByZXR1cm4gVm9pZDsKICAgICBjYXNlIFNlbGVjdDoKICAg
ICAgICAgQVNTRVJUKHNlY29uZENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMDI1NjM0ODZmNjQyNjJi
ZTFmNGM1Y2YxODA4ZjUwMDY3ZGNhY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNs
dWRlICJDQ2FsbEhlbHBlcnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisK
K2NsYXNzIFdhc21Cb3VuZHNDaGVja1ZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIH5XYXNtQm91bmRzQ2hlY2tWYWx1ZSgp
OworCisgICAgR1BSUmVnIHBpbm5lZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkR1BSOyB9
CisgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKworcHJv
dGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwor
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luLCBWYWx1
ZSogcHRyLCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCBvZmZzZXQpOworCisgICAgR1BSUmVn
IG1fcGlubmVkR1BSOworICAgIHVuc2lnbmVkIG1fb2Zmc2V0OworfTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCA4M2NiMmUxNDA2MGRjY2IyZjRmNmY2MDdiYTA2MWNl
YzBlNTc5MjVmLi42ZDRhMTQ3MjIzNGEzZDU5M2M0OTg4YjNlYjg3OWRkYmNmMWY2ZmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtNTIsNiArNTIsOSBAQCBuYW1l
c3BhY2UgQWlyIHsKIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgQ0NhbGxTcGVjaWFs
OwogCit0eXBlZGVmIHZvaWQgV2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxI
ZWxwZXJzJiwgR1BSUmVnLCB1bnNpZ25lZCk7Cit0eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKKwogLy8g
VGhpcyBpcyBhbiBJUiB0aGF0IGlzIHZlcnkgY2xvc2UgdG8gdGhlIGJhcmUgbWV0YWwuIEl0IHJl
cXVpcmVzIGFib3V0IDQweCBtb3JlIGJ5dGVzIHRoYW4gdGhlCiAvLyBnZW5lcmF0ZWQgbWFjaGlu
ZSBjb2RlIC0gZm9yIGV4YW1wbGUgaWYgeW91J3JlIGdlbmVyYXRpbmcgMU1CIG9mIG1hY2hpbmUg
Y29kZSwgeW91IG5lZWQgYWJvdXQKIC8vIDQwTUIgb2YgQWlyLgpAQCAtMjYxLDYgKzI2NCwxMyBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBjaGFyKiBsYXN0UGhhc2VOYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0UGhhc2VOYW1lOyB9CiAKKyAgICB2b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVy
YXRvcihSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPiBnZW5lcmF0b3IpCisgICAgewor
ICAgICAgICBtX3dhc21Cb3VuZHNDaGVja0dlbmVyYXRvciA9IGdlbmVyYXRvcjsKKyAgICB9CisK
KyAgICBSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPiB3YXNtQm91bmRzQ2hlY2tHZW5l
cmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3dhc21Cb3VuZHNDaGVja0dlbmVyYXRvcjsgfQorCiAg
ICAgLy8gVGhpcyBpcyBhIGhhc2ggb2YgdGhlIGNvZGUuIFlvdSBjYW4gdXNlIHRoaXMgaWYgeW91
IHdhbnQgdG8gcHV0IGNvZGUgaW50byBhIGhhc2h0YWJsZSwgYnV0CiAgICAgLy8gaXQncyBtYWlu
bHkgZm9yIHZhbGlkYXRpbmcgdGhlIHJlc3VsdHMgZnJvbSBKU0Fpci4KICAgICB1bnNpZ25lZCBq
c0hhc2goKSBjb25zdDsKQEAgLTI5OCw2ICszMDgsNyBAQCBwcml2YXRlOgogICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBWZWN0b3I8RnJlcXVlbnRl
ZEJsb2NrPiBtX2VudHJ5cG9pbnRzOyAvLyBUaGlzIGlzIGVtcHR5IHVudGlsIGFmdGVyIGxvd2Vy
RW50cnlTd2l0Y2goKS4KICAgICBWZWN0b3I8Q0NhbGxIZWxwZXJzOjpMYWJlbD4gbV9lbnRyeXBv
aW50TGFiZWxzOyAvLyBUaGlzIGlzIGVtcHR5IHVudGlsIGNvZGUgZ2VuZXJhdGlvbi4KKyAgICBS
ZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPiBtX3dhc21Cb3VuZHNDaGVja0dlbmVyYXRv
cjsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5hbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKaW5kZXggZjZlYjVmMzhkMWZhMGRjZjZhNWQ0
ZTZlOWEwZjA1ZjZhM2I2YzJkNC4uMmEyZGYyZmJkYzdiOTc0YWEyM2Q4OWQ3MjRiODJkMGM1NDgw
MjJjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmNwcApAQCAt
MTc4LDYgKzE3OCwxNyBAQCBDQ2FsbEhlbHBlcnM6Okp1bXAgU2h1ZmZsZUN1c3RvbTo6Z2VuZXJh
dGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiwgR2VuZXJhdGlvbgogICAgIHJldHVybiBDQ2Fs
bEhlbHBlcnM6Okp1bXAoKTsKIH0KIAorYm9vbCBXYXNtQm91bmRzQ2hlY2tDdXN0b206OmlzVmFs
aWRGb3JtKEluc3QmIGluc3QpCit7CisgICAgaWYgKGluc3QuYXJncy5zaXplKCkgIT0gMikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghaW5zdC5hcmdzWzBdLmlzVG1wKCkgJiYgIWlu
c3QuYXJnc1swXS5pc1NvbWVJbW0oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIGluc3QuYXJnc1sxXS5pc1JlZygpOworfQorCisKIH0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDdXN0b20uaAppbmRleCA4YjkwZmVmMGUyMDdmN2U1ZDZkZDc0M2Q1MWM2MDRk
ODgyOGQyNTU2Li44NGM4ODBkOTRkZDA3Yzc3ZWU4ODg1ZmRiODM0Zjg1ODVjOWY1NTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKQEAgLTI3LDkgKzI3LDEyIEBA
CiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUg
IkFpckdlbmVyYXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiQWlySW5zdC5oIgogI2luY2x1ZGUg
IkFpclNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNw
YWNlIEFpciB7CiAKQEAgLTI3Myw2ICsyNzYsNTMgQEAgc3RydWN0IEVudHJ5U3dpdGNoQ3VzdG9t
IDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8RW50cnlTd2l0Y2hDdXN0b20+IHsKICAgICB9CiB9
OwogCitzdHJ1Y3QgV2FzbUJvdW5kc0NoZWNrQ3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJh
c2U8V2FzbUJvdW5kc0NoZWNrQ3VzdG9tPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
KyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IEZ1bmMmIGZ1bmN0
b3IpCisgICAgeworICAgICAgICBmdW5jdG9yKGluc3QuYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6
R1AsIEFyZzo6V2lkdGg2NCk7CisgICAgICAgIGZ1bmN0b3IoaW5zdC5hcmdzWzFdLCBBcmc6OlVz
ZSwgQXJnOjpHUCwgQXJnOjpXaWR0aDY0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEZvcm1TdGF0aWMoQXJndW1l
bnRzLi4uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGlzVmFsaWRGb3JtKEluc3QmKTsKKworICAgIHN0YXRpYyBib29sIGFkbWl0c1N0YWNr
KEluc3QmLCB1bnNpZ25lZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBpc1Rlcm1pbmFsKEluc3QmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBoYXNOb25BcmdOb25Db250cm9s
RWZmZWN0cyhJbnN0JikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHN0YXRpYyBDQ2FsbEhlbHBlcnM6Okp1bXAgZ2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgV2Fz
bUJvdW5kc0NoZWNrVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW4tPmFzPFdhc21Cb3VuZHNDaGVj
a1ZhbHVlPigpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb3V0T2ZCb3VuZHMgPSBJbnN0
KEFpcjo6QnJhbmNoNjQsIHZhbHVlLCBBcmc6OnJlbENvbmQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9y
RXF1YWwpLCBpbnN0LmFyZ3NbMF0sIGluc3QuYXJnc1sxXSkuZ2VuZXJhdGUoaml0LCBjb250ZXh0
KTsKKworICAgICAgICBjb250ZXh0LmxhdGVQYXRocy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazxH
ZW5lcmF0aW9uQ29udGV4dDo6TGF0ZVBhdGhGdW5jdGlvbj4oCisgICAgICAgICAgICBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVyYXRpb25Db250ZXh0JikgeworICAgICAgICAgICAg
ICAgIG91dE9mQm91bmRzLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jb2Rl
LT53YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoKS0+cnVuKGppdCwgdmFsdWUtPnBpbm5lZEdQUigp
LCB2YWx1ZS0+b2Zmc2V0KCkpOworICAgICAgICAgICAgfSkpOworCisgICAgICAgIC8vIFdlIHNh
aWQgd2Ugd2VyZSBub3QgYSB0ZXJtaW5hbC4KKyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6
SnVtcCgpOworICAgIH0KK307CisKIH0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBlOTQ2NzJlNzg2ZDA2ODAwYTZkMzZhMzFiMDJhM2U5
OWI1ODkwYjExLi5iYzFmNmY3ZjYxNTU1Nzc2MTY4M2JmZDA0ZTYwN2MyNjQ4Mjc0ZTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg4
OSw0ICs4ODksNyBAQCBjdXN0b20gUGF0Y2gKIGN1c3RvbSBDQ2FsbAogY3VzdG9tIENvbGRDQ2Fs
bAogCisjIFRoaXMgaXMgYSBzcGVjaWFsIHdhc20gb3Bjb2RlIHRoYXQgYnJhbmNoZXMgdG8gYSB0
cmFwIGhhbmRsZXIuIExpa2UgUGF0Y2ggdGhpcyB0YWtlcyBhIHNwZWNpYWwgdGhhdAorIyBtdXN0
IGJlIHRoZSBmaXJzdCBvcGVyYW5kLgorY3VzdG9tIFdhc21Cb3VuZHNDaGVjawogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGVjMjRlNGRjNjBjYTUyOWVkMTBjOTE4MzUxYzQ0
MjQ0NTZlODVhMDcuLjA2ZDVlODlkMjQ4NmM4MGEyNDUyNmI0YmVhNTAzNjNjNTZkYTc3M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk
ZSAiQjNWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
QjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgog
I2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRl
ICJHUFJJbmZvLmgiCkBAIC0xMzcyOSw2ICsxMzczMCwzNyBAQCB2b2lkIHRlc3RPcHRpbWl6ZU1h
dGVyaWFsaXphdGlvbigpCiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit2b2lkIHRlc3RXYXNtQm91
bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEdQ
UlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgcHJvYy5waW5SZWdpc3Rl
cihwaW5uZWQpOworCisgICAgcHJvYy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgYWN0dWFsT2Zmc2V0
KSB7CisgICAgICAgIENIRUNLX0VRKHBpbm5lZEdQUiwgcGlubmVkKTsKKyAgICAgICAgQ0hFQ0tf
RVEoYWN0dWFsT2Zmc2V0LCBvZmZzZXQpOworCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5
cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBj
YWxsZWUKKyAgICAgICAgLy8gc2F2ZXMuCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogbGVmdCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBpZiAocG9pbnRlclR5cGUoKSAhPSBJbnQzMikKKyAgICAg
ICAgbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBs
ZWZ0KTsKKyAgICByb290LT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBsZWZ0LCBwaW5uZWQsIG9mZnNldCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDQyKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dDMyX3Q+KCpjb2RlLCAxLCAyICsgb2Zmc2V0KSwgMHg0Mik7CisgICAgQ0hFQ0tfRVEoaW52b2tl
PGludDMyX3Q+KCpjb2RlLCAzLCAyICsgb2Zmc2V0KSwgNDIpOworICAgIENIRUNLX0VRKGludm9r
ZTxpbnQzMl90PigqY29kZSwgMiwgMiArIG9mZnNldCksIDQyKTsKK30KKwogLy8gTWFrZSBzdXJl
IHRoZSBjb21waWxlciBkb2VzIG5vdCB0cnkgdG8gb3B0aW1pemUgYW55dGhpbmcgb3V0LgogTkVW
RVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKIHsKQEAgLTE1MTQ4LDcgKzE1MTgwLDcgQEAgdm9pZCBy
dW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0U29tZUVhcmx5UmVnaXN0ZXIoKSk7
CiAgICAgUlVOKHRlc3RQYXRjaHBvaW50VGVybWluYWxSZXR1cm5WYWx1ZSh0cnVlKSk7CiAgICAg
UlVOKHRlc3RQYXRjaHBvaW50VGVybWluYWxSZXR1cm5WYWx1ZShmYWxzZSkpOwotICAgIAorCiAg
ICAgUlVOKHRlc3RNZW1vcnlGZW5jZSgpKTsKICAgICBSVU4odGVzdFN0b3JlRmVuY2UoKSk7CiAg
ICAgUlVOKHRlc3RMb2FkRmVuY2UoKSk7CkBAIC0xNTE2OCw3ICsxNTIwMCwxMSBAQCB2b2lkIHJ1
bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkp
OwogICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRp
bWl6ZU1hdGVyaWFsaXphdGlvbigpKTsKLSAgICAKKworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0No
ZWNrKDApKTsKKyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygxMDApKTsKKyAgICBSVU4odGVz
dFdhc21Cb3VuZHNDaGVjaygxMDAwMCkpOworCiAgICAgaWYgKGlzWDg2KCkpIHsKICAgICAgICAg
UlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAxLCBBaXI6OkJy
YW5jaFRlc3QzMiwgQWlyOjpBcmc6OlRtcCkpOwogICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFu
ZEltbUZ1c2lvbihJZGVudGl0eSwgSW50NjQsIDB4ZmYsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6
OkFyZzo6VG1wKSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZyBi
L1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCmluZGV4IDRjNzBmNzk1ZGQ3MzY1OWIwZjBj
OWJiODFjOWUzYmZmNmM2NmY4NGIuLmRlM2NhZWNkZTIxMTIyYjNkNWMxNDExZmM2NDdjZTI3Nzg2
NjRkN2UgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dl
YnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMTAtMTIg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQjMgbmVl
ZHMgYSBzcGVjaWFsIFdhc21Cb3VuZHNDaGVjayBPcGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgZG9jcyBmb3IgdGhlIG5ldyBX
YXNtQm91bmRzQ2hlY2sgb3Bjb2RlLgorCisgICAgICAgICogZG9jcy9iMy9pbnRlcm1lZGlhdGUt
cmVwcmVzZW50YXRpb24uaHRtbDoKKwogMjAxNi0xMC0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IGNvbnRyaWJ1dG9ycy5qc29uIHRv
IGEgZmxhdCBsaXN0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50
ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3Mv
YjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKaW5kZXggYmRjNTdhMTA0OTdiMzFm
ZDkyNzYwN2ZjNjU5MGFiNDdmMzI0NzVkZi4uNjJhYzk3Y2IzY2VhNDZkYWJiZTBmODQ2YzcxZTZk
YmYyYzk3Mzk3YSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVy
bWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9j
cy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbApAQCAtNTM3LDYgKzUzNywxNiBA
QCBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIHRvIGFuIGluc3RydWN0aW9uIHRo
YXQgYnJhbmNoZXMgdG8gdGhlIGV4aXQgaWYgQGEgJmd0Oz0gQGIgb3IgaWYgZWl0aGVyIEBhIG9y
IEBiIGFyZQogICAgICAgICBOYU4uICBNdXN0IHVzZSB0aGUgQ2hlY2tWYWx1ZSBjbGFzcy48L2Rk
PgogCisgICAgICA8ZHQ+Vm9pZCBXYXNtQm91bmRzQ2hlY2soSW50MzIsIHBpbm5lZEdQUiwgb2Zm
c2V0KTwvZHQ+CisgICAgICA8ZGQ+U3BlY2lhbCBXYXNtIG9wY29kZS4gVGhpcyBicmFuY2hlcyBv
biB0aGUgZmlyc3QgY2hpbGQuIElmIHRoZSBmaXJzdCBjaGlsZCBwbHVzIHRoZSBvZmZzZXQKKyAg
ICAgICAgcHJvZHVjZXMgYSBJbnQ2NCBsZXNzIHRoYW4gdG8gdGhlIHBpbm5lZEdQUiB0aGlzIGZh
bGxzIHRocm91Z2guIE90aGVyd2lzZSwgaXQgYnJhbmNoZXMgdG8KKyAgICAgICAgdGhlIGV4aXQg
cGF0aCBnZW5lcmF0ZWQgYnkgdGhlIHBhc3NlZCBnZW5lcmF0b3IuIFVubGlrZSB0aGUgUGF0Y2gv
Q2hlY2sgZmFtaWx5LCB0aGUKKyAgICAgICAgZ2VuZXJhdG9yIHVzZWQgYnkgV2FzbUJvdW5kc0No
ZWNrIHNvdWxkIGJlIHNldCBvbiB0aGUgUHJvY3VkZXIgaXRzZWxmLiBUaGUgR1JQUmVnIHBhc3Nl
ZCBpbgorICAgICAgICBwaW5uZWRHUFIgbXVzdCBhbHNvIGJlIG1hcmtlZCBhcyBwaW5uZWQgYnkg
Y2FsbGluZyB0aGUgUHJvY2VkdXJlJ3MgcGlubmluZyBBUEkuIEIzIGFzc3VtZXMKKyAgICAgICAg
dGhlIFdhc21Cb3VuZHNDaGVjayB3aWxsIHNpZGUtZXhpdCB3aGVuIHRoZSBpdCBicmFuY2hlcywg
c28gdGhlIGdlbmVyYXRvciBtdXN0IGRvIHNvbWUga2luZAorICAgICAgICBvZiB0ZXJtaW5hdGlv
bi4gSW4gV2FzbSB0aGlzIGlzIHVzZWQgdG8gdHJhcCBhbmQgdW53aW5kIGJhY2sgdG8gSlMuIE11
c3QgdXNlIHRoZQorICAgICAgICBXYXNtQm91bmRzQ2hlY2tWYWx1ZSBjbGFzcy48L2RkPgorCiAg
ICAgICA8ZHQ+Vm9pZCBVcHNpbG9uKFQsIF5waGkpPC9kdD4KICAgICAgIDxkZD5CMyB1c2VzIFNT
QS4gIFNTQSByZXF1aXJlcyB0aGF0IGVhY2ggdmFyaWFibGUgZ2V0cyBhc3NpZ25lZCB0byBvbmx5
IG9uY2UgYW55d2hlcmUgaW4KICAgICAgICAgdGhlIHByb2NlZHVyZS4gIEJ1dCB0aGF0IGRvZXNu
J3Qgd29yayBpZiB5b3UgaGF2ZSBhIHZhcmlhYmxlIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgdGhl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291413</attachid>
            <date>2016-10-12 16:23:10 -0700</date>
            <delta_ts>2016-10-12 16:50:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163246-20161012161945.patch</filename>
            <type>text/plain</type>
            <size>31356</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi5iZDZmZWVhZDcxY2MxMWVh
N2E5OGYwYzc5NGIyNDg3Y2I2ZjFlMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV2FzbUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6OlZh
bHVlIHN1YmNsYXNzIGZvciBpdCwKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdhc21C
b3VuZHNDaGVja1ZhbHVlIHRha2VzIHRocmVlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gVGhlIGZp
cnN0IGlzCisgICAgICAgIHRoZSBJbnQzMiBwb2ludGVyIHZhbHVlIHVzZWQgdG8gYmUgdXNlZCBi
eSB0aGUgTG9hZC4gIE5leHQgaXMgdGhlIHBpbm5lZCByZWdpc3Rlci4gVGhlCisgICAgICAgIHBp
bm5lZCByZWdpc3RlciBtdXN0IGJlIHBpbm5lZCBieSBjYWxsaW5nIHByb2Muc2V0UGlubmVkKCkg
cHJpb3IgdG8gY29tcGlsaW5nIHRoZQorICAgICAgICBQcm9jZWR1cmUuIExhc3RseSwgdGhlIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGFuIG9mZnNldC4gVGhlIFdhc21Cb3VuZHNDaGVja1Zh
bHVlIGlzCisgICAgICAgIHdpbGwgdGhlbiBlbWl0IGNvZGUgdGhhdCBzaWRlLWV4aXRzIGlmIHRo
ZSBJbnQ2NCBzdW0gb2YgdGhlIG9mZnNldCBhbmQgcG9pbnRlciBpcyBncmVhdGVyCisgICAgICAg
IHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIGluIHRoZSBwaW5uZWRSZWdpc3Rlci4gSW5zdGVh
ZCBvZiB0YWtpbmcgYSBnZW5lcmF0b3IgZm9yIGVhY2gKKyAgICAgICAgdmFsdWUgbGlrZSBDaGVj
ay9QYXRjaHBvaW50LCBXYXNtQm91bmRzQ2hlY2sgZ2V0cyBpdHMgZ2VuZXJhdG9yIGRpcmVjdGx5
IG9mZiBBaXI6OkNvZGUuIEluCisgICAgICAgIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgQ3Vz
dG9tIG9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2Ug
c2hvdWxkIGFkZCBXYXNtQm91bmRzQ2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUgcmVk
dW5kYW50IGJvdW5kcworICAgICAgICBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNhbiBy
ZW1vdmUgYW55IFdhc21Cb3VuZHNDaGVjayBkb21pbmF0ZWQgYnkgYW5vdGhlcgorICAgICAgICBX
YXNtQm91bmRzQ2hlY2sgd2l0aCB0aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFuZCBh
IGxhcmdlciBvZmZzZXQuCisKKyAgICAgICAgKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21Cb3Vu
ZHNDaGVja1ZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVlOjpX
YXNtQm91bmRzQ2hlY2tWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tW
YWx1ZTo6ZHVtcE1ldGEpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNM
b3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIz
L0IzT3Bjb2RlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICog
YjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcik6CisgICAgICAg
ICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6c2V0V2Fz
bUJvdW5kc0NoZWNrR2VuZXJhdG9yKToKKyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAg
ICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAgKiBiMy9CM1dh
c21Cb3VuZHNDaGVja1ZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5k
c0NoZWNrVmFsdWU6OmFjY2VwdHMpOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNr
VmFsdWU6OnBpbm5lZEdQUik6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1
ZTo6b2Zmc2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpDb2RlOjpzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpDb2RlOjp3YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAqIGIz
L2Fpci9BaXJDdXN0b20uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hl
Y2tDdXN0b206OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKiBiMy9haXIvQWlyQ3VzdG9tLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Zm9yRWFjaEFyZyk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6aXNWYWxpZEZv
cm1TdGF0aWMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0b206
OmFkbWl0c1N0YWNrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNrQ3Vz
dG9tOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNr
Q3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9B
aXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlND
OjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAy
MDE2LTEwLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgdmFyaWFibGVzIGluIGFycmF5UHJvdG9GdW5jU3BsaWNlKCkgdG8gbWF0Y2ggbmFtZXMgaW4g
dGhlIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBmZTFhZDU1NTVlZTViZWI4OWExOGM1NzI1MzJiYjE1ODBm
NTQzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21Cb3Vu
ZHNDaGVja1ZhbHVlKCkKK3sKK30KKworV2FzbUJvdW5kc0NoZWNrVmFsdWU6Oldhc21Cb3VuZHND
aGVja1ZhbHVlKE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwdHIsIEdQUlJlZyBwaW5uZWRHUFIsIHVu
c2lnbmVkIG9mZnNldCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIFdhc21Cb3VuZHNDaGVj
aywgb3JpZ2luLCBwdHIpCisgICAgLCBtX3Bpbm5lZEdQUihwaW5uZWRHUFIpCisgICAgLCBtX29m
ZnNldChvZmZzZXQpCit7Cit9CisKK3ZvaWQgV2FzbUJvdW5kc0NoZWNrVmFsdWU6OmR1bXBNZXRh
KENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0
LnByaW50KGNvbW1hLCAic2l6ZVJlZ2lzdGVyID0gIiwgbV9waW5uZWRHUFIsICIsIG9mZnNldCA9
ICIsIG1fb2Zmc2V0KTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU3
Y2VmZjY2MTQ2Yjk5OGM1MTNiYTA3ZTE5NmJjMGZjY2FiYzJkOWYuLmFhZTcxYjQyZjA0NTJjODU0
ZTk4YzRlODkzYjFiOGM3ZmYzY2FmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE3Miw2ICsxNzIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIz
L0IzVmFsdWVSZXAuY3BwCiAgICAgYjMvQjNWYXJpYWJsZS5jcHAKICAgICBiMy9CM1ZhcmlhYmxl
VmFsdWUuY3BwCisgICAgYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAKIAogICAgIGJpbmRp
bmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0NGIyYzRkMzI2MmQ0MTk1MTRjOTE0
Y2VkYmYzYzVhYTllZmYzZmEuLjk4NzRmNDk2NDJhN2Q3NDFjYTA2OTRlMWFkZjVmY2MyODVmZjI4
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjA2LDYgKzEyMDYsOCBAQAog
CQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5
QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICovOyB9OwogCQk1MzEzNzRCRDFENUNFNjc2MDBBRjdB
MEIgLyogV0FTTVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzMTM3NEJDMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXQVNNUGxhbi5oICovOyB9OwogCQk1
MzEzNzRCRjFENUNFOTUwMDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8q
IFdBU01QbGFuLmNwcCAqLzsgfTsKKwkJNTM0MUZDNzAxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2Fz
bUJvdW5kc0NoZWNrVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNr
VmFsdWUuY3BwICovOyB9OworCQk1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUu
aCAqLzsgfTsKIAkJNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3
OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0ODZCQkIxQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlw
ZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLzsgfTsKIAkJ
NTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAx
MkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKQEAgLTM0NDEsNiArMzQ0Myw4IEBA
CiAJCTUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01QbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEIzV2FzbUJv
dW5kc0NoZWNrVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQxRkM3
MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHBhdGggPSBi
My9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5
cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBU
eXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODU3LDYgKzQ4NjEsOCBAQAogCQkJCTBG
MzM4RTE4MUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJ
MEZFQzg0QkExQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCURD
RkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi8sCisJCQkJNTM0
MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovLAor
CQkJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgg
Ki8sCiAJCQkJMEY2QjhBREUxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2Vz
LmNwcCAqLywKIAkJCQkwRjZCOEFERjFDNEVGRTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2Fs
RWRnZXMuaCAqLywKIAkJCQlEQzlBMEMxQzFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVj
dGlvbi5jcHAgKi8sCkBAIC03NjUwLDYgKzc2NTYsNyBAQAogCQkJCTcyQUFGN0NFMUQwRDMxQjMw
MDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjFFM0E2NzE1M0EyMUUyMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxh
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Ns
b3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzQxRkM3MjFEQUMzNDNDMDBF
N0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
QzlERDMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY4MkZCMzE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDAxN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZl
cnNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzY1LDYgKzkzNzIsNyBAQAogCQkJCTJB
QUNFNjNDMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY3NjZEMkYxNUE4RENFMDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91
dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQURGQTI2MzE4RUYzNTQwMDA0RjlGQ0MgLyog
R0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNDFGQzcwMURBQzMzRTUwMEU3RTRE
NyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTMz
MjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMDMzMkMzMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDI4MDg1NTEwN0VDMEU3MDAxM0U3QjIgLyogR2V0dGVyU2V0dGVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cAppbmRleCBkNjFhMDc2NGE3YmYyYjU2MDNmMmNiNDkwZjBlZWQ4OTUxNjVjZTYyLi41Yzg5Y2Jk
Yjk2OTI3MzNkNDQ3MzFmNmFiNTZkOGQxYWFjNzZmMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtNTY4LDEzICs1NjgsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIGxvYWRQcm9taXNlKGxvYWRWYWx1ZSwgTG9hZCk7CiAgICAgfQogCisgICAg
QXJnIGltbShpbnQ2NF90IGludFZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKEFyZzo6aXNWYWxp
ZEltbUZvcm0oaW50VmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW1tKGludFZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIEFyZygpOworICAgIH0KKwogICAgIEFyZyBpbW0oVmFsdWUqIHZh
bHVlKQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlLT5oYXNJbnQoKSkgewotICAgICAgICAgICAg
aW50NjRfdCBpbnRWYWx1ZSA9IHZhbHVlLT5hc0ludCgpOwotICAgICAgICAgICAgaWYgKEFyZzo6
aXNWYWxpZEltbUZvcm0oaW50VmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBBcmc6Omlt
bShpbnRWYWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlLT5oYXNJbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBpbW0odmFsdWUtPmFzSW50KCkpOwogICAgICAgICByZXR1cm4gQXJn
KCk7CiAgICAgfQogCkBAIC0yNjI3LDYgKzI2MzEsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQjM6Oldhc21Cb3VuZHNDaGVjazog
eworICAgICAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+YXM8
V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCk7CisKKyAgICAgICAgICAgIFZhbHVlKiBwdHIgPSB2YWx1
ZS0+Y2hpbGQoMCk7CisKKyAgICAgICAgICAgIEFyZyB0ZW1wID0gbV9jb2RlLm5ld1RtcChBcmc6
OkdQKTsKKyAgICAgICAgICAgIGFwcGVuZChJbnN0KE1vdmUzMiwgdmFsdWUsIHRtcChwdHIpLCB0
ZW1wKSk7CisgICAgICAgICAgICBpZiAodmFsdWUtPm9mZnNldCgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGltbSh2YWx1ZS0+b2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
QWRkNjQsIGltbSh2YWx1ZS0+b2Zmc2V0KCkpLCB0ZW1wKTsKKyAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgQXJnIGJpZ0ltbSA9IG1fY29kZS5uZXdUbXAoQXJnOjpH
UCk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1ZS0+
b2Zmc2V0KCkpLCBiaWdJbW0pOworICAgICAgICAgICAgICAgICAgICBhcHBlbmQoQWRkNjQsIGJp
Z0ltbSwgdGVtcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYXBwZW5kKEluc3QoQWlyOjpXYXNtQm91bmRzQ2hlY2ssIHZhbHVlLCB0ZW1wLCBBcmcodmFs
dWUtPnBpbm5lZEdQUigpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBVcHNpbG9uOiB7CiAgICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBtX3ZhbHVl
LT5jaGlsZCgwKTsKICAgICAgICAgICAgIGFwcGVuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuY3BwCmluZGV4IGYwM2E5NGNlZGVmZmU4NGYyOWM0Njk1ZWYzMzg5MTY2MjE1YjUzOTYu
LmUxMDBkM2IzOWZmNTJjMjIyODJjY2Q3Y2Q1OTk3MWVjYWMyNDc3ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtMjcyLDYgKzI3Miw5IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgQ2hlY2s6CiAg
ICAgICAgIG91dC5wcmludCgiQ2hlY2siKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgV2Fz
bUJvdW5kc0NoZWNrOgorICAgICAgICBvdXQucHJpbnQoIldhc21Cb3VuZHNDaGVjayIpOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICBvdXQucHJpbnQoIlVwc2ls
b24iKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRl
eCBjOTc3MzQ3NzBkYzk1MjVjOGJmY2I2ODdhZTUwMWVmNWMyOWE3MGM0Li5lMzJlOWQzMDIwZGY2
Mzk2ZDA2MDI5YzdmYTU1MjMzOTg5ODBlMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuaApAQCAtMjA5LDYgKzIwOSwxMiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIC8v
IFdhcm1BbnkuIEl0IHdpbGwgbm90IGhhdmUgYW4gb3V0cHV0IGNvbnN0cmFpbnQuCiAgICAgQ2hl
Y2ssCiAKKyAgICAvLyBTcGVjaWFsIFdhc20gb3Bjb2RlIHRoYXQgdGFrZXMgYSBJbnQzMiwgYSBz
cGVjaWFsIHBpbm5lZCBncHIgYW5kIGFuIG9mZnNldC4gVGhpcyBub2RlIGV4aXN0cworICAgIC8v
IHRvIGFsbG93IHVzIHRvIENTRSBXYXNtQm91bmRzQ2hlY2tzIGlmIGJvdGggdXNlIHRoZSBzYW1l
IHBvaW50ZXIgYW5kIG9uZSBkb21pbmF0ZXMgdGhlIG90aGVyLgorICAgIC8vIFdpdGhvdXQgc29t
ZSBzdWNoIG5vZGUgQjMgd291bGQgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBpbm5lciB3b3JraW5ncyBvZiB3YXNtCisgICAgLy8gdG8gYmUgYWJsZSB0byBwZXJmb3JtIHN1
Y2ggb3B0aW1pemF0aW9ucy4KKyAgICBXYXNtQm91bmRzQ2hlY2ssCisKICAgICAvLyBTU0Egc3Vw
cG9ydCwgaW4gdGhlIHN0eWxlIG9mIERGRyBTU0EuCiAgICAgVXBzaWxvbiwgLy8gVGhpcyB1c2Vz
IHRoZSBVcHNpbG9uVmFsdWUgY2xhc3MuCiAgICAgUGhpLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5jcHAKaW5kZXggMjlmYzFjNDEzMzkwODYyNjJmMzdjOTM5NjkyOGIzNmQ5
YTIwOWI0YS4uNmNkZTJmMTEwNmY3NGQwZjdhNzg5ODNkMWRmNGFlY2I5YWMzYzFiNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBAIC0zNDgsNiArMzQ4LDExIEBA
IHZvaWQgUHJvY2VkdXJlOjpzZXRCbG9ja09yZGVySW1wbChWZWN0b3I8QmFzaWNCbG9jayo+JiBi
bG9ja3MpCiAgICAgfQogfQogCit2b2lkIFByb2NlZHVyZTo6c2V0V2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yKFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I+IGdlbmVyYXRvcikKK3sKKyAg
ICBjb2RlKCkuc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKGdlbmVyYXRvcik7Cit9CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5kZXggZDFjNzIyZjRhMmZhZThmYTA5OGQ3
NmJlODYzYTU4ZTY1NzgyNWRiNy4uMjIzNjE0NWVmNTUzZjFhOWQyNTMzMmQxYzk4OTI3MzI0ODIx
NTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAgLTU4LDYgKzU4
LDkgQEAgY2xhc3MgVmFyaWFibGU7CiAKIG5hbWVzcGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9CiAK
K3R5cGVkZWYgdm9pZCBXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBl
cnMmLCBHUFJSZWcsIHVuc2lnbmVkKTsKK3R5cGVkZWYgU2hhcmVkVGFzazxXYXNtQm91bmRzQ2hl
Y2tHZW5lcmF0b3JGdW5jdGlvbj4gV2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yOworCiAvLyBUaGlz
IHJlcHJlc2VudHMgQjMncyB2aWV3IG9mIGEgcGllY2Ugb2YgY29kZS4gTm90ZSB0aGF0IHRoaXMg
b2JqZWN0IG11c3QgZXhpc3QgaW4gYSAxOjEKIC8vIHJlbGF0aW9uc2hpcCB3aXRoIEFpcjo6Q29k
ZS4gQjM6OlByb2NlZHVyZSBhbmQgQWlyOjpDb2RlIGFyZSBqdXN0IGRpZmZlcmVudCBmYWNhZGVz
IG9mIHRoZSBCMwogLy8gY29tcGlsZXIncyBrbm93bGVkZ2UgYWJvdXQgYSBwaWVjZSBvZiBjb2Rl
LiBTb21lIGtpbmRzIG9mIHN0YXRlIGFyZW4ndCBwZXJmZWN0IGZpdHMgZm9yIGVpdGhlcgpAQCAt
MjIxLDYgKzIyNCwxNCBAQCBwdWJsaWM6CiAgICAgUENUb09yaWdpbk1hcCYgcGNUb09yaWdpbk1h
cCgpIHsgcmV0dXJuIG1fcGNUb09yaWdpbk1hcDsgfQogICAgIFBDVG9PcmlnaW5NYXAgcmVsZWFz
ZVBDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBXVEZNb3ZlKG1fcGNUb09yaWdpbk1hcCk7IH0KIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFJl
ZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I+KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+CisgICAgdm9pZCBzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRv
cihSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPihjcmVhdGVTaGFyZWRUYXNrPFdhc21C
b3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uPihmdW5jdG9yKSkpOworICAgIH0KKwogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRleCBhZmMwMGEyZWFiNTBjZmIzYmVmMWUxODQyNTk3
MDI1MTQ0NjJiMWY2Li5iMDYzNDRlNDA1N2JmMzExZGQ2ZTZmNmUxMzdjMWYwMWRkMDcwOTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUg
IkIzQXJndW1lbnRSZWdWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIK
ICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKICNpbmNsdWRlICJCM1Zh
cmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MTMsNiArNDE1LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+YXM8U3RhY2ttYXBWYWx1ZT4oKS0+
Y29uc3RyYWluZWRDaGlsZCgwKS5yZXAoKSA9PSBWYWx1ZVJlcDo6V2FybUFueSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrbWFwKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgorICAg
ICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJl
bigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUobV9wcm9jZWR1cmUuY29kZSgpLmlzUGlubmVkKHZhbHVlLT5hczxX
YXNtQm91bmRzQ2hlY2tWYWx1ZT4oKS0+cGlubmVkR1BSKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKG1fcHJvY2VkdXJlLmNvZGUoKS53YXNtQm91bmRzQ2hl
Y2tHZW5lcmF0b3IoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVXBzaWxvbjoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmluZGV4IGEwODdmNTFlY2UxZGQyNWUx
YzIyNDM2YTgzNzAzNzM3ODcwMzg0MGQuLjViNDExOTg2MDZjNTY3YTc3ZDViZTg0MTJjNWE2ZWQ5
NGU5Zjg3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKQEAgLTYxNiw2ICs2
MTYsMTAgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoK
ICAgICAgICAgcmVzdWx0ID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CisgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRy
dWU7CisgICAgICAgIHJlc3VsdC5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBVcHNpbG9uOgogICAgIGNhc2UgU2V0OgogICAgICAgICByZXN1bHQud3JpdGVz
TG9jYWxTdGF0ZSA9IHRydWU7CkBAIC04MDksNiArODEzLDcgQEAgVHlwZSBWYWx1ZTo6dHlwZUZv
cihLaW5kIGtpbmQsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCiAgICAg
Y2FzZSBSZXR1cm46CiAgICAgY2FzZSBPb3BzOgogICAgIGNhc2UgRW50cnlTd2l0Y2g6CisgICAg
Y2FzZSBXYXNtQm91bmRzQ2hlY2s6CiAgICAgICAgIHJldHVybiBWb2lkOwogICAgIGNhc2UgU2Vs
ZWN0OgogICAgICAgICBBU1NFUlQoc2Vjb25kQ2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIwMjU2MzQ4
NmY2NDI2MmJlMWY0YzVjZjE4MDhmNTAwNjdkY2FjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNWYWx1ZS5o
IgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKKworY2xhc3MgV2FzbUJvdW5kc0NoZWNrVmFsdWUgOiBwdWJsaWMgVmFsdWUgeworcHVi
bGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgfldhc21Cb3VuZHNDaGVj
a1ZhbHVlKCk7CisKKyAgICBHUFJSZWcgcGlubmVkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9waW5u
ZWRHUFI7IH0KKyAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9j
ZWR1cmU7CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBXYXNtQm91bmRzQ2hlY2tWYWx1ZShPcmln
aW4sIFZhbHVlKiBwdHIsIEdQUlJlZyBwaW5uZWRHUFIsIHVuc2lnbmVkIG9mZnNldCk7CisKKyAg
ICBHUFJSZWcgbV9waW5uZWRHUFI7CisgICAgdW5zaWduZWQgbV9vZmZzZXQ7Cit9OworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCmluZGV4IDgzY2IyZTE0MDYwZGNjYjJmNGY2ZjYw
N2JhMDYxY2VjMGU1NzkyNWYuLjZkNGExNDcyMjM0YTNkNTkzYzQ5ODhiM2ViODc5ZGRiY2YxZjZm
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCkBAIC01Miw2ICs1Miw5
IEBAIG5hbWVzcGFjZSBBaXIgewogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBDQ2Fs
bFNwZWNpYWw7CiAKK3R5cGVkZWYgdm9pZCBXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5jdGlv
bihDQ2FsbEhlbHBlcnMmLCBHUFJSZWcsIHVuc2lnbmVkKTsKK3R5cGVkZWYgU2hhcmVkVGFzazxX
YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5jdGlvbj4gV2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9y
OworCiAvLyBUaGlzIGlzIGFuIElSIHRoYXQgaXMgdmVyeSBjbG9zZSB0byB0aGUgYmFyZSBtZXRh
bC4gSXQgcmVxdWlyZXMgYWJvdXQgNDB4IG1vcmUgYnl0ZXMgdGhhbiB0aGUKIC8vIGdlbmVyYXRl
ZCBtYWNoaW5lIGNvZGUgLSBmb3IgZXhhbXBsZSBpZiB5b3UncmUgZ2VuZXJhdGluZyAxTUIgb2Yg
bWFjaGluZSBjb2RlLCB5b3UgbmVlZCBhYm91dAogLy8gNDBNQiBvZiBBaXIuCkBAIC0yNjEsNiAr
MjY0LDEzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IGNoYXIqIGxhc3RQaGFzZU5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RQaGFzZU5hbWU7IH0KIAorICAgIHZvaWQgc2V0V2FzbUJvdW5kc0No
ZWNrR2VuZXJhdG9yKFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I+IGdlbmVyYXRvcikK
KyAgICB7CisgICAgICAgIG1fd2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yID0gZ2VuZXJhdG9yOwor
ICAgIH0KKworICAgIFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I+IHdhc21Cb3VuZHND
aGVja0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9y
OyB9CisKICAgICAvLyBUaGlzIGlzIGEgaGFzaCBvZiB0aGUgY29kZS4gWW91IGNhbiB1c2UgdGhp
cyBpZiB5b3Ugd2FudCB0byBwdXQgY29kZSBpbnRvIGEgaGFzaHRhYmxlLCBidXQKICAgICAvLyBp
dCdzIG1haW5seSBmb3IgdmFsaWRhdGluZyB0aGUgcmVzdWx0cyBmcm9tIEpTQWlyLgogICAgIHVu
c2lnbmVkIGpzSGFzaCgpIGNvbnN0OwpAQCAtMjk4LDYgKzMwOCw3IEBAIHByaXZhdGU6CiAgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFZlY3RvcjxG
cmVxdWVudGVkQmxvY2s+IG1fZW50cnlwb2ludHM7IC8vIFRoaXMgaXMgZW1wdHkgdW50aWwgYWZ0
ZXIgbG93ZXJFbnRyeVN3aXRjaCgpLgogICAgIFZlY3RvcjxDQ2FsbEhlbHBlcnM6OkxhYmVsPiBt
X2VudHJ5cG9pbnRMYWJlbHM7IC8vIFRoaXMgaXMgZW1wdHkgdW50aWwgY29kZSBnZW5lcmF0aW9u
LgorICAgIFJlZlB0cjxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I+IG1fd2FzbUJvdW5kc0NoZWNr
R2VuZXJhdG9yOwogICAgIGNvbnN0IGNoYXIqIG1fbGFzdFBoYXNlTmFtZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmNwcAppbmRleCBmNmViNWYzOGQxZmEw
ZGNmNmE1ZDRlNmU5YTBmMDVmNmEzYjZjMmQ0Li4yYTJkZjJmYmRjN2I5NzRhYTIzZDg5ZDcyNGI4
MmQwYzU0ODAyMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20u
Y3BwCkBAIC0xNzgsNiArMTc4LDE3IEBAIENDYWxsSGVscGVyczo6SnVtcCBTaHVmZmxlQ3VzdG9t
OjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmLCBHZW5lcmF0aW9uCiAgICAgcmV0
dXJuIENDYWxsSGVscGVyczo6SnVtcCgpOwogfQogCitib29sIFdhc21Cb3VuZHNDaGVja0N1c3Rv
bTo6aXNWYWxpZEZvcm0oSW5zdCYgaW5zdCkKK3sKKyAgICBpZiAoaW5zdC5hcmdzLnNpemUoKSAh
PSAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFpbnN0LmFyZ3NbMF0uaXNUbXAo
KSAmJiAhaW5zdC5hcmdzWzBdLmlzU29tZUltbSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gaW5zdC5hcmdzWzFdLmlzUmVnKCk7Cit9CisKKwogfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCmluZGV4IDhiOTBmZWYwZTIwN2Y3ZTVkNmRkNzQz
ZDUxYzYwNGQ4ODI4ZDI1NTYuLmIwZDU1Y2RmYWMzNTA5YWQwMzkzYTQxZjAxZTVhZmE4NTdmODY1
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaApAQCAtMjcsOSAr
MjcsMTIgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisj
aW5jbHVkZSAiQWlyR2VuZXJhdGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJBaXJJbnN0LmgiCiAj
aW5jbHVkZSAiQWlyU3BlY2lhbC5oIgotI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCkBAIC0yNzMs
NiArMjc2LDUzIEBAIHN0cnVjdCBFbnRyeVN3aXRjaEN1c3RvbSA6IHB1YmxpYyBDb21tb25DdXN0
b21CYXNlPEVudHJ5U3dpdGNoQ3VzdG9tPiB7CiAgICAgfQogfTsKIAorc3RydWN0IFdhc21Cb3Vu
ZHNDaGVja0N1c3RvbSA6IHB1YmxpYyBDb21tb25DdXN0b21CYXNlPFdhc21Cb3VuZHNDaGVja0N1
c3RvbT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgc3RhdGljIHZvaWQgZm9y
RWFjaEFyZyhJbnN0JiBpbnN0LCBjb25zdCBGdW5jJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAg
ZnVuY3RvcihpbnN0LmFyZ3NbMF0sIEFyZzo6VXNlLCBBcmc6OkdQLCBBcmc6OldpZHRoNjQpOwor
ICAgICAgICBmdW5jdG9yKGluc3QuYXJnc1sxXSwgQXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6V2lk
dGg2NCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAg
IHN0YXRpYyBib29sIGlzVmFsaWRGb3JtU3RhdGljKEFyZ3VtZW50cy4uLikKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRm9ybShJ
bnN0Jik7CisKKyAgICBzdGF0aWMgYm9vbCBhZG1pdHNTdGFjayhJbnN0JiwgdW5zaWduZWQpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgaXNU
ZXJtaW5hbChJbnN0JikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIGJvb2wgaGFzTm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoSW5zdCYpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ0NhbGxIZWxwZXJz
OjpKdW1wIGdlbmVyYXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9u
Q29udGV4dCYgY29udGV4dCkKKyAgICB7CisgICAgICAgIFdhc21Cb3VuZHNDaGVja1ZhbHVlKiB2
YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4oKTsKKyAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG91dE9mQm91bmRzID0gSW5zdChBaXI6OkJyYW5jaDY0LCB2YWx1
ZSwgQXJnOjpyZWxDb25kKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsKSwgaW5zdC5hcmdzWzBd
LCBpbnN0LmFyZ3NbMV0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisKKyAgICAgICAgY29udGV4
dC5sYXRlUGF0aHMuYXBwZW5kKGNyZWF0ZVNoYXJlZFRhc2s8R2VuZXJhdGlvbkNvbnRleHQ6Okxh
dGVQYXRoRnVuY3Rpb24+KAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgQWly
OjpHZW5lcmF0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcy5saW5r
KCZqaXQpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY29kZS0+d2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yKCktPnJ1bihqaXQsIHZhbHVlLT5waW5uZWRHUFIoKSwgdmFsdWUtPm9mZnNldCgpKTsK
KyAgICAgICAgICAgIH0pKTsKKworICAgICAgICAvLyBXZSBzYWlkIHdlIHdlcmUgbm90IGEgdGVy
bWluYWwuCisgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXAoKTsKKyAgICB9Cit9Owor
CiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMK
aW5kZXggZTk0NjcyZTc4NmQwNjgwMGE2ZDM2YTMxYjAyYTNlOTliNTg5MGIxMS4uMTc5NzJhM2Qz
NWE4Yjc4YTExZGU0ZTZjOWVmZDY5YTY3MjA2YzdiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC04ODksNCArODg5LDcgQEAgY3VzdG9t
IFBhdGNoCiBjdXN0b20gQ0NhbGwKIGN1c3RvbSBDb2xkQ0NhbGwKIAorIyBUaGlzIGlzIGEgc3Bl
Y2lhbCB3YXNtIG9wY29kZSB0aGF0IGJyYW5jaGVzIHRvIGEgdHJhcCBoYW5kbGVyLiBUaGlzIHVz
ZXMgdGhlIGdlbmVyYXRvciBsb2NhdGVkIHRvIEFpcjo6Q29kZQorIyB0byBwcm9kdWNlIHRoZSBz
aWRlLWV4aXQgY29kZS4KK2N1c3RvbSBXYXNtQm91bmRzQ2hlY2sKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmNwcAppbmRleCBlYzI0ZTRkYzYwY2E1MjllZDEwYzkxODM1MWM0NDI0NDU2ZTg1
YTA3Li5hYzMxYzNjZjYzMWRlMWYwYzU1ZjFiN2IwZjAwOTZhNmZhMzk3MzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkIzVmFs
aWRhdGUuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFi
bGVWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKICNpbmNsdWRl
ICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJGUFJJbmZvLmgiCiAjaW5jbHVkZSAiR1BSSW5m
by5oIgpAQCAtMTM3MjksNiArMTM3MzAsMzcgQEAgdm9pZCB0ZXN0T3B0aW1pemVNYXRlcmlhbGl6
YXRpb24oKQogICAgIENIRUNLKGZvdW5kKTsKIH0KIAordm9pZCB0ZXN0V2FzbUJvdW5kc0NoZWNr
KHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBHUFJSZWcgcGlu
bmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVk
KTsKKworICAgIHByb2Muc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIsIHVuc2lnbmVkIGFjdHVhbE9mZnNldCkgeworICAg
ICAgICBDSEVDS19FUShwaW5uZWRHUFIsIHBpbm5lZCk7CisgICAgICAgIENIRUNLX0VRKGFjdHVh
bE9mZnNldCwgb2Zmc2V0KTsKKworICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBi
ZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisg
ICAgICAgIC8vIHNhdmVzLgorICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgaml0LmVtaXRGdW5j
dGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGxlZnQgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgaWYgKHBvaW50ZXJUeXBlKCkgIT0gSW50MzIpCisgICAgICAgIGxlZnQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwgbGVmdCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
bGVmdCwgcGlubmVkLCBvZmZzZXQpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg0Mik7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBh
dXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90Pigq
Y29kZSwgMSwgMiArIG9mZnNldCksIDB4NDIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90
PigqY29kZSwgMywgMiArIG9mZnNldCksIDQyKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50MzJf
dD4oKmNvZGUsIDIsIDIgKyBvZmZzZXQpLCA0Mik7Cit9CisKIC8vIE1ha2Ugc3VyZSB0aGUgY29t
cGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lOTElO
RSBkb3VibGUgemVybygpCiB7CkBAIC0xNTE0OCw3ICsxNTE4MCw3IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFNvbWVFYXJseVJlZ2lzdGVyKCkpOwogICAgIFJV
Tih0ZXN0UGF0Y2hwb2ludFRlcm1pbmFsUmV0dXJuVmFsdWUodHJ1ZSkpOwogICAgIFJVTih0ZXN0
UGF0Y2hwb2ludFRlcm1pbmFsUmV0dXJuVmFsdWUoZmFsc2UpKTsKLSAgICAKKwogICAgIFJVTih0
ZXN0TWVtb3J5RmVuY2UoKSk7CiAgICAgUlVOKHRlc3RTdG9yZUZlbmNlKCkpOwogICAgIFJVTih0
ZXN0TG9hZEZlbmNlKCkpOwpAQCAtMTUxNjgsNyArMTUyMDAsMTIgQEAgdm9pZCBydW4oY29uc3Qg
Y2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpKTsKICAgICBS
VU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDMyKCkpOwogICAgIFJVTih0ZXN0T3B0aW1pemVNYXRl
cmlhbGl6YXRpb24oKSk7Ci0gICAgCisKKyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7
CisgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAwKSk7CisgICAgUlVOKHRlc3RXYXNtQm91
bmRzQ2hlY2soMTAwMDApKTsKKyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSA1KSk7CisKICAgICBpZiAoaXNYODYoKSkgewog
ICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwgSW50NjQsIDEs
IEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1wKSk7CiAgICAgICAgIFJVTih0ZXN0QnJh
bmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMHhmZiwgQWlyOjpCcmFuY2hUZXN0
MzIsIEFpcjo6QXJnOjpUbXApKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hh
bmdlTG9nIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKaW5kZXggNGM3MGY3OTVkZDcz
NjU5YjBmMGM5YmI4MWM5ZTNiZmY2YzY2Zjg0Yi4uNmNlMTNkODE2NjhiYWUwMGU4ODlkZDcyMWRi
NDMwMGIyZmMzYTE4YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cK
KysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Ni0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBCMyBuZWVkcyBhIHNwZWNpYWwgV2FzbUJvdW5kc0NoZWNrIE9wY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVXBkYXRlIHRoZSBkb2NzIGZvciB0aGUg
bmV3IFdhc21Cb3VuZHNDaGVjayBvcGNvZGUuCisKKyAgICAgICAgKiBkb2NzL2IzL2ludGVybWVk
aWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sOgorCiAyMDE2LTEwLTA5ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgY29udHJpYnV0b3JzLmpz
b24gdG8gYSBmbGF0IGxpc3QKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9i
My9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbCBiL1dlYnNpdGVzL3dlYmtpdC5vcmcv
ZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAppbmRleCBiZGM1N2ExMDQ5
N2IzMWZkOTI3NjA3ZmM2NTkwYWI0N2YzMjQ3NWRmLi42MmFjOTdjYjNjZWE0NmRhYmJlMGY4NDZj
NzFlNmRiZjJjOTczOTdhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMv
aW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9y
Zy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCkBAIC01MzcsNiArNTM3
LDE2IEBAIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgdG8gYW4gaW5zdHJ1Y3Rp
b24gdGhhdCBicmFuY2hlcyB0byB0aGUgZXhpdCBpZiBAYSAmZ3Q7PSBAYiBvciBpZiBlaXRoZXIg
QGEgb3IgQGIgYXJlCiAgICAgICAgIE5hTi4gIE11c3QgdXNlIHRoZSBDaGVja1ZhbHVlIGNsYXNz
LjwvZGQ+CiAKKyAgICAgIDxkdD5Wb2lkIFdhc21Cb3VuZHNDaGVjayhJbnQzMiwgcGlubmVkR1BS
LCBvZmZzZXQpPC9kdD4KKyAgICAgIDxkZD5TcGVjaWFsIFdhc20gb3Bjb2RlLiBUaGlzIGJyYW5j
aGVzIG9uIHRoZSBmaXJzdCBjaGlsZC4gSWYgdGhlIGZpcnN0IGNoaWxkIHBsdXMgdGhlIG9mZnNl
dAorICAgICAgICBwcm9kdWNlcyBhIEludDY0IGxlc3MgdGhhbiB0byB0aGUgcGlubmVkR1BSIHRo
aXMgZmFsbHMgdGhyb3VnaC4gT3RoZXJ3aXNlLCBpdCBicmFuY2hlcyB0bworICAgICAgICB0aGUg
ZXhpdCBwYXRoIGdlbmVyYXRlZCBieSB0aGUgcGFzc2VkIGdlbmVyYXRvci4gVW5saWtlIHRoZSBQ
YXRjaC9DaGVjayBmYW1pbHksIHRoZQorICAgICAgICBnZW5lcmF0b3IgdXNlZCBieSBXYXNtQm91
bmRzQ2hlY2sgc291bGQgYmUgc2V0IG9uIHRoZSBQcm9jdWRlciBpdHNlbGYuIFRoZSBHUlBSZWcg
cGFzc2VkIGluCisgICAgICAgIHBpbm5lZEdQUiBtdXN0IGFsc28gYmUgbWFya2VkIGFzIHBpbm5l
ZCBieSBjYWxsaW5nIHRoZSBQcm9jZWR1cmUncyBwaW5uaW5nIEFQSS4gQjMgYXNzdW1lcworICAg
ICAgICB0aGUgV2FzbUJvdW5kc0NoZWNrIHdpbGwgc2lkZS1leGl0IHdoZW4gdGhlIGl0IGJyYW5j
aGVzLCBzbyB0aGUgZ2VuZXJhdG9yIG11c3QgZG8gc29tZSBraW5kCisgICAgICAgIG9mIHRlcm1p
bmF0aW9uLiBJbiBXYXNtIHRoaXMgaXMgdXNlZCB0byB0cmFwIGFuZCB1bndpbmQgYmFjayB0byBK
Uy4gTXVzdCB1c2UgdGhlCisgICAgICAgIFdhc21Cb3VuZHNDaGVja1ZhbHVlIGNsYXNzLjwvZGQ+
CisKICAgICAgIDxkdD5Wb2lkIFVwc2lsb24oVCwgXnBoaSk8L2R0PgogICAgICAgPGRkPkIzIHVz
ZXMgU1NBLiAgU1NBIHJlcXVpcmVzIHRoYXQgZWFjaCB2YXJpYWJsZSBnZXRzIGFzc2lnbmVkIHRv
IG9ubHkgb25jZSBhbnl3aGVyZSBpbgogICAgICAgICB0aGUgcHJvY2VkdXJlLiAgQnV0IHRoYXQg
ZG9lc24ndCB3b3JrIGlmIHlvdSBoYXZlIGEgdmFyaWFibGUgdGhhdCBpcyBzdXBwb3NlZCB0byBi
ZSB0aGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291418</attachid>
            <date>2016-10-12 16:50:57 -0700</date>
            <delta_ts>2016-10-12 16:51:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163246-20161012164732.patch</filename>
            <type>text/plain</type>
            <size>31406</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi5lNWE3ODJiNjNjMWY1NDcz
MDA0MGU3OWFhODZiMjRkOGUzMjYzNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV2FzbUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6OlZh
bHVlIHN1YmNsYXNzIGZvciBpdCwKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdhc21C
b3VuZHNDaGVja1ZhbHVlIHRha2VzIHRocmVlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gVGhlIGZp
cnN0IGlzCisgICAgICAgIHRoZSBJbnQzMiBwb2ludGVyIHZhbHVlIHVzZWQgdG8gYmUgdXNlZCBi
eSB0aGUgTG9hZC4gIE5leHQgaXMgdGhlIHBpbm5lZCByZWdpc3Rlci4gVGhlCisgICAgICAgIHBp
bm5lZCByZWdpc3RlciBtdXN0IGJlIHBpbm5lZCBieSBjYWxsaW5nIHByb2Muc2V0UGlubmVkKCkg
cHJpb3IgdG8gY29tcGlsaW5nIHRoZQorICAgICAgICBQcm9jZWR1cmUuIExhc3RseSwgdGhlIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGFuIG9mZnNldC4gVGhlIFdhc21Cb3VuZHNDaGVja1Zh
bHVlIGlzCisgICAgICAgIHdpbGwgdGhlbiBlbWl0IGNvZGUgdGhhdCBzaWRlLWV4aXRzIGlmIHRo
ZSBJbnQ2NCBzdW0gb2YgdGhlIG9mZnNldCBhbmQgcG9pbnRlciBpcyBncmVhdGVyCisgICAgICAg
IHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIGluIHRoZSBwaW5uZWRSZWdpc3Rlci4gSW5zdGVh
ZCBvZiB0YWtpbmcgYSBnZW5lcmF0b3IgZm9yIGVhY2gKKyAgICAgICAgdmFsdWUgbGlrZSBDaGVj
ay9QYXRjaHBvaW50LCBXYXNtQm91bmRzQ2hlY2sgZ2V0cyBpdHMgZ2VuZXJhdG9yIGRpcmVjdGx5
IG9mZiBBaXI6OkNvZGUuIEluCisgICAgICAgIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgQ3Vz
dG9tIG9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2Ug
c2hvdWxkIGFkZCBXYXNtQm91bmRzQ2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUgcmVk
dW5kYW50IGJvdW5kcworICAgICAgICBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNhbiBy
ZW1vdmUgYW55IFdhc21Cb3VuZHNDaGVjayBkb21pbmF0ZWQgYnkgYW5vdGhlcgorICAgICAgICBX
YXNtQm91bmRzQ2hlY2sgd2l0aCB0aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFuZCBh
IGxhcmdlciBvZmZzZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0Iz
TG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBi
My9CM09wY29kZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6UHJvY2VkdXJlOjpzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAg
ICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OnNldFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcik6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6Cisg
ICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0
cyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6CisgICAgICAgICogYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJv
dW5kc0NoZWNrVmFsdWU6On5XYXNtQm91bmRzQ2hlY2tWYWx1ZSk6CisgICAgICAgIChKU0M6OkIz
OjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6V2FzbUJvdW5kc0NoZWNrVmFsdWUpOgorICAgICAgICAo
SlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKiBiMy9C
M1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJv
dW5kc0NoZWNrVmFsdWU6OmFjY2VwdHMpOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0No
ZWNrVmFsdWU6OnBpbm5lZEdQUik6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tW
YWx1ZTo6b2Zmc2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpDb2RlOjpzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpDb2RlOjp3YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAq
IGIzL2Fpci9BaXJDdXN0b20uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRz
Q2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKiBiMy9haXIvQWlyQ3VzdG9tLmg6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Zm9yRWFjaEFy
Zyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6aXNWYWxp
ZEZvcm1TdGF0aWMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0
b206OmFkbWl0c1N0YWNrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNr
Q3VzdG9tOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0No
ZWNrQ3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgor
CiAyMDE2LTEwLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgdmFyaWFibGVzIGluIGFycmF5UHJvdG9GdW5jU3BsaWNlKCkgdG8gbWF0Y2ggbmFtZXMg
aW4gdGhlIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTdjZWZm
NjYxNDZiOTk4YzUxM2JhMDdlMTk2YmMwZmNjYWJjMmQ5Zi4uYWFlNzFiNDJmMDQ1MmM4NTRlOThj
NGU4OTNiMWI4YzdmZjNjYWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTcyLDYgKzE3Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvQjNW
YWx1ZVJlcC5jcHAKICAgICBiMy9CM1ZhcmlhYmxlLmNwcAogICAgIGIzL0IzVmFyaWFibGVWYWx1
ZS5jcHAKKyAgICBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcAogCiAgICAgYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDQ0YjJjNGQzMjYyZDQxOTUxNGM5MTRjZWRi
ZjNjNWFhOWVmZjNmYS4uMTA4ZmU4YWUwZjk0YjlmNzQ3MzRkNzgxODhmMGNmNWNmYzhhMTgxOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDYsNiArMTIwNiw4IEBACiAJCTUy
Qzk1MkI5MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2
IC8qIFR5cGVQcm9maWxlci5jcHAgKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAv
KiBXQVNNUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggKi87IH07CiAJCTUzMTM3
NEJGMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV0FT
TVBsYW4uY3BwICovOyB9OworCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5jcHAgKi87IH07CisJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICov
OyB9OwogCQk1MzQ4NkJCNzFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCNjFDMTc5NUMz
MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQk1MzQ4NkJCQjFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFy
cmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovOyB9OwogCQk1MzQ5
MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDkwMjgyMUM3MjQyQzgwMDEyQkNC
OCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovOyB9OwpAQCAtMzQ0MSw2ICszNDQzLDggQEAKIAkJ
NTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0FTTVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYz
QUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThF
ODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDg1Nyw2ICs0ODYxLDggQEAKIAkJCQkwRjMzOEUxODFCRjI4NkVBMDAxM0M4OEYg
LyogQjNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEJBMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCAqLywKIAkJCQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIg
LyogQjNCb3R0b21Qcm92aWRlci5oICovLAorCQkJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAv
KiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQk1MzQxRkM3MTFEQUMzNDNDMDBF
N0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJCTBGNkI4QURFMUM0RUZF
MTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJMEY2QjhBREYx
QzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCiAJCQkJREM5QTBD
MUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uY3BwICovLApAQCAtNzY1MCw2
ICs3NjU2LDcgQEAKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNjcxNTNBMjFFMjAw
MEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkI5MjFEMTZEMDJGMzAwMDU1QTVEQiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAv
KiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2ODJGQjMxOUJDQjM2
NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5
RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTM2NSw2ICs5MzcyLDcgQEAKIAkJCQkyQUFDRTYzQzE4Q0E1QTAzMDBFRDAxOTEg
LyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJGMTVB
OERDRTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkFERkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3RENBMDA4NUYzQzYgLyog
R2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMzE4QjAxNzYzMDA1
Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUx
MDdFQzBFNzAwMTNFN0IyIC8qIEdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZDYxYTA3NjRhN2JmMmI1
NjAzZjJjYjQ5MGYwZWVkODk1MTY1Y2U2Mi4uNWM4OWNiZGI5NjkyNzMzZDQ0NzMxZjZhYjU2ZDhk
MWFhYzc2ZjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
QEAgLTU2OCwxMyArNTY4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBsb2FkUHJvbWlz
ZShsb2FkVmFsdWUsIExvYWQpOwogICAgIH0KIAorICAgIEFyZyBpbW0oaW50NjRfdCBpbnRWYWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmc6OmltbShpbnRWYWx1ZSk7CisgICAgICAgIHJldHVybiBBcmco
KTsKKyAgICB9CisKICAgICBBcmcgaW1tKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS0+aGFzSW50KCkpIHsKLSAgICAgICAgICAgIGludDY0X3QgaW50VmFsdWUgPSB2YWx1
ZS0+YXNJbnQoKTsKLSAgICAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbW0oaW50VmFsdWUpOwotICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZS0+aGFzSW50KCkpCisgICAgICAgICAgICByZXR1cm4gaW1tKHZh
bHVlLT5hc0ludCgpKTsKICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgIH0KIApAQCAtMjYyNyw2
ICsyNjMxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEIzOjpXYXNtQm91bmRzQ2hlY2s6IHsKKyAgICAgICAgICAgIFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVlPigp
OworCisgICAgICAgICAgICBWYWx1ZSogcHRyID0gdmFsdWUtPmNoaWxkKDApOworCisgICAgICAg
ICAgICBBcmcgdGVtcCA9IG1fY29kZS5uZXdUbXAoQXJnOjpHUCk7CisgICAgICAgICAgICBhcHBl
bmQoSW5zdChNb3ZlMzIsIHZhbHVlLCB0bXAocHRyKSwgdGVtcCkpOworICAgICAgICAgICAgaWYg
KHZhbHVlLT5vZmZzZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbW0odmFsdWUtPm9mZnNl
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBpbW0odmFsdWUtPm9mZnNl
dCgpKSwgdGVtcCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IEFyZyBiaWdJbW0gPSBtX2NvZGUubmV3VG1wKEFyZzo6R1ApOworICAgICAgICAgICAgICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUtPm9mZnNldCgpKSwgYmlnSW1tKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBiaWdJbW0sIHRlbXApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZChJbnN0KEFpcjo6V2Fz
bUJvdW5kc0NoZWNrLCB2YWx1ZSwgdGVtcCwgQXJnKHZhbHVlLT5waW5uZWRHUFIoKSkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgVXBzaWxvbjogewog
ICAgICAgICAgICAgVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgICAg
ICBhcHBlbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRleCBmMDNhOTRj
ZWRlZmZlODRmMjljNDY5NWVmMzM4OTE2NjIxNWI1Mzk2Li5lMTAwZDNiMzlmZjUyYzIyMjgyY2Nk
N2NkNTk5NzFlY2FjMjQ3N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAK
QEAgLTI3Miw2ICsyNzIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
T3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENoZWNrOgogICAgICAgICBvdXQucHJpbnQoIkNoZWNr
Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAg
b3V0LnByaW50KCJXYXNtQm91bmRzQ2hlY2siKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
VXBzaWxvbjoKICAgICAgICAgb3V0LnByaW50KCJVcHNpbG9uIik7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggYzk3NzM0NzcwZGM5NTI1YzhiZmNi
Njg3YWU1MDFlZjVjMjlhNzBjNC4uZTMyZTlkMzAyMGRmNjM5NmQwNjAyOWM3ZmE1NTIzMzk4OTgw
ZTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTIwOSw2ICsyMDksMTIg
QEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBXYXJtQW55LiBJdCB3aWxsIG5vdCBo
YXZlIGFuIG91dHB1dCBjb25zdHJhaW50LgogICAgIENoZWNrLAogCisgICAgLy8gU3BlY2lhbCBX
YXNtIG9wY29kZSB0aGF0IHRha2VzIGEgSW50MzIsIGEgc3BlY2lhbCBwaW5uZWQgZ3ByIGFuZCBh
biBvZmZzZXQuIFRoaXMgbm9kZSBleGlzdHMKKyAgICAvLyB0byBhbGxvdyB1cyB0byBDU0UgV2Fz
bUJvdW5kc0NoZWNrcyBpZiBib3RoIHVzZSB0aGUgc2FtZSBwb2ludGVyIGFuZCBvbmUgZG9taW5h
dGVzIHRoZSBvdGhlci4KKyAgICAvLyBXaXRob3V0IHNvbWUgc3VjaCBub2RlIEIzIHdvdWxkIG5v
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5uZXIgd29ya2luZ3Mgb2Ygd2Fz
bQorICAgIC8vIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBzdWNoIG9wdGltaXphdGlvbnMuCisgICAg
V2FzbUJvdW5kc0NoZWNrLAorCiAgICAgLy8gU1NBIHN1cHBvcnQsIGluIHRoZSBzdHlsZSBvZiBE
RkcgU1NBLgogICAgIFVwc2lsb24sIC8vIFRoaXMgdXNlcyB0aGUgVXBzaWxvblZhbHVlIGNsYXNz
LgogICAgIFBoaSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4
IDI5ZmMxYzQxMzM5MDg2MjYyZjM3YzkzOTY5MjhiMzZkOWEyMDliNGEuLjZjZGUyZjExMDZmNzRk
MGY3YTc4OTgzZDFkZjRhZWNiOWFjM2MxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmNwcApAQCAtMzQ4LDYgKzM0OCwxMSBAQCB2b2lkIFByb2NlZHVyZTo6c2V0Qmxv
Y2tPcmRlckltcGwoVmVjdG9yPEJhc2ljQmxvY2sqPiYgYmxvY2tzKQogICAgIH0KIH0KIAordm9p
ZCBQcm9jZWR1cmU6OnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yPiBnZW5lcmF0b3IpCit7CisgICAgY29kZSgpLnNldFdhc21Cb3VuZHND
aGVja0dlbmVyYXRvcihnZW5lcmF0b3IpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
IAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5oCmluZGV4IGQxYzcyMmY0YTJmYWU4ZmEwOThkNzZiZTg2M2E1OGU2NTc4MjVkYjcuLjIy
MzYxNDVlZjU1M2YxYTlkMjUzMzJkMWM5ODkyNzMyNDgyMTU2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCkBAIC01OCw2ICs1OCw5IEBAIGNsYXNzIFZhcmlhYmxlOwog
CiBuYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCit0eXBlZGVmIHZvaWQgV2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgR1BSUmVnLCB1bnNpZ25lZCk7
Cit0eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKKwogLy8gVGhpcyByZXByZXNlbnRzIEIzJ3MgdmlldyBv
ZiBhIHBpZWNlIG9mIGNvZGUuIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBtdXN0IGV4aXN0IGluIGEg
MToxCiAvLyByZWxhdGlvbnNoaXAgd2l0aCBBaXI6OkNvZGUuIEIzOjpQcm9jZWR1cmUgYW5kIEFp
cjo6Q29kZSBhcmUganVzdCBkaWZmZXJlbnQgZmFjYWRlcyBvZiB0aGUgQjMKIC8vIGNvbXBpbGVy
J3Mga25vd2xlZGdlIGFib3V0IGEgcGllY2Ugb2YgY29kZS4gU29tZSBraW5kcyBvZiBzdGF0ZSBh
cmVuJ3QgcGVyZmVjdCBmaXRzIGZvciBlaXRoZXIKQEAgLTIyMSw2ICsyMjQsMTQgQEAgcHVibGlj
OgogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3BjVG9Pcmln
aW5NYXA7IH0KICAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyByZXR1
cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yPik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgc2V0
V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgewor
ICAgICAgICBzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVj
a0dlbmVyYXRvcj4oY3JlYXRlU2hhcmVkVGFzazxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5j
dGlvbj4oZnVuY3RvcikpKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAK
aW5kZXggYWZjMDBhMmVhYjUwY2ZiM2JlZjFlMTg0MjU5NzAyNTE0NDYyYjFmNi4uYjA2MzQ0ZTQw
NTdiZjMxMWRkNmU2ZjZlMTM3YzFmMDFkZDA3MDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkK
IAorI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIK
ICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3Jz
LmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVk
ZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtNDEzLDYgKzQxNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmFzPFN0YWNrbWFwVmFsdWU+KCktPmNvbnN0cmFpbmVkQ2hpbGQoMCkucmVw
KCkgPT0gVmFsdWVSZXA6Oldhcm1BbnksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgdmFsaWRhdGVTdGFja21hcCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKG1fcHJv
Y2VkdXJlLmNvZGUoKS5pc1Bpbm5lZCh2YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCkt
PnBpbm5lZEdQUigpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RShtX3Byb2NlZHVyZS5jb2RlKCkud2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVwc2ls
b246CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRz
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAppbmRleCBhMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4MzcwMzczNzg3MDM4NDBk
Li41YjQxMTk4NjA2YzU2N2E3N2Q1YmU4NDEyYzVhNmVkOTRlOWY4NzMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTYsNiArNjE2LDEwIEBAIEVmZmVjdHMgVmFsdWU6
OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIHJlc3VsdCA9IEVmZmVj
dHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNr
OgorICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZXhp
dHNTaWRld2F5cyA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBzaWxvbjoKICAg
ICBjYXNlIFNldDoKICAgICAgICAgcmVzdWx0LndyaXRlc0xvY2FsU3RhdGUgPSB0cnVlOwpAQCAt
ODA5LDYgKzgxMyw3IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSogZmly
c3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2Ug
T29wczoKICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgog
ICAgICAgICByZXR1cm4gVm9pZDsKICAgICBjYXNlIFNlbGVjdDoKICAgICAgICAgQVNTRVJUKHNl
Y29uZENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlMWFkNTU1NWVlNWJlYjg5YTE4YzU3MjUz
MmJiMTU4MGY1NDNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1dhc21Cb3VuZHNDaGVja1ZhbHVl
Ojp+V2FzbUJvdW5kc0NoZWNrVmFsdWUoKQoreworfQorCitXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6
V2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHB0ciwgR1BSUmVnIHBp
bm5lZEdQUiwgdW5zaWduZWQgb2Zmc2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgV2Fz
bUJvdW5kc0NoZWNrLCBvcmlnaW4sIHB0cikKKyAgICAsIG1fcGlubmVkR1BSKHBpbm5lZEdQUikK
KyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKK30KKwordm9pZCBXYXNtQm91bmRzQ2hlY2tWYWx1
ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
K3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJzaXplUmVnaXN0ZXIgPSAiLCBtX3Bpbm5lZEdQUiwg
Iiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjAyNTYzNDg2ZjY0MjYy
YmUxZjRjNWNmMTgwOGY1MDA2N2RjYWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5j
bHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
CitjbGFzcyBXYXNtQm91bmRzQ2hlY2tWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB+V2FzbUJvdW5kc0NoZWNrVmFsdWUo
KTsKKworICAgIEdQUlJlZyBwaW5uZWRHUFIoKSBjb25zdCB7IHJldHVybiBtX3Bpbm5lZEdQUjsg
fQorICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikg
Y29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsK
KworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdhc21Cb3VuZHNDaGVja1ZhbHVlKE9yaWdpbiwgVmFs
dWUqIHB0ciwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgb2Zmc2V0KTsKKworICAgIEdQUlJl
ZyBtX3Bpbm5lZEdQUjsKKyAgICB1bnNpZ25lZCBtX29mZnNldDsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXggODNjYjJlMTQwNjBkY2NiMmY0ZjZmNjA3YmEwNjFj
ZWMwZTU3OTI1Zi4uNmQ0YTE0NzIyMzRhM2Q1OTNjNDk4OGIzZWI4NzlkZGJjZjFmNmZhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTUyLDYgKzUyLDkgQEAgbmFt
ZXNwYWNlIEFpciB7CiBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIENDYWxsU3BlY2lh
bDsKIAordHlwZWRlZiB2b2lkIFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uKENDYWxs
SGVscGVycyYsIEdQUlJlZywgdW5zaWduZWQpOwordHlwZWRlZiBTaGFyZWRUYXNrPFdhc21Cb3Vu
ZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uPiBXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CisKIC8v
IFRoaXMgaXMgYW4gSVIgdGhhdCBpcyB2ZXJ5IGNsb3NlIHRvIHRoZSBiYXJlIG1ldGFsLiBJdCBy
ZXF1aXJlcyBhYm91dCA0MHggbW9yZSBieXRlcyB0aGFuIHRoZQogLy8gZ2VuZXJhdGVkIG1hY2hp
bmUgY29kZSAtIGZvciBleGFtcGxlIGlmIHlvdSdyZSBnZW5lcmF0aW5nIDFNQiBvZiBtYWNoaW5l
IGNvZGUsIHlvdSBuZWVkIGFib3V0CiAvLyA0ME1CIG9mIEFpci4KQEAgLTI2MSw2ICsyNjQsMTMg
QEAgcHVibGljOgogCiAgICAgY29uc3QgY2hhciogbGFzdFBoYXNlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdFBoYXNlTmFtZTsgfQogCisgICAgdm9pZCBzZXRXYXNtQm91bmRzQ2hlY2tHZW5l
cmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gZ2VuZXJhdG9yKQorICAgIHsK
KyAgICAgICAgbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IgPSBnZW5lcmF0b3I7CisgICAgfQor
CisgICAgUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gd2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7IH0KKwog
ICAgIC8vIFRoaXMgaXMgYSBoYXNoIG9mIHRoZSBjb2RlLiBZb3UgY2FuIHVzZSB0aGlzIGlmIHlv
dSB3YW50IHRvIHB1dCBjb2RlIGludG8gYSBoYXNodGFibGUsIGJ1dAogICAgIC8vIGl0J3MgbWFp
bmx5IGZvciB2YWxpZGF0aW5nIHRoZSByZXN1bHRzIGZyb20gSlNBaXIuCiAgICAgdW5zaWduZWQg
anNIYXNoKCkgY29uc3Q7CkBAIC0yOTgsNiArMzA4LDcgQEAgcHJpdmF0ZToKICAgICBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgVmVjdG9yPEZyZXF1ZW50
ZWRCbG9jaz4gbV9lbnRyeXBvaW50czsgLy8gVGhpcyBpcyBlbXB0eSB1bnRpbCBhZnRlciBsb3dl
ckVudHJ5U3dpdGNoKCkuCiAgICAgVmVjdG9yPENDYWxsSGVscGVyczo6TGFiZWw+IG1fZW50cnlw
b2ludExhYmVsczsgLy8gVGhpcyBpcyBlbXB0eSB1bnRpbCBjb2RlIGdlbmVyYXRpb24uCisgICAg
UmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0
b3I7CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhhc2VOYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwCmluZGV4IGY2ZWI1ZjM4ZDFmYTBkY2Y2YTVk
NGU2ZTlhMGYwNWY2YTNiNmMyZDQuLjJhMmRmMmZiZGM3Yjk3NGFhMjNkODlkNzI0YjgyZDBjNTQ4
MDIyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKQEAg
LTE3OCw2ICsxNzgsMTcgQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIFNodWZmbGVDdXN0b206OmdlbmVy
YXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVycyYsIEdlbmVyYXRpb24KICAgICByZXR1cm4gQ0Nh
bGxIZWxwZXJzOjpKdW1wKCk7CiB9CiAKK2Jvb2wgV2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjppc1Zh
bGlkRm9ybShJbnN0JiBpbnN0KQoreworICAgIGlmIChpbnN0LmFyZ3Muc2l6ZSgpICE9IDIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWluc3QuYXJnc1swXS5pc1RtcCgpICYmICFp
bnN0LmFyZ3NbMF0uaXNTb21lSW1tKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBpbnN0LmFyZ3NbMV0uaXNSZWcoKTsKK30KKworCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ3VzdG9tLmgKaW5kZXggOGI5MGZlZjBlMjA3ZjdlNWQ2ZGQ3NDNkNTFjNjA0
ZDg4MjhkMjU1Ni4uYjBkNTVjZGZhYzM1MDlhZDAzOTNhNDFmMDFlNWFmYTg1N2Y4NjU1MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCkBAIC0yNyw5ICsyNywxMiBA
QAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRl
ICJBaXJHZW5lcmF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkFpckluc3QuaCIKICNpbmNsdWRl
ICJBaXJTcGVjaWFsLmgiCi0jaW5jbHVkZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUgIkIzVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKQEAgLTI3Myw2ICsyNzYs
NTMgQEAgc3RydWN0IEVudHJ5U3dpdGNoQ3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8
RW50cnlTd2l0Y2hDdXN0b20+IHsKICAgICB9CiB9OwogCitzdHJ1Y3QgV2FzbUJvdW5kc0NoZWNr
Q3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8V2FzbUJvdW5kc0NoZWNrQ3VzdG9tPiB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJn
KEluc3QmIGluc3QsIGNvbnN0IEZ1bmMmIGZ1bmN0b3IpCisgICAgeworICAgICAgICBmdW5jdG9y
KGluc3QuYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6V2lkdGg2NCk7CisgICAgICAg
IGZ1bmN0b3IoaW5zdC5hcmdzWzFdLCBBcmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpXaWR0aDY0KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEZvcm1TdGF0aWMoQXJndW1lbnRzLi4uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlzVmFsaWRGb3JtKEluc3QmKTsK
KworICAgIHN0YXRpYyBib29sIGFkbWl0c1N0YWNrKEluc3QmLCB1bnNpZ25lZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1Rlcm1pbmFs
KEluc3QmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgYm9vbCBoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyhJbnN0JikKKyAgICB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBDQ2FsbEhlbHBlcnM6Okp1bXAg
Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0
JiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUqIHZhbHVlID0g
aW5zdC5vcmlnaW4tPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVlPigpOworICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgb3V0T2ZCb3VuZHMgPSBJbnN0KEFpcjo6QnJhbmNoNjQsIHZhbHVlLCBBcmc6
OnJlbENvbmQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwpLCBpbnN0LmFyZ3NbMF0sIGluc3Qu
YXJnc1sxXSkuZ2VuZXJhdGUoaml0LCBjb250ZXh0KTsKKworICAgICAgICBjb250ZXh0LmxhdGVQ
YXRocy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazxHZW5lcmF0aW9uQ29udGV4dDo6TGF0ZVBhdGhG
dW5jdGlvbj4oCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVy
YXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLmxpbmsoJmppdCk7
CisgICAgICAgICAgICAgICAgY29udGV4dC5jb2RlLT53YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3Io
KS0+cnVuKGppdCwgdmFsdWUtPnBpbm5lZEdQUigpLCB2YWx1ZS0+b2Zmc2V0KCkpOworICAgICAg
ICAgICAgfSkpOworCisgICAgICAgIC8vIFdlIHNhaWQgd2Ugd2VyZSBub3QgYSB0ZXJtaW5hbC4K
KyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcCgpOworICAgIH0KK307CisKIH0gfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBl
OTQ2NzJlNzg2ZDA2ODAwYTZkMzZhMzFiMDJhM2U5OWI1ODkwYjExLi4xNzk3MmEzZDM1YThiNzhh
MTFkZTRlNmM5ZWZkNjlhNjcyMDZjN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg4OSw0ICs4ODksNyBAQCBjdXN0b20gUGF0Y2gK
IGN1c3RvbSBDQ2FsbAogY3VzdG9tIENvbGRDQ2FsbAogCisjIFRoaXMgaXMgYSBzcGVjaWFsIHdh
c20gb3Bjb2RlIHRoYXQgYnJhbmNoZXMgdG8gYSB0cmFwIGhhbmRsZXIuIFRoaXMgdXNlcyB0aGUg
Z2VuZXJhdG9yIGxvY2F0ZWQgdG8gQWlyOjpDb2RlCisjIHRvIHByb2R1Y2UgdGhlIHNpZGUtZXhp
dCBjb2RlLgorY3VzdG9tIFdhc21Cb3VuZHNDaGVjawogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCmluZGV4IGVjMjRlNGRjNjBjYTUyOWVkMTBjOTE4MzUxYzQ0MjQ0NTZlODVhMDcuLmFj
MzFjM2NmNjMxZGUxZjBjNTVmMWI3YjBmMDA5NmE2ZmEzOTczMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiQjNWYWxpZGF0ZS5o
IgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVl
LmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkNDYWxs
SGVscGVycy5oIgogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCkBA
IC0xMzcyOSw2ICsxMzczMCwzNyBAQCB2b2lkIHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigp
CiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWdu
ZWQgb2Zmc2V0KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEdQUlJlZyBwaW5uZWQgPSBH
UFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOworCisg
ICAgcHJvYy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgYWN0dWFsT2Zmc2V0KSB7CisgICAgICAgIENI
RUNLX0VRKHBpbm5lZEdQUiwgcGlubmVkKTsKKyAgICAgICAgQ0hFQ0tfRVEoYWN0dWFsT2Zmc2V0
LCBvZmZzZXQpOworCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2Ug
YSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAg
Ly8gc2F2ZXMuCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQy
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBpZiAocG9pbnRlclR5cGUoKSAhPSBJbnQzMikKKyAgICAgICAgbGVmdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICByb290
LT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0LCBw
aW5uZWQsIG9mZnNldCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDQyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAx
LCAyICsgb2Zmc2V0KSwgMHg0Mik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2Rl
LCAzLCAyICsgb2Zmc2V0KSwgNDIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29k
ZSwgMiwgMiArIG9mZnNldCksIDQyKTsKK30KKwogLy8gTWFrZSBzdXJlIHRoZSBjb21waWxlciBk
b2VzIG5vdCB0cnkgdG8gb3B0aW1pemUgYW55dGhpbmcgb3V0LgogTkVWRVJfSU5MSU5FIGRvdWJs
ZSB6ZXJvKCkKIHsKQEAgLTE1MTQ4LDcgKzE1MTgwLDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQogICAgIFJVTih0ZXN0U29tZUVhcmx5UmVnaXN0ZXIoKSk7CiAgICAgUlVOKHRlc3RQ
YXRjaHBvaW50VGVybWluYWxSZXR1cm5WYWx1ZSh0cnVlKSk7CiAgICAgUlVOKHRlc3RQYXRjaHBv
aW50VGVybWluYWxSZXR1cm5WYWx1ZShmYWxzZSkpOwotICAgIAorCiAgICAgUlVOKHRlc3RNZW1v
cnlGZW5jZSgpKTsKICAgICBSVU4odGVzdFN0b3JlRmVuY2UoKSk7CiAgICAgUlVOKHRlc3RMb2Fk
RmVuY2UoKSk7CkBAIC0xNTE2OCw3ICsxNTIwMCwxMiBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwogICAgIFJVTih0ZXN0
TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXph
dGlvbigpKTsKLSAgICAKKworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDApKTsKKyAgICBS
VU4odGVzdFdhc21Cb3VuZHNDaGVjaygxMDApKTsKKyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVj
aygxMDAwMCkpOworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSAtIDUpKTsKKwogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAg
IFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpC
cmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKICAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRB
bmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAweGZmLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWly
OjpBcmc6OlRtcCkpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cg
Yi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA0YzcwZjc5NWRkNzM2NTliMGYw
YzliYjgxYzllM2JmZjZjNjZmODRiLi42Y2UxM2Q4MTY2OGJhZTAwZTg4OWRkNzIxZGI0MzAwYjJm
YzNhMThiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZworKysgYi9X
ZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTEy
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEIzIG5l
ZWRzIGEgc3BlY2lhbCBXYXNtQm91bmRzQ2hlY2sgT3Bjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBGaWxpcCBQaXpsby4KKworICAgICAgICBVcGRhdGUgdGhlIGRvY3MgZm9yIHRoZSBuZXcgV2Fz
bUJvdW5kc0NoZWNrIG9wY29kZS4KKworICAgICAgICAqIGRvY3MvYjMvaW50ZXJtZWRpYXRlLXJl
cHJlc2VudGF0aW9uLmh0bWw6CisKIDIwMTYtMTAtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBjb250cmlidXRvcnMuanNvbiB0byBh
IGZsYXQgbGlzdApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVy
bWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2Iz
L2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCmluZGV4IGJkYzU3YTEwNDk3YjMxZmQ5
Mjc2MDdmYzY1OTBhYjQ3ZjMyNDc1ZGYuLjYyYWM5N2NiM2NlYTQ2ZGFiYmUwZjg0NmM3MWU2ZGJm
MmM5NzM5N2EgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1l
ZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAorKysgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3Mv
YjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKQEAgLTUzNyw2ICs1MzcsMTYgQEAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICB0byBhbiBpbnN0cnVjdGlvbiB0aGF0
IGJyYW5jaGVzIHRvIHRoZSBleGl0IGlmIEBhICZndDs9IEBiIG9yIGlmIGVpdGhlciBAYSBvciBA
YiBhcmUKICAgICAgICAgTmFOLiAgTXVzdCB1c2UgdGhlIENoZWNrVmFsdWUgY2xhc3MuPC9kZD4K
IAorICAgICAgPGR0PlZvaWQgV2FzbUJvdW5kc0NoZWNrKEludDMyLCBwaW5uZWRHUFIsIG9mZnNl
dCk8L2R0PgorICAgICAgPGRkPlNwZWNpYWwgV2FzbSBvcGNvZGUuIFRoaXMgYnJhbmNoZXMgb24g
dGhlIGZpcnN0IGNoaWxkLiBJZiB0aGUgZmlyc3QgY2hpbGQgcGx1cyB0aGUgb2Zmc2V0CisgICAg
ICAgIHByb2R1Y2VzIGEgSW50NjQgbGVzcyB0aGFuIHRvIHRoZSBwaW5uZWRHUFIgdGhpcyBmYWxs
cyB0aHJvdWdoLiBPdGhlcndpc2UsIGl0IGJyYW5jaGVzIHRvCisgICAgICAgIHRoZSBleGl0IHBh
dGggZ2VuZXJhdGVkIGJ5IHRoZSBwYXNzZWQgZ2VuZXJhdG9yLiBVbmxpa2UgdGhlIFBhdGNoL0No
ZWNrIGZhbWlseSwgdGhlCisgICAgICAgIGdlbmVyYXRvciB1c2VkIGJ5IFdhc21Cb3VuZHNDaGVj
ayBzb3VsZCBiZSBzZXQgb24gdGhlIFByb2N1ZGVyIGl0c2VsZi4gVGhlIEdSUFJlZyBwYXNzZWQg
aW4KKyAgICAgICAgcGlubmVkR1BSIG11c3QgYWxzbyBiZSBtYXJrZWQgYXMgcGlubmVkIGJ5IGNh
bGxpbmcgdGhlIFByb2NlZHVyZSdzIHBpbm5pbmcgQVBJLiBCMyBhc3N1bWVzCisgICAgICAgIHRo
ZSBXYXNtQm91bmRzQ2hlY2sgd2lsbCBzaWRlLWV4aXQgd2hlbiB0aGUgaXQgYnJhbmNoZXMsIHNv
IHRoZSBnZW5lcmF0b3IgbXVzdCBkbyBzb21lIGtpbmQKKyAgICAgICAgb2YgdGVybWluYXRpb24u
IEluIFdhc20gdGhpcyBpcyB1c2VkIHRvIHRyYXAgYW5kIHVud2luZCBiYWNrIHRvIEpTLiBNdXN0
IHVzZSB0aGUKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUgY2xhc3MuPC9kZD4KKwogICAg
ICAgPGR0PlZvaWQgVXBzaWxvbihULCBecGhpKTwvZHQ+CiAgICAgICA8ZGQ+QjMgdXNlcyBTU0Eu
ICBTU0EgcmVxdWlyZXMgdGhhdCBlYWNoIHZhcmlhYmxlIGdldHMgYXNzaWduZWQgdG8gb25seSBv
bmNlIGFueXdoZXJlIGluCiAgICAgICAgIHRoZSBwcm9jZWR1cmUuICBCdXQgdGhhdCBkb2Vzbid0
IHdvcmsgaWYgeW91IGhhdmUgYSB2YXJpYWJsZSB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIHRoZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291419</attachid>
            <date>2016-10-12 16:51:54 -0700</date>
            <delta_ts>2016-10-12 18:11:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163246-20161012164829.patch</filename>
            <type>text/plain</type>
            <size>31406</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi5lNWE3ODJiNjNjMWY1NDcz
MDA0MGU3OWFhODZiMjRkOGUzMjYzNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV2FzbUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6OlZh
bHVlIHN1YmNsYXNzIGZvciBpdCwKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdhc21C
b3VuZHNDaGVja1ZhbHVlIHRha2VzIHRocmVlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gVGhlIGZp
cnN0IGlzCisgICAgICAgIHRoZSBJbnQzMiBwb2ludGVyIHZhbHVlIHVzZWQgdG8gYmUgdXNlZCBi
eSB0aGUgTG9hZC4gIE5leHQgaXMgdGhlIHBpbm5lZCByZWdpc3Rlci4gVGhlCisgICAgICAgIHBp
bm5lZCByZWdpc3RlciBtdXN0IGJlIHBpbm5lZCBieSBjYWxsaW5nIHByb2Muc2V0UGlubmVkKCkg
cHJpb3IgdG8gY29tcGlsaW5nIHRoZQorICAgICAgICBQcm9jZWR1cmUuIExhc3RseSwgdGhlIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGFuIG9mZnNldC4gVGhlIFdhc21Cb3VuZHNDaGVja1Zh
bHVlIGlzCisgICAgICAgIHdpbGwgdGhlbiBlbWl0IGNvZGUgdGhhdCBzaWRlLWV4aXRzIGlmIHRo
ZSBJbnQ2NCBzdW0gb2YgdGhlIG9mZnNldCBhbmQgcG9pbnRlciBpcyBncmVhdGVyCisgICAgICAg
IHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIGluIHRoZSBwaW5uZWRSZWdpc3Rlci4gSW5zdGVh
ZCBvZiB0YWtpbmcgYSBnZW5lcmF0b3IgZm9yIGVhY2gKKyAgICAgICAgdmFsdWUgbGlrZSBDaGVj
ay9QYXRjaHBvaW50LCBXYXNtQm91bmRzQ2hlY2sgZ2V0cyBpdHMgZ2VuZXJhdG9yIGRpcmVjdGx5
IG9mZiBBaXI6OkNvZGUuIEluCisgICAgICAgIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgQ3Vz
dG9tIG9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2Ug
c2hvdWxkIGFkZCBXYXNtQm91bmRzQ2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUgcmVk
dW5kYW50IGJvdW5kcworICAgICAgICBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNhbiBy
ZW1vdmUgYW55IFdhc21Cb3VuZHNDaGVjayBkb21pbmF0ZWQgYnkgYW5vdGhlcgorICAgICAgICBX
YXNtQm91bmRzQ2hlY2sgd2l0aCB0aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFuZCBh
IGxhcmdlciBvZmZzZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0Iz
TG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBi
My9CM09wY29kZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6UHJvY2VkdXJlOjpzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAg
ICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OnNldFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcik6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6Cisg
ICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0
cyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6CisgICAgICAgICogYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJv
dW5kc0NoZWNrVmFsdWU6On5XYXNtQm91bmRzQ2hlY2tWYWx1ZSk6CisgICAgICAgIChKU0M6OkIz
OjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6V2FzbUJvdW5kc0NoZWNrVmFsdWUpOgorICAgICAgICAo
SlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKiBiMy9C
M1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJv
dW5kc0NoZWNrVmFsdWU6OmFjY2VwdHMpOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0No
ZWNrVmFsdWU6OnBpbm5lZEdQUik6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tW
YWx1ZTo6b2Zmc2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpDb2RlOjpzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpDb2RlOjp3YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAq
IGIzL2Fpci9BaXJDdXN0b20uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRz
Q2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKiBiMy9haXIvQWlyQ3VzdG9tLmg6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Zm9yRWFjaEFy
Zyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6aXNWYWxp
ZEZvcm1TdGF0aWMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0
b206OmFkbWl0c1N0YWNrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNr
Q3VzdG9tOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0No
ZWNrQ3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgor
CiAyMDE2LTEwLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgdmFyaWFibGVzIGluIGFycmF5UHJvdG9GdW5jU3BsaWNlKCkgdG8gbWF0Y2ggbmFtZXMg
aW4gdGhlIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTdjZWZm
NjYxNDZiOTk4YzUxM2JhMDdlMTk2YmMwZmNjYWJjMmQ5Zi4uYWFlNzFiNDJmMDQ1MmM4NTRlOThj
NGU4OTNiMWI4YzdmZjNjYWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTcyLDYgKzE3Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvQjNW
YWx1ZVJlcC5jcHAKICAgICBiMy9CM1ZhcmlhYmxlLmNwcAogICAgIGIzL0IzVmFyaWFibGVWYWx1
ZS5jcHAKKyAgICBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcAogCiAgICAgYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDQ0YjJjNGQzMjYyZDQxOTUxNGM5MTRjZWRi
ZjNjNWFhOWVmZjNmYS4uMTA4ZmU4YWUwZjk0YjlmNzQ3MzRkNzgxODhmMGNmNWNmYzhhMTgxOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDYsNiArMTIwNiw4IEBACiAJCTUy
Qzk1MkI5MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2
IC8qIFR5cGVQcm9maWxlci5jcHAgKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAv
KiBXQVNNUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggKi87IH07CiAJCTUzMTM3
NEJGMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV0FT
TVBsYW4uY3BwICovOyB9OworCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5jcHAgKi87IH07CisJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICov
OyB9OwogCQk1MzQ4NkJCNzFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCNjFDMTc5NUMz
MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQk1MzQ4NkJCQjFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFy
cmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovOyB9OwogCQk1MzQ5
MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDkwMjgyMUM3MjQyQzgwMDEyQkNC
OCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovOyB9OwpAQCAtMzQ0MSw2ICszNDQzLDggQEAKIAkJ
NTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0FTTVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYz
QUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThF
ODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDg1Nyw2ICs0ODYxLDggQEAKIAkJCQkwRjMzOEUxODFCRjI4NkVBMDAxM0M4OEYg
LyogQjNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEJBMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCAqLywKIAkJCQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIg
LyogQjNCb3R0b21Qcm92aWRlci5oICovLAorCQkJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAv
KiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQk1MzQxRkM3MTFEQUMzNDNDMDBF
N0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJCTBGNkI4QURFMUM0RUZF
MTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJMEY2QjhBREYx
QzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCiAJCQkJREM5QTBD
MUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uY3BwICovLApAQCAtNzY1MCw2
ICs3NjU2LDcgQEAKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNjcxNTNBMjFFMjAw
MEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkI5MjFEMTZEMDJGMzAwMDU1QTVEQiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAv
KiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2ODJGQjMxOUJDQjM2
NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5
RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTM2NSw2ICs5MzcyLDcgQEAKIAkJCQkyQUFDRTYzQzE4Q0E1QTAzMDBFRDAxOTEg
LyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJGMTVB
OERDRTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkFERkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3RENBMDA4NUYzQzYgLyog
R2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMzE4QjAxNzYzMDA1
Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUx
MDdFQzBFNzAwMTNFN0IyIC8qIEdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZDYxYTA3NjRhN2JmMmI1
NjAzZjJjYjQ5MGYwZWVkODk1MTY1Y2U2Mi4uNWM4OWNiZGI5NjkyNzMzZDQ0NzMxZjZhYjU2ZDhk
MWFhYzc2ZjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
QEAgLTU2OCwxMyArNTY4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBsb2FkUHJvbWlz
ZShsb2FkVmFsdWUsIExvYWQpOwogICAgIH0KIAorICAgIEFyZyBpbW0oaW50NjRfdCBpbnRWYWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmc6OmltbShpbnRWYWx1ZSk7CisgICAgICAgIHJldHVybiBBcmco
KTsKKyAgICB9CisKICAgICBBcmcgaW1tKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS0+aGFzSW50KCkpIHsKLSAgICAgICAgICAgIGludDY0X3QgaW50VmFsdWUgPSB2YWx1
ZS0+YXNJbnQoKTsKLSAgICAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbW0oaW50VmFsdWUpOwotICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZS0+aGFzSW50KCkpCisgICAgICAgICAgICByZXR1cm4gaW1tKHZh
bHVlLT5hc0ludCgpKTsKICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgIH0KIApAQCAtMjYyNyw2
ICsyNjMxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEIzOjpXYXNtQm91bmRzQ2hlY2s6IHsKKyAgICAgICAgICAgIFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVlPigp
OworCisgICAgICAgICAgICBWYWx1ZSogcHRyID0gdmFsdWUtPmNoaWxkKDApOworCisgICAgICAg
ICAgICBBcmcgdGVtcCA9IG1fY29kZS5uZXdUbXAoQXJnOjpHUCk7CisgICAgICAgICAgICBhcHBl
bmQoSW5zdChNb3ZlMzIsIHZhbHVlLCB0bXAocHRyKSwgdGVtcCkpOworICAgICAgICAgICAgaWYg
KHZhbHVlLT5vZmZzZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbW0odmFsdWUtPm9mZnNl
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBpbW0odmFsdWUtPm9mZnNl
dCgpKSwgdGVtcCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IEFyZyBiaWdJbW0gPSBtX2NvZGUubmV3VG1wKEFyZzo6R1ApOworICAgICAgICAgICAgICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUtPm9mZnNldCgpKSwgYmlnSW1tKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBiaWdJbW0sIHRlbXApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZChJbnN0KEFpcjo6V2Fz
bUJvdW5kc0NoZWNrLCB2YWx1ZSwgdGVtcCwgQXJnKHZhbHVlLT5waW5uZWRHUFIoKSkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgVXBzaWxvbjogewog
ICAgICAgICAgICAgVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgICAg
ICBhcHBlbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRleCBmMDNhOTRj
ZWRlZmZlODRmMjljNDY5NWVmMzM4OTE2NjIxNWI1Mzk2Li5lMTAwZDNiMzlmZjUyYzIyMjgyY2Nk
N2NkNTk5NzFlY2FjMjQ3N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAK
QEAgLTI3Miw2ICsyNzIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
T3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENoZWNrOgogICAgICAgICBvdXQucHJpbnQoIkNoZWNr
Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAg
b3V0LnByaW50KCJXYXNtQm91bmRzQ2hlY2siKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
VXBzaWxvbjoKICAgICAgICAgb3V0LnByaW50KCJVcHNpbG9uIik7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggYzk3NzM0NzcwZGM5NTI1YzhiZmNi
Njg3YWU1MDFlZjVjMjlhNzBjNC4uZTMyZTlkMzAyMGRmNjM5NmQwNjAyOWM3ZmE1NTIzMzk4OTgw
ZTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTIwOSw2ICsyMDksMTIg
QEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBXYXJtQW55LiBJdCB3aWxsIG5vdCBo
YXZlIGFuIG91dHB1dCBjb25zdHJhaW50LgogICAgIENoZWNrLAogCisgICAgLy8gU3BlY2lhbCBX
YXNtIG9wY29kZSB0aGF0IHRha2VzIGEgSW50MzIsIGEgc3BlY2lhbCBwaW5uZWQgZ3ByIGFuZCBh
biBvZmZzZXQuIFRoaXMgbm9kZSBleGlzdHMKKyAgICAvLyB0byBhbGxvdyB1cyB0byBDU0UgV2Fz
bUJvdW5kc0NoZWNrcyBpZiBib3RoIHVzZSB0aGUgc2FtZSBwb2ludGVyIGFuZCBvbmUgZG9taW5h
dGVzIHRoZSBvdGhlci4KKyAgICAvLyBXaXRob3V0IHNvbWUgc3VjaCBub2RlIEIzIHdvdWxkIG5v
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5uZXIgd29ya2luZ3Mgb2Ygd2Fz
bQorICAgIC8vIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBzdWNoIG9wdGltaXphdGlvbnMuCisgICAg
V2FzbUJvdW5kc0NoZWNrLAorCiAgICAgLy8gU1NBIHN1cHBvcnQsIGluIHRoZSBzdHlsZSBvZiBE
RkcgU1NBLgogICAgIFVwc2lsb24sIC8vIFRoaXMgdXNlcyB0aGUgVXBzaWxvblZhbHVlIGNsYXNz
LgogICAgIFBoaSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4
IDI5ZmMxYzQxMzM5MDg2MjYyZjM3YzkzOTY5MjhiMzZkOWEyMDliNGEuLjZjZGUyZjExMDZmNzRk
MGY3YTc4OTgzZDFkZjRhZWNiOWFjM2MxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmNwcApAQCAtMzQ4LDYgKzM0OCwxMSBAQCB2b2lkIFByb2NlZHVyZTo6c2V0Qmxv
Y2tPcmRlckltcGwoVmVjdG9yPEJhc2ljQmxvY2sqPiYgYmxvY2tzKQogICAgIH0KIH0KIAordm9p
ZCBQcm9jZWR1cmU6OnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yPiBnZW5lcmF0b3IpCit7CisgICAgY29kZSgpLnNldFdhc21Cb3VuZHND
aGVja0dlbmVyYXRvcihnZW5lcmF0b3IpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
IAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5oCmluZGV4IGQxYzcyMmY0YTJmYWU4ZmEwOThkNzZiZTg2M2E1OGU2NTc4MjVkYjcuLjIy
MzYxNDVlZjU1M2YxYTlkMjUzMzJkMWM5ODkyNzMyNDgyMTU2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCkBAIC01OCw2ICs1OCw5IEBAIGNsYXNzIFZhcmlhYmxlOwog
CiBuYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCit0eXBlZGVmIHZvaWQgV2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgR1BSUmVnLCB1bnNpZ25lZCk7
Cit0eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKKwogLy8gVGhpcyByZXByZXNlbnRzIEIzJ3MgdmlldyBv
ZiBhIHBpZWNlIG9mIGNvZGUuIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBtdXN0IGV4aXN0IGluIGEg
MToxCiAvLyByZWxhdGlvbnNoaXAgd2l0aCBBaXI6OkNvZGUuIEIzOjpQcm9jZWR1cmUgYW5kIEFp
cjo6Q29kZSBhcmUganVzdCBkaWZmZXJlbnQgZmFjYWRlcyBvZiB0aGUgQjMKIC8vIGNvbXBpbGVy
J3Mga25vd2xlZGdlIGFib3V0IGEgcGllY2Ugb2YgY29kZS4gU29tZSBraW5kcyBvZiBzdGF0ZSBh
cmVuJ3QgcGVyZmVjdCBmaXRzIGZvciBlaXRoZXIKQEAgLTIyMSw2ICsyMjQsMTQgQEAgcHVibGlj
OgogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3BjVG9Pcmln
aW5NYXA7IH0KICAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyByZXR1
cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yPik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgc2V0
V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgewor
ICAgICAgICBzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVj
a0dlbmVyYXRvcj4oY3JlYXRlU2hhcmVkVGFzazxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5j
dGlvbj4oZnVuY3RvcikpKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAK
aW5kZXggYWZjMDBhMmVhYjUwY2ZiM2JlZjFlMTg0MjU5NzAyNTE0NDYyYjFmNi4uYjA2MzQ0ZTQw
NTdiZjMxMWRkNmU2ZjZlMTM3YzFmMDFkZDA3MDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkK
IAorI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIK
ICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3Jz
LmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVk
ZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtNDEzLDYgKzQxNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmFzPFN0YWNrbWFwVmFsdWU+KCktPmNvbnN0cmFpbmVkQ2hpbGQoMCkucmVw
KCkgPT0gVmFsdWVSZXA6Oldhcm1BbnksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgdmFsaWRhdGVTdGFja21hcCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKG1fcHJv
Y2VkdXJlLmNvZGUoKS5pc1Bpbm5lZCh2YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCkt
PnBpbm5lZEdQUigpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RShtX3Byb2NlZHVyZS5jb2RlKCkud2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVwc2ls
b246CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRz
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAppbmRleCBhMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4MzcwMzczNzg3MDM4NDBk
Li41YjQxMTk4NjA2YzU2N2E3N2Q1YmU4NDEyYzVhNmVkOTRlOWY4NzMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTYsNiArNjE2LDEwIEBAIEVmZmVjdHMgVmFsdWU6
OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIHJlc3VsdCA9IEVmZmVj
dHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNr
OgorICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZXhp
dHNTaWRld2F5cyA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBzaWxvbjoKICAg
ICBjYXNlIFNldDoKICAgICAgICAgcmVzdWx0LndyaXRlc0xvY2FsU3RhdGUgPSB0cnVlOwpAQCAt
ODA5LDYgKzgxMyw3IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSogZmly
c3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2Ug
T29wczoKICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgog
ICAgICAgICByZXR1cm4gVm9pZDsKICAgICBjYXNlIFNlbGVjdDoKICAgICAgICAgQVNTRVJUKHNl
Y29uZENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlMWFkNTU1NWVlNWJlYjg5YTE4YzU3MjUz
MmJiMTU4MGY1NDNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1dhc21Cb3VuZHNDaGVja1ZhbHVl
Ojp+V2FzbUJvdW5kc0NoZWNrVmFsdWUoKQoreworfQorCitXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6
V2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHB0ciwgR1BSUmVnIHBp
bm5lZEdQUiwgdW5zaWduZWQgb2Zmc2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgV2Fz
bUJvdW5kc0NoZWNrLCBvcmlnaW4sIHB0cikKKyAgICAsIG1fcGlubmVkR1BSKHBpbm5lZEdQUikK
KyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKK30KKwordm9pZCBXYXNtQm91bmRzQ2hlY2tWYWx1
ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
K3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJzaXplUmVnaXN0ZXIgPSAiLCBtX3Bpbm5lZEdQUiwg
Iiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjAyNTYzNDg2ZjY0MjYy
YmUxZjRjNWNmMTgwOGY1MDA2N2RjYWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5j
bHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
CitjbGFzcyBXYXNtQm91bmRzQ2hlY2tWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2s6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB+V2FzbUJvdW5kc0NoZWNrVmFsdWUo
KTsKKworICAgIEdQUlJlZyBwaW5uZWRHUFIoKSBjb25zdCB7IHJldHVybiBtX3Bpbm5lZEdQUjsg
fQorICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikg
Y29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsK
KworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdhc21Cb3VuZHNDaGVja1ZhbHVlKE9yaWdpbiwgVmFs
dWUqIHB0ciwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgb2Zmc2V0KTsKKworICAgIEdQUlJl
ZyBtX3Bpbm5lZEdQUjsKKyAgICB1bnNpZ25lZCBtX29mZnNldDsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXggODNjYjJlMTQwNjBkY2NiMmY0ZjZmNjA3YmEwNjFj
ZWMwZTU3OTI1Zi4uNmQ0YTE0NzIyMzRhM2Q1OTNjNDk4OGIzZWI4NzlkZGJjZjFmNmZhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTUyLDYgKzUyLDkgQEAgbmFt
ZXNwYWNlIEFpciB7CiBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIENDYWxsU3BlY2lh
bDsKIAordHlwZWRlZiB2b2lkIFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uKENDYWxs
SGVscGVycyYsIEdQUlJlZywgdW5zaWduZWQpOwordHlwZWRlZiBTaGFyZWRUYXNrPFdhc21Cb3Vu
ZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uPiBXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CisKIC8v
IFRoaXMgaXMgYW4gSVIgdGhhdCBpcyB2ZXJ5IGNsb3NlIHRvIHRoZSBiYXJlIG1ldGFsLiBJdCBy
ZXF1aXJlcyBhYm91dCA0MHggbW9yZSBieXRlcyB0aGFuIHRoZQogLy8gZ2VuZXJhdGVkIG1hY2hp
bmUgY29kZSAtIGZvciBleGFtcGxlIGlmIHlvdSdyZSBnZW5lcmF0aW5nIDFNQiBvZiBtYWNoaW5l
IGNvZGUsIHlvdSBuZWVkIGFib3V0CiAvLyA0ME1CIG9mIEFpci4KQEAgLTI2MSw2ICsyNjQsMTMg
QEAgcHVibGljOgogCiAgICAgY29uc3QgY2hhciogbGFzdFBoYXNlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdFBoYXNlTmFtZTsgfQogCisgICAgdm9pZCBzZXRXYXNtQm91bmRzQ2hlY2tHZW5l
cmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gZ2VuZXJhdG9yKQorICAgIHsK
KyAgICAgICAgbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IgPSBnZW5lcmF0b3I7CisgICAgfQor
CisgICAgUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gd2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7IH0KKwog
ICAgIC8vIFRoaXMgaXMgYSBoYXNoIG9mIHRoZSBjb2RlLiBZb3UgY2FuIHVzZSB0aGlzIGlmIHlv
dSB3YW50IHRvIHB1dCBjb2RlIGludG8gYSBoYXNodGFibGUsIGJ1dAogICAgIC8vIGl0J3MgbWFp
bmx5IGZvciB2YWxpZGF0aW5nIHRoZSByZXN1bHRzIGZyb20gSlNBaXIuCiAgICAgdW5zaWduZWQg
anNIYXNoKCkgY29uc3Q7CkBAIC0yOTgsNiArMzA4LDcgQEAgcHJpdmF0ZToKICAgICBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgVmVjdG9yPEZyZXF1ZW50
ZWRCbG9jaz4gbV9lbnRyeXBvaW50czsgLy8gVGhpcyBpcyBlbXB0eSB1bnRpbCBhZnRlciBsb3dl
ckVudHJ5U3dpdGNoKCkuCiAgICAgVmVjdG9yPENDYWxsSGVscGVyczo6TGFiZWw+IG1fZW50cnlw
b2ludExhYmVsczsgLy8gVGhpcyBpcyBlbXB0eSB1bnRpbCBjb2RlIGdlbmVyYXRpb24uCisgICAg
UmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcj4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0
b3I7CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhhc2VOYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwCmluZGV4IGY2ZWI1ZjM4ZDFmYTBkY2Y2YTVk
NGU2ZTlhMGYwNWY2YTNiNmMyZDQuLjJhMmRmMmZiZGM3Yjk3NGFhMjNkODlkNzI0YjgyZDBjNTQ4
MDIyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKQEAg
LTE3OCw2ICsxNzgsMTcgQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIFNodWZmbGVDdXN0b206OmdlbmVy
YXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVycyYsIEdlbmVyYXRpb24KICAgICByZXR1cm4gQ0Nh
bGxIZWxwZXJzOjpKdW1wKCk7CiB9CiAKK2Jvb2wgV2FzbUJvdW5kc0NoZWNrQ3VzdG9tOjppc1Zh
bGlkRm9ybShJbnN0JiBpbnN0KQoreworICAgIGlmIChpbnN0LmFyZ3Muc2l6ZSgpICE9IDIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWluc3QuYXJnc1swXS5pc1RtcCgpICYmICFp
bnN0LmFyZ3NbMF0uaXNTb21lSW1tKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBpbnN0LmFyZ3NbMV0uaXNSZWcoKTsKK30KKworCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ3VzdG9tLmgKaW5kZXggOGI5MGZlZjBlMjA3ZjdlNWQ2ZGQ3NDNkNTFjNjA0
ZDg4MjhkMjU1Ni4uYjBkNTVjZGZhYzM1MDlhZDAzOTNhNDFmMDFlNWFmYTg1N2Y4NjU1MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCkBAIC0yNyw5ICsyNywxMiBA
QAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRl
ICJBaXJHZW5lcmF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkFpckluc3QuaCIKICNpbmNsdWRl
ICJBaXJTcGVjaWFsLmgiCi0jaW5jbHVkZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUgIkIzVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKQEAgLTI3Myw2ICsyNzYs
NTMgQEAgc3RydWN0IEVudHJ5U3dpdGNoQ3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8
RW50cnlTd2l0Y2hDdXN0b20+IHsKICAgICB9CiB9OwogCitzdHJ1Y3QgV2FzbUJvdW5kc0NoZWNr
Q3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8V2FzbUJvdW5kc0NoZWNrQ3VzdG9tPiB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJn
KEluc3QmIGluc3QsIGNvbnN0IEZ1bmMmIGZ1bmN0b3IpCisgICAgeworICAgICAgICBmdW5jdG9y
KGluc3QuYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6V2lkdGg2NCk7CisgICAgICAg
IGZ1bmN0b3IoaW5zdC5hcmdzWzFdLCBBcmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpXaWR0aDY0KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEZvcm1TdGF0aWMoQXJndW1lbnRzLi4uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlzVmFsaWRGb3JtKEluc3QmKTsK
KworICAgIHN0YXRpYyBib29sIGFkbWl0c1N0YWNrKEluc3QmLCB1bnNpZ25lZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1Rlcm1pbmFs
KEluc3QmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgYm9vbCBoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyhJbnN0JikKKyAgICB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBDQ2FsbEhlbHBlcnM6Okp1bXAg
Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0
JiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUqIHZhbHVlID0g
aW5zdC5vcmlnaW4tPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVlPigpOworICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgb3V0T2ZCb3VuZHMgPSBJbnN0KEFpcjo6QnJhbmNoNjQsIHZhbHVlLCBBcmc6
OnJlbENvbmQoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwpLCBpbnN0LmFyZ3NbMF0sIGluc3Qu
YXJnc1sxXSkuZ2VuZXJhdGUoaml0LCBjb250ZXh0KTsKKworICAgICAgICBjb250ZXh0LmxhdGVQ
YXRocy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazxHZW5lcmF0aW9uQ29udGV4dDo6TGF0ZVBhdGhG
dW5jdGlvbj4oCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVy
YXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLmxpbmsoJmppdCk7
CisgICAgICAgICAgICAgICAgY29udGV4dC5jb2RlLT53YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3Io
KS0+cnVuKGppdCwgdmFsdWUtPnBpbm5lZEdQUigpLCB2YWx1ZS0+b2Zmc2V0KCkpOworICAgICAg
ICAgICAgfSkpOworCisgICAgICAgIC8vIFdlIHNhaWQgd2Ugd2VyZSBub3QgYSB0ZXJtaW5hbC4K
KyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcCgpOworICAgIH0KK307CisKIH0gfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCBl
OTQ2NzJlNzg2ZDA2ODAwYTZkMzZhMzFiMDJhM2U5OWI1ODkwYjExLi4xNzk3MmEzZDM1YThiNzhh
MTFkZTRlNmM5ZWZkNjlhNjcyMDZjN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTg4OSw0ICs4ODksNyBAQCBjdXN0b20gUGF0Y2gK
IGN1c3RvbSBDQ2FsbAogY3VzdG9tIENvbGRDQ2FsbAogCisjIFRoaXMgaXMgYSBzcGVjaWFsIHdh
c20gb3Bjb2RlIHRoYXQgYnJhbmNoZXMgdG8gYSB0cmFwIGhhbmRsZXIuIFRoaXMgdXNlcyB0aGUg
Z2VuZXJhdG9yIGxvY2F0ZWQgdG8gQWlyOjpDb2RlCisjIHRvIHByb2R1Y2UgdGhlIHNpZGUtZXhp
dCBjb2RlLgorY3VzdG9tIFdhc21Cb3VuZHNDaGVjawogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCmluZGV4IGVjMjRlNGRjNjBjYTUyOWVkMTBjOTE4MzUxYzQ0MjQ0NTZlODVhMDcuLmFj
MzFjM2NmNjMxZGUxZjBjNTVmMWI3YjBmMDA5NmE2ZmEzOTczMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiQjNWYWxpZGF0ZS5o
IgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVl
LmgiCisjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgIkNDYWxs
SGVscGVycy5oIgogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCkBA
IC0xMzcyOSw2ICsxMzczMCwzNyBAQCB2b2lkIHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigp
CiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWdu
ZWQgb2Zmc2V0KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEdQUlJlZyBwaW5uZWQgPSBH
UFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOworCisg
ICAgcHJvYy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgYWN0dWFsT2Zmc2V0KSB7CisgICAgICAgIENI
RUNLX0VRKHBpbm5lZEdQUiwgcGlubmVkKTsKKyAgICAgICAgQ0hFQ0tfRVEoYWN0dWFsT2Zmc2V0
LCBvZmZzZXQpOworCisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2Ug
YSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAg
Ly8gc2F2ZXMuCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQy
KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBpZiAocG9pbnRlclR5cGUoKSAhPSBJbnQzMikKKyAgICAgICAgbGVmdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBsZWZ0KTsKKyAgICByb290
LT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0LCBw
aW5uZWQsIG9mZnNldCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAweDQyKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAx
LCAyICsgb2Zmc2V0KSwgMHg0Mik7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2Rl
LCAzLCAyICsgb2Zmc2V0KSwgNDIpOworICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29k
ZSwgMiwgMiArIG9mZnNldCksIDQyKTsKK30KKwogLy8gTWFrZSBzdXJlIHRoZSBjb21waWxlciBk
b2VzIG5vdCB0cnkgdG8gb3B0aW1pemUgYW55dGhpbmcgb3V0LgogTkVWRVJfSU5MSU5FIGRvdWJs
ZSB6ZXJvKCkKIHsKQEAgLTE1MTQ4LDcgKzE1MTgwLDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQogICAgIFJVTih0ZXN0U29tZUVhcmx5UmVnaXN0ZXIoKSk7CiAgICAgUlVOKHRlc3RQ
YXRjaHBvaW50VGVybWluYWxSZXR1cm5WYWx1ZSh0cnVlKSk7CiAgICAgUlVOKHRlc3RQYXRjaHBv
aW50VGVybWluYWxSZXR1cm5WYWx1ZShmYWxzZSkpOwotICAgIAorCiAgICAgUlVOKHRlc3RNZW1v
cnlGZW5jZSgpKTsKICAgICBSVU4odGVzdFN0b3JlRmVuY2UoKSk7CiAgICAgUlVOKHRlc3RMb2Fk
RmVuY2UoKSk7CkBAIC0xNTE2OCw3ICsxNTIwMCwxMiBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwogICAgIFJVTih0ZXN0
TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXph
dGlvbigpKTsKLSAgICAKKworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDApKTsKKyAgICBS
VU4odGVzdFdhc21Cb3VuZHNDaGVjaygxMDApKTsKKyAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVj
aygxMDAwMCkpOworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSAtIDUpKTsKKwogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAg
IFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpC
cmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKICAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRB
bmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAweGZmLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWly
OjpBcmc6OlRtcCkpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cg
Yi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA0YzcwZjc5NWRkNzM2NTliMGYw
YzliYjgxYzllM2JmZjZjNjZmODRiLi42Y2UxM2Q4MTY2OGJhZTAwZTg4OWRkNzIxZGI0MzAwYjJm
YzNhMThiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZworKysgYi9X
ZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTEy
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEIzIG5l
ZWRzIGEgc3BlY2lhbCBXYXNtQm91bmRzQ2hlY2sgT3Bjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBGaWxpcCBQaXpsby4KKworICAgICAgICBVcGRhdGUgdGhlIGRvY3MgZm9yIHRoZSBuZXcgV2Fz
bUJvdW5kc0NoZWNrIG9wY29kZS4KKworICAgICAgICAqIGRvY3MvYjMvaW50ZXJtZWRpYXRlLXJl
cHJlc2VudGF0aW9uLmh0bWw6CisKIDIwMTYtMTAtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBjb250cmlidXRvcnMuanNvbiB0byBh
IGZsYXQgbGlzdApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVy
bWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2Iz
L2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCmluZGV4IGJkYzU3YTEwNDk3YjMxZmQ5
Mjc2MDdmYzY1OTBhYjQ3ZjMyNDc1ZGYuLjYyYWM5N2NiM2NlYTQ2ZGFiYmUwZjg0NmM3MWU2ZGJm
MmM5NzM5N2EgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1l
ZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAorKysgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3Mv
YjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKQEAgLTUzNyw2ICs1MzcsMTYgQEAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICB0byBhbiBpbnN0cnVjdGlvbiB0aGF0
IGJyYW5jaGVzIHRvIHRoZSBleGl0IGlmIEBhICZndDs9IEBiIG9yIGlmIGVpdGhlciBAYSBvciBA
YiBhcmUKICAgICAgICAgTmFOLiAgTXVzdCB1c2UgdGhlIENoZWNrVmFsdWUgY2xhc3MuPC9kZD4K
IAorICAgICAgPGR0PlZvaWQgV2FzbUJvdW5kc0NoZWNrKEludDMyLCBwaW5uZWRHUFIsIG9mZnNl
dCk8L2R0PgorICAgICAgPGRkPlNwZWNpYWwgV2FzbSBvcGNvZGUuIFRoaXMgYnJhbmNoZXMgb24g
dGhlIGZpcnN0IGNoaWxkLiBJZiB0aGUgZmlyc3QgY2hpbGQgcGx1cyB0aGUgb2Zmc2V0CisgICAg
ICAgIHByb2R1Y2VzIGEgSW50NjQgbGVzcyB0aGFuIHRvIHRoZSBwaW5uZWRHUFIgdGhpcyBmYWxs
cyB0aHJvdWdoLiBPdGhlcndpc2UsIGl0IGJyYW5jaGVzIHRvCisgICAgICAgIHRoZSBleGl0IHBh
dGggZ2VuZXJhdGVkIGJ5IHRoZSBwYXNzZWQgZ2VuZXJhdG9yLiBVbmxpa2UgdGhlIFBhdGNoL0No
ZWNrIGZhbWlseSwgdGhlCisgICAgICAgIGdlbmVyYXRvciB1c2VkIGJ5IFdhc21Cb3VuZHNDaGVj
ayBzb3VsZCBiZSBzZXQgb24gdGhlIFByb2N1ZGVyIGl0c2VsZi4gVGhlIEdSUFJlZyBwYXNzZWQg
aW4KKyAgICAgICAgcGlubmVkR1BSIG11c3QgYWxzbyBiZSBtYXJrZWQgYXMgcGlubmVkIGJ5IGNh
bGxpbmcgdGhlIFByb2NlZHVyZSdzIHBpbm5pbmcgQVBJLiBCMyBhc3N1bWVzCisgICAgICAgIHRo
ZSBXYXNtQm91bmRzQ2hlY2sgd2lsbCBzaWRlLWV4aXQgd2hlbiB0aGUgaXQgYnJhbmNoZXMsIHNv
IHRoZSBnZW5lcmF0b3IgbXVzdCBkbyBzb21lIGtpbmQKKyAgICAgICAgb2YgdGVybWluYXRpb24u
IEluIFdhc20gdGhpcyBpcyB1c2VkIHRvIHRyYXAgYW5kIHVud2luZCBiYWNrIHRvIEpTLiBNdXN0
IHVzZSB0aGUKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUgY2xhc3MuPC9kZD4KKwogICAg
ICAgPGR0PlZvaWQgVXBzaWxvbihULCBecGhpKTwvZHQ+CiAgICAgICA8ZGQ+QjMgdXNlcyBTU0Eu
ICBTU0EgcmVxdWlyZXMgdGhhdCBlYWNoIHZhcmlhYmxlIGdldHMgYXNzaWduZWQgdG8gb25seSBv
bmNlIGFueXdoZXJlIGluCiAgICAgICAgIHRoZSBwcm9jZWR1cmUuICBCdXQgdGhhdCBkb2Vzbid0
IHdvcmsgaWYgeW91IGhhdmUgYSB2YXJpYWJsZSB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIHRoZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291433</attachid>
            <date>2016-10-12 18:11:18 -0700</date>
            <delta_ts>2016-10-12 18:45:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163246-20161012180753.patch</filename>
            <type>text/plain</type>
            <size>31549</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi5lNWE3ODJiNjNjMWY1NDcz
MDA0MGU3OWFhODZiMjRkOGUzMjYzNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNi0xMC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBCMyBuZWVkcyBhIHNwZWNpYWwgV2FzbUJvdW5kc0NoZWNrIE9wY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgbmV3IE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBhcyB3ZWxsIGFzIGEgQjM6OlZh
bHVlIHN1YmNsYXNzIGZvciBpdCwKKyAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUuIFdhc21C
b3VuZHNDaGVja1ZhbHVlIHRha2VzIHRocmVlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gVGhlIGZp
cnN0IGlzCisgICAgICAgIHRoZSBJbnQzMiBwb2ludGVyIHZhbHVlIHVzZWQgdG8gYmUgdXNlZCBi
eSB0aGUgTG9hZC4gIE5leHQgaXMgdGhlIHBpbm5lZCByZWdpc3Rlci4gVGhlCisgICAgICAgIHBp
bm5lZCByZWdpc3RlciBtdXN0IGJlIHBpbm5lZCBieSBjYWxsaW5nIHByb2Muc2V0UGlubmVkKCkg
cHJpb3IgdG8gY29tcGlsaW5nIHRoZQorICAgICAgICBQcm9jZWR1cmUuIExhc3RseSwgdGhlIFdh
c21Cb3VuZHNDaGVja1ZhbHVlIHRha2VzIGFuIG9mZnNldC4gVGhlIFdhc21Cb3VuZHNDaGVja1Zh
bHVlIGlzCisgICAgICAgIHdpbGwgdGhlbiBlbWl0IGNvZGUgdGhhdCBzaWRlLWV4aXRzIGlmIHRo
ZSBJbnQ2NCBzdW0gb2YgdGhlIG9mZnNldCBhbmQgcG9pbnRlciBpcyBncmVhdGVyCisgICAgICAg
IHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIGluIHRoZSBwaW5uZWRSZWdpc3Rlci4gSW5zdGVh
ZCBvZiB0YWtpbmcgYSBnZW5lcmF0b3IgZm9yIGVhY2gKKyAgICAgICAgdmFsdWUgbGlrZSBDaGVj
ay9QYXRjaHBvaW50LCBXYXNtQm91bmRzQ2hlY2sgZ2V0cyBpdHMgZ2VuZXJhdG9yIGRpcmVjdGx5
IG9mZiBBaXI6OkNvZGUuIEluCisgICAgICAgIEFpciB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgQ3Vz
dG9tIG9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2Ug
c2hvdWxkIGFkZCBXYXNtQm91bmRzQ2hlY2sgdG8gQ1NFIHNvIGl0IGNhbiBlbGltaW5hdGUgcmVk
dW5kYW50IGJvdW5kcworICAgICAgICBjaGVja3MuIEF0IHRoZSBmaXJzdCBjdXQsIHdlIGNhbiBy
ZW1vdmUgYW55IFdhc21Cb3VuZHNDaGVjayBkb21pbmF0ZWQgYnkgYW5vdGhlcgorICAgICAgICBX
YXNtQm91bmRzQ2hlY2sgd2l0aCB0aGUgc2FtZSBwb2ludGVyIGFuZCBwaW5uZWRHUFIsIGFuZCBh
IGxhcmdlciBvZmZzZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGIzL0Iz
TG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBi
My9CM09wY29kZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6UHJvY2VkdXJlOjpzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAg
ICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OnNldFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcik6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6Cisg
ICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0
cyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6CisgICAgICAgICogYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJv
dW5kc0NoZWNrVmFsdWU6On5XYXNtQm91bmRzQ2hlY2tWYWx1ZSk6CisgICAgICAgIChKU0M6OkIz
OjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6V2FzbUJvdW5kc0NoZWNrVmFsdWUpOgorICAgICAgICAo
SlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKiBiMy9C
M1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJv
dW5kc0NoZWNrVmFsdWU6OmFjY2VwdHMpOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0No
ZWNrVmFsdWU6OnBpbm5lZEdQUik6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tW
YWx1ZTo6b2Zmc2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5oOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpDb2RlOjpzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpDb2RlOjp3YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IpOgorICAgICAgICAq
IGIzL2Fpci9BaXJDdXN0b20uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRz
Q2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKiBiMy9haXIvQWlyQ3VzdG9tLmg6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Zm9yRWFjaEFy
Zyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6aXNWYWxp
ZEZvcm1TdGF0aWMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0
b206OmFkbWl0c1N0YWNrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0NoZWNr
Q3VzdG9tOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6V2FzbUJvdW5kc0No
ZWNrQ3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Oldhc21Cb3VuZHNDaGVja0N1c3RvbTo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgor
CiAyMDE2LTEwLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgdmFyaWFibGVzIGluIGFycmF5UHJvdG9GdW5jU3BsaWNlKCkgdG8gbWF0Y2ggbmFtZXMg
aW4gdGhlIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTdjZWZm
NjYxNDZiOTk4YzUxM2JhMDdlMTk2YmMwZmNjYWJjMmQ5Zi4uYWFlNzFiNDJmMDQ1MmM4NTRlOThj
NGU4OTNiMWI4YzdmZjNjYWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTcyLDYgKzE3Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvQjNW
YWx1ZVJlcC5jcHAKICAgICBiMy9CM1ZhcmlhYmxlLmNwcAogICAgIGIzL0IzVmFyaWFibGVWYWx1
ZS5jcHAKKyAgICBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcAogCiAgICAgYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDQ0YjJjNGQzMjYyZDQxOTUxNGM5MTRjZWRi
ZjNjNWFhOWVmZjNmYS4uMTA4ZmU4YWUwZjk0YjlmNzQ3MzRkNzgxODhmMGNmNWNmYzhhMTgxOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDYsNiArMTIwNiw4IEBACiAJCTUy
Qzk1MkI5MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2
IC8qIFR5cGVQcm9maWxlci5jcHAgKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAv
KiBXQVNNUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggKi87IH07CiAJCTUzMTM3
NEJGMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV0FT
TVBsYW4uY3BwICovOyB9OworCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5jcHAgKi87IH07CisJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICov
OyB9OwogCQk1MzQ4NkJCNzFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCNjFDMTc5NUMz
MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQk1MzQ4NkJCQjFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFy
cmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovOyB9OwogCQk1MzQ5
MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDkwMjgyMUM3MjQyQzgwMDEyQkNC
OCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovOyB9OwpAQCAtMzQ0MSw2ICszNDQzLDggQEAKIAkJ
NTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0FTTVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYz
QUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThF
ODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDg1Nyw2ICs0ODYxLDggQEAKIAkJCQkwRjMzOEUxODFCRjI4NkVBMDAxM0M4OEYg
LyogQjNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEJBMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCAqLywKIAkJCQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIg
LyogQjNCb3R0b21Qcm92aWRlci5oICovLAorCQkJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAv
KiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQk1MzQxRkM3MTFEQUMzNDNDMDBF
N0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAogCQkJCTBGNkI4QURFMUM0RUZF
MTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJMEY2QjhBREYx
QzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCiAJCQkJREM5QTBD
MUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uY3BwICovLApAQCAtNzY1MCw2
ICs3NjU2LDcgQEAKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNjcxNTNBMjFFMjAw
MEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkI5MjFEMTZEMDJGMzAwMDU1QTVEQiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAv
KiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2ODJGQjMxOUJDQjM2
NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5
RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTM2NSw2ICs5MzcyLDcgQEAKIAkJCQkyQUFDRTYzQzE4Q0E1QTAzMDBFRDAxOTEg
LyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJGMTVB
OERDRTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkFERkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzQxRkM3MDFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3RENBMDA4NUYzQzYgLyog
R2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMzE4QjAxNzYzMDA1
Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUx
MDdFQzBFNzAwMTNFN0IyIC8qIEdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZDYxYTA3NjRhN2JmMmI1
NjAzZjJjYjQ5MGYwZWVkODk1MTY1Y2U2Mi4uNWM4OWNiZGI5NjkyNzMzZDQ0NzMxZjZhYjU2ZDhk
MWFhYzc2ZjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
QEAgLTU2OCwxMyArNTY4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBsb2FkUHJvbWlz
ZShsb2FkVmFsdWUsIExvYWQpOwogICAgIH0KIAorICAgIEFyZyBpbW0oaW50NjRfdCBpbnRWYWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmc6OmltbShpbnRWYWx1ZSk7CisgICAgICAgIHJldHVybiBBcmco
KTsKKyAgICB9CisKICAgICBBcmcgaW1tKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS0+aGFzSW50KCkpIHsKLSAgICAgICAgICAgIGludDY0X3QgaW50VmFsdWUgPSB2YWx1
ZS0+YXNJbnQoKTsKLSAgICAgICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGludFZhbHVl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbW0oaW50VmFsdWUpOwotICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZS0+aGFzSW50KCkpCisgICAgICAgICAgICByZXR1cm4gaW1tKHZh
bHVlLT5hc0ludCgpKTsKICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgIH0KIApAQCAtMjYyNyw2
ICsyNjMxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEIzOjpXYXNtQm91bmRzQ2hlY2s6IHsKKyAgICAgICAgICAgIFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPFdhc21Cb3VuZHNDaGVja1ZhbHVlPigp
OworCisgICAgICAgICAgICBWYWx1ZSogcHRyID0gdmFsdWUtPmNoaWxkKDApOworCisgICAgICAg
ICAgICBBcmcgdGVtcCA9IG1fY29kZS5uZXdUbXAoQXJnOjpHUCk7CisgICAgICAgICAgICBhcHBl
bmQoSW5zdChNb3ZlMzIsIHZhbHVlLCB0bXAocHRyKSwgdGVtcCkpOworICAgICAgICAgICAgaWYg
KHZhbHVlLT5vZmZzZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbW0odmFsdWUtPm9mZnNl
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBpbW0odmFsdWUtPm9mZnNl
dCgpKSwgdGVtcCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IEFyZyBiaWdJbW0gPSBtX2NvZGUubmV3VG1wKEFyZzo6R1ApOworICAgICAgICAgICAgICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUtPm9mZnNldCgpKSwgYmlnSW1tKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBiaWdJbW0sIHRlbXApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZChJbnN0KEFpcjo6V2Fz
bUJvdW5kc0NoZWNrLCB2YWx1ZSwgdGVtcCwgQXJnKHZhbHVlLT5waW5uZWRHUFIoKSkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgVXBzaWxvbjogewog
ICAgICAgICAgICAgVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgICAg
ICBhcHBlbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRleCBmMDNhOTRj
ZWRlZmZlODRmMjljNDY5NWVmMzM4OTE2NjIxNWI1Mzk2Li5lMTAwZDNiMzlmZjUyYzIyMjgyY2Nk
N2NkNTk5NzFlY2FjMjQ3N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAK
QEAgLTI3Miw2ICsyNzIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
T3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENoZWNrOgogICAgICAgICBvdXQucHJpbnQoIkNoZWNr
Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAg
b3V0LnByaW50KCJXYXNtQm91bmRzQ2hlY2siKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
VXBzaWxvbjoKICAgICAgICAgb3V0LnByaW50KCJVcHNpbG9uIik7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggYzk3NzM0NzcwZGM5NTI1YzhiZmNi
Njg3YWU1MDFlZjVjMjlhNzBjNC4uZTMyZTlkMzAyMGRmNjM5NmQwNjAyOWM3ZmE1NTIzMzk4OTgw
ZTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTIwOSw2ICsyMDksMTIg
QEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBXYXJtQW55LiBJdCB3aWxsIG5vdCBo
YXZlIGFuIG91dHB1dCBjb25zdHJhaW50LgogICAgIENoZWNrLAogCisgICAgLy8gU3BlY2lhbCBX
YXNtIG9wY29kZSB0aGF0IHRha2VzIGEgSW50MzIsIGEgc3BlY2lhbCBwaW5uZWQgZ3ByIGFuZCBh
biBvZmZzZXQuIFRoaXMgbm9kZSBleGlzdHMKKyAgICAvLyB0byBhbGxvdyB1cyB0byBDU0UgV2Fz
bUJvdW5kc0NoZWNrcyBpZiBib3RoIHVzZSB0aGUgc2FtZSBwb2ludGVyIGFuZCBvbmUgZG9taW5h
dGVzIHRoZSBvdGhlci4KKyAgICAvLyBXaXRob3V0IHNvbWUgc3VjaCBub2RlIEIzIHdvdWxkIG5v
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5uZXIgd29ya2luZ3Mgb2Ygd2Fz
bQorICAgIC8vIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBzdWNoIG9wdGltaXphdGlvbnMuCisgICAg
V2FzbUJvdW5kc0NoZWNrLAorCiAgICAgLy8gU1NBIHN1cHBvcnQsIGluIHRoZSBzdHlsZSBvZiBE
RkcgU1NBLgogICAgIFVwc2lsb24sIC8vIFRoaXMgdXNlcyB0aGUgVXBzaWxvblZhbHVlIGNsYXNz
LgogICAgIFBoaSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4
IDI5ZmMxYzQxMzM5MDg2MjYyZjM3YzkzOTY5MjhiMzZkOWEyMDliNGEuLjZjZGUyZjExMDZmNzRk
MGY3YTc4OTgzZDFkZjRhZWNiOWFjM2MxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmNwcApAQCAtMzQ4LDYgKzM0OCwxMSBAQCB2b2lkIFByb2NlZHVyZTo6c2V0Qmxv
Y2tPcmRlckltcGwoVmVjdG9yPEJhc2ljQmxvY2sqPiYgYmxvY2tzKQogICAgIH0KIH0KIAordm9p
ZCBQcm9jZWR1cmU6OnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yPiBnZW5lcmF0b3IpCit7CisgICAgY29kZSgpLnNldFdhc21Cb3VuZHND
aGVja0dlbmVyYXRvcihnZW5lcmF0b3IpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
IAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5oCmluZGV4IGQxYzcyMmY0YTJmYWU4ZmEwOThkNzZiZTg2M2E1OGU2NTc4MjVkYjcuLjIy
MzYxNDVlZjU1M2YxYTlkMjUzMzJkMWM5ODkyNzMyNDgyMTU2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCkBAIC01OCw2ICs1OCw5IEBAIGNsYXNzIFZhcmlhYmxlOwog
CiBuYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCit0eXBlZGVmIHZvaWQgV2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgR1BSUmVnLCB1bnNpZ25lZCk7
Cit0eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKKwogLy8gVGhpcyByZXByZXNlbnRzIEIzJ3MgdmlldyBv
ZiBhIHBpZWNlIG9mIGNvZGUuIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBtdXN0IGV4aXN0IGluIGEg
MToxCiAvLyByZWxhdGlvbnNoaXAgd2l0aCBBaXI6OkNvZGUuIEIzOjpQcm9jZWR1cmUgYW5kIEFp
cjo6Q29kZSBhcmUganVzdCBkaWZmZXJlbnQgZmFjYWRlcyBvZiB0aGUgQjMKIC8vIGNvbXBpbGVy
J3Mga25vd2xlZGdlIGFib3V0IGEgcGllY2Ugb2YgY29kZS4gU29tZSBraW5kcyBvZiBzdGF0ZSBh
cmVuJ3QgcGVyZmVjdCBmaXRzIGZvciBlaXRoZXIKQEAgLTIyMSw2ICsyMjQsMTQgQEAgcHVibGlj
OgogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3BjVG9Pcmln
aW5NYXA7IH0KICAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyByZXR1
cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2Vu
ZXJhdG9yPik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgc2V0
V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgewor
ICAgICAgICBzZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoUmVmUHRyPFdhc21Cb3VuZHNDaGVj
a0dlbmVyYXRvcj4oY3JlYXRlU2hhcmVkVGFzazxXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5j
dGlvbj4oZnVuY3RvcikpKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAK
aW5kZXggYWZjMDBhMmVhYjUwY2ZiM2JlZjFlMTg0MjU5NzAyNTE0NDYyYjFmNi4uYjA2MzQ0ZTQw
NTdiZjMxMWRkNmU2ZjZlMTM3YzFmMDFkZDA3MDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkK
IAorI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIK
ICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3Jz
LmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVk
ZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtNDEzLDYgKzQxNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmFzPFN0YWNrbWFwVmFsdWU+KCktPmNvbnN0cmFpbmVkQ2hpbGQoMCkucmVw
KCkgPT0gVmFsdWVSZXA6Oldhcm1BbnksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgdmFsaWRhdGVTdGFja21hcCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKG1fcHJv
Y2VkdXJlLmNvZGUoKS5pc1Bpbm5lZCh2YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCkt
PnBpbm5lZEdQUigpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RShtX3Byb2NlZHVyZS5jb2RlKCkud2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVwc2ls
b246CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRz
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAppbmRleCBhMDg3ZjUxZWNlMWRkMjVlMWMyMjQzNmE4MzcwMzczNzg3MDM4NDBk
Li41YjQxMTk4NjA2YzU2N2E3N2Q1YmU4NDEyYzVhNmVkOTRlOWY4NzMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC02MTYsNiArNjE2LDEwIEBAIEVmZmVjdHMgVmFsdWU6
OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIHJlc3VsdCA9IEVmZmVj
dHM6OmZvckNoZWNrKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNr
OgorICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZXhp
dHNTaWRld2F5cyA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVXBzaWxvbjoKICAg
ICBjYXNlIFNldDoKICAgICAgICAgcmVzdWx0LndyaXRlc0xvY2FsU3RhdGUgPSB0cnVlOwpAQCAt
ODA5LDYgKzgxMyw3IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSogZmly
c3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2Ug
T29wczoKICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrOgog
ICAgICAgICByZXR1cm4gVm9pZDsKICAgICBjYXNlIFNlbGVjdDoKICAgICAgICAgQVNTRVJUKHNl
Y29uZENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iM2EzMjkwZGM5MjJiYTkyY2Q4ZmRkNjkwMWUy
YjQxM2U0ZmMyZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1dhc21Cb3VuZHNDaGVja1ZhbHVl
Ojp+V2FzbUJvdW5kc0NoZWNrVmFsdWUoKQoreworfQorCitXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6
V2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHB0ciwgR1BSUmVnIHBp
bm5lZEdQUiwgdW5zaWduZWQgb2Zmc2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgV2Fz
bUJvdW5kc0NoZWNrLCBvcmlnaW4sIHB0cikKKyAgICAsIG1fcGlubmVkR1BSKHBpbm5lZEdQUikK
KyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKK30KKworVmFsdWUqIFdhc21Cb3VuZHNDaGVja1Zh
bHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBuZXcgV2FzbUJvdW5kc0NoZWNr
VmFsdWUoKnRoaXMpOworfQorCit2b2lkIFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpkdW1wTWV0YShD
b21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5w
cmludChjb21tYSwgInNpemVSZWdpc3RlciA9ICIsIG1fcGlubmVkR1BSLCAiLCBvZmZzZXQgPSAi
LCBtX29mZnNldCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dh
c21Cb3VuZHNDaGVja1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjYzU0Yjg2Yjk4ZTdkZDRiMjA3ZDk0ZWJkY2U4
NDk5ZDI5MjhkODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlICJDQ2FsbEhl
bHBlcnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIFdhc21C
b3VuZHNDaGVja1ZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUo
KSkgeworICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVjazoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIH5XYXNtQm91bmRzQ2hlY2tWYWx1ZSgpOworCisgICAgR1BS
UmVnIHBpbm5lZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1fcGlubmVkR1BSOyB9CisgICAgdW5zaWdu
ZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKworcHJvdGVjdGVkOgorICAg
IHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2Fz
bUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luLCBWYWx1ZSogcHRyLCBHUFJSZWcgcGlubmVkR1BSLCB1
bnNpZ25lZCBvZmZzZXQpOworCisgICAgR1BSUmVnIG1fcGlubmVkR1BSOworICAgIHVuc2lnbmVk
IG1fb2Zmc2V0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCA4
M2NiMmUxNDA2MGRjY2IyZjRmNmY2MDdiYTA2MWNlYzBlNTc5MjVmLi42ZDRhMTQ3MjIzNGEzZDU5
M2M0OTg4YjNlYjg3OWRkYmNmMWY2ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckNvZGUuaApAQCAtNTIsNiArNTIsOSBAQCBuYW1lc3BhY2UgQWlyIHsKIGNsYXNzIEJsb2NrSW5z
ZXJ0aW9uU2V0OwogY2xhc3MgQ0NhbGxTcGVjaWFsOwogCit0eXBlZGVmIHZvaWQgV2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgR1BSUmVnLCB1bnNpZ25lZCk7
Cit0eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKKwogLy8gVGhpcyBpcyBhbiBJUiB0aGF0IGlzIHZlcnkg
Y2xvc2UgdG8gdGhlIGJhcmUgbWV0YWwuIEl0IHJlcXVpcmVzIGFib3V0IDQweCBtb3JlIGJ5dGVz
IHRoYW4gdGhlCiAvLyBnZW5lcmF0ZWQgbWFjaGluZSBjb2RlIC0gZm9yIGV4YW1wbGUgaWYgeW91
J3JlIGdlbmVyYXRpbmcgMU1CIG9mIG1hY2hpbmUgY29kZSwgeW91IG5lZWQgYWJvdXQKIC8vIDQw
TUIgb2YgQWlyLgpAQCAtMjYxLDYgKzI2NCwxMyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBjaGFy
KiBsYXN0UGhhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UGhhc2VOYW1lOyB9CiAKKyAg
ICB2b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihSZWZQdHI8V2FzbUJvdW5kc0NoZWNr
R2VuZXJhdG9yPiBnZW5lcmF0b3IpCisgICAgeworICAgICAgICBtX3dhc21Cb3VuZHNDaGVja0dl
bmVyYXRvciA9IGdlbmVyYXRvcjsKKyAgICB9CisKKyAgICBSZWZQdHI8V2FzbUJvdW5kc0NoZWNr
R2VuZXJhdG9yPiB3YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3dh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcjsgfQorCiAgICAgLy8gVGhpcyBpcyBhIGhhc2ggb2YgdGhl
IGNvZGUuIFlvdSBjYW4gdXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gcHV0IGNvZGUgaW50byBhIGhh
c2h0YWJsZSwgYnV0CiAgICAgLy8gaXQncyBtYWlubHkgZm9yIHZhbGlkYXRpbmcgdGhlIHJlc3Vs
dHMgZnJvbSBKU0Fpci4KICAgICB1bnNpZ25lZCBqc0hhc2goKSBjb25zdDsKQEAgLTI5OCw2ICsz
MDgsNyBAQCBwcml2YXRlOgogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IG1fY2FsbGVlU2F2ZVJl
Z2lzdGVyczsKICAgICBWZWN0b3I8RnJlcXVlbnRlZEJsb2NrPiBtX2VudHJ5cG9pbnRzOyAvLyBU
aGlzIGlzIGVtcHR5IHVudGlsIGFmdGVyIGxvd2VyRW50cnlTd2l0Y2goKS4KICAgICBWZWN0b3I8
Q0NhbGxIZWxwZXJzOjpMYWJlbD4gbV9lbnRyeXBvaW50TGFiZWxzOyAvLyBUaGlzIGlzIGVtcHR5
IHVudGlsIGNvZGUgZ2VuZXJhdGlvbi4KKyAgICBSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJh
dG9yPiBtX3dhc21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKICAgICBjb25zdCBjaGFyKiBtX2xhc3RQ
aGFzZU5hbWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckN1c3RvbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5j
cHAKaW5kZXggZjZlYjVmMzhkMWZhMGRjZjZhNWQ0ZTZlOWEwZjA1ZjZhM2I2YzJkNC4uMmEyZGYy
ZmJkYzdiOTc0YWEyM2Q4OWQ3MjRiODJkMGM1NDgwMjJjYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmNwcApAQCAtMTc4LDYgKzE3OCwxNyBAQCBDQ2FsbEhlbHBl
cnM6Okp1bXAgU2h1ZmZsZUN1c3RvbTo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJz
JiwgR2VuZXJhdGlvbgogICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXAoKTsKIH0KIAorYm9v
bCBXYXNtQm91bmRzQ2hlY2tDdXN0b206OmlzVmFsaWRGb3JtKEluc3QmIGluc3QpCit7CisgICAg
aWYgKGluc3QuYXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghaW5zdC5hcmdzWzBdLmlzVG1wKCkgJiYgIWluc3QuYXJnc1swXS5pc1NvbWVJbW0oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGluc3QuYXJnc1sxXS5pc1JlZygpOwor
fQorCisKIH0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1
c3RvbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAppbmRleCA4
YjkwZmVmMGUyMDdmN2U1ZDZkZDc0M2Q1MWM2MDRkODgyOGQyNTU2Li5iMGQ1NWNkZmFjMzUwOWFk
MDM5M2E0MWYwMWU1YWZhODU3Zjg2NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckN1c3RvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmgKQEAgLTI3LDkgKzI3LDEyIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisj
aW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgIkFpckdlbmVyYXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiQWlySW5zdC5oIgogI2luY2x1ZGUgIkFpclNwZWNpYWwuaCIKLSNpbmNsdWRlICJC
M1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJCM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1l
c3BhY2UgQWlyIHsKIApAQCAtMjczLDYgKzI3Niw1MyBAQCBzdHJ1Y3QgRW50cnlTd2l0Y2hDdXN0
b20gOiBwdWJsaWMgQ29tbW9uQ3VzdG9tQmFzZTxFbnRyeVN3aXRjaEN1c3RvbT4gewogICAgIH0K
IH07CiAKK3N0cnVjdCBXYXNtQm91bmRzQ2hlY2tDdXN0b20gOiBwdWJsaWMgQ29tbW9uQ3VzdG9t
QmFzZTxXYXNtQm91bmRzQ2hlY2tDdXN0b20+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgorICAgIHN0YXRpYyB2b2lkIGZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgRnVuYyYgZnVu
Y3RvcikKKyAgICB7CisgICAgICAgIGZ1bmN0b3IoaW5zdC5hcmdzWzBdLCBBcmc6OlVzZSwgQXJn
OjpHUCwgQXJnOjpXaWR0aDY0KTsKKyAgICAgICAgZnVuY3RvcihpbnN0LmFyZ3NbMV0sIEFyZzo6
VXNlLCBBcmc6OkdQLCBBcmc6OldpZHRoNjQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRm9ybVN0YXRpYyhBcmd1
bWVudHMuLi4pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3Rh
dGljIGJvb2wgaXNWYWxpZEZvcm0oSW5zdCYpOworCisgICAgc3RhdGljIGJvb2wgYWRtaXRzU3Rh
Y2soSW5zdCYsIHVuc2lnbmVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIGlzVGVybWluYWwoSW5zdCYpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIGhhc05vbkFyZ05vbkNvbnRy
b2xFZmZlY3RzKEluc3QmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgc3RhdGljIENDYWxsSGVscGVyczo6SnVtcCBnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhl
bHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgeworICAgICAgICBX
YXNtQm91bmRzQ2hlY2tWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8V2FzbUJvdW5kc0No
ZWNrVmFsdWU+KCk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBvdXRPZkJvdW5kcyA9IElu
c3QoQWlyOjpCcmFuY2g2NCwgdmFsdWUsIEFyZzo6cmVsQ29uZChDQ2FsbEhlbHBlcnM6OkFib3Zl
T3JFcXVhbCksIGluc3QuYXJnc1swXSwgaW5zdC5hcmdzWzFdKS5nZW5lcmF0ZShqaXQsIGNvbnRl
eHQpOworCisgICAgICAgIGNvbnRleHQubGF0ZVBhdGhzLmFwcGVuZChjcmVhdGVTaGFyZWRUYXNr
PEdlbmVyYXRpb25Db250ZXh0OjpMYXRlUGF0aEZ1bmN0aW9uPigKKyAgICAgICAgICAgIFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmKSB7CisgICAgICAgICAg
ICAgICAgb3V0T2ZCb3VuZHMubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmNv
ZGUtPndhc21Cb3VuZHNDaGVja0dlbmVyYXRvcigpLT5ydW4oaml0LCB2YWx1ZS0+cGlubmVkR1BS
KCksIHZhbHVlLT5vZmZzZXQoKSk7CisgICAgICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gV2Ug
c2FpZCB3ZSB3ZXJlIG5vdCBhIHRlcm1pbmFsLgorICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJz
OjpKdW1wKCk7CisgICAgfQorfTsKKwogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgog
CiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IGU5NDY3MmU3ODZkMDY4MDBhNmQzNmEzMWIwMmEz
ZTk5YjU4OTBiMTEuLjE3OTcyYTNkMzVhOGI3OGExMWRlNGU2YzllZmQ2OWE2NzIwNmM3YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAt
ODg5LDQgKzg4OSw3IEBAIGN1c3RvbSBQYXRjaAogY3VzdG9tIENDYWxsCiBjdXN0b20gQ29sZEND
YWxsCiAKKyMgVGhpcyBpcyBhIHNwZWNpYWwgd2FzbSBvcGNvZGUgdGhhdCBicmFuY2hlcyB0byBh
IHRyYXAgaGFuZGxlci4gVGhpcyB1c2VzIHRoZSBnZW5lcmF0b3IgbG9jYXRlZCB0byBBaXI6OkNv
ZGUKKyMgdG8gcHJvZHVjZSB0aGUgc2lkZS1leGl0IGNvZGUuCitjdXN0b20gV2FzbUJvdW5kc0No
ZWNrCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggZWMyNGU0ZGM2MGNhNTI5
ZWQxMGM5MTgzNTFjNDQyNDQ1NmU4NWEwNy4uYWMzMWMzY2Y2MzFkZTFmMGM1NWYxYjdiMGYwMDk2
YTZmYTM5NzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTU0LDYgKzU0
LDcgQEAKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRlBSSW5m
by5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKQEAgLTEzNzI5LDYgKzEzNzMwLDM3IEBAIHZvaWQg
dGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3Zv
aWQgdGVzdFdhc21Cb3VuZHNDaGVjayh1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICBw
cm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CisKKyAgICBwcm9jLnNldFdhc21Cb3VuZHNDaGVja0dl
bmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25l
ZCBhY3R1YWxPZmZzZXQpIHsKKyAgICAgICAgQ0hFQ0tfRVEocGlubmVkR1BSLCBwaW5uZWQpOwor
ICAgICAgICBDSEVDS19FUShhY3R1YWxPZmZzZXQsIG9mZnNldCk7CisKKyAgICAgICAgLy8gVGhp
cyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3Vs
ZCBuZXZlciBoYXZlIGNhbGxlZQorICAgICAgICAvLyBzYXZlcy4KKyAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBqaXQucmV0KCk7
CisgICAgfSk7CisKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGlmIChwb2ludGVyVHlwZSgpICE9
IEludDMyKQorICAgICAgICBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksIGxlZnQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGxlZnQsIHBpbm5lZCwgb2Zmc2V0KTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDB4
NDIpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBDSEVD
S19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIDEsIDIgKyBvZmZzZXQpLCAweDQyKTsKKyAgICBD
SEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIDMsIDIgKyBvZmZzZXQpLCA0Mik7CisgICAg
Q0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCAyLCAyICsgb2Zmc2V0KSwgNDIpOworfQor
CiAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHRyeSB0byBvcHRpbWl6ZSBhbnl0
aGluZyBvdXQuCiBORVZFUl9JTkxJTkUgZG91YmxlIHplcm8oKQogewpAQCAtMTUxNDgsNyArMTUx
ODAsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RTb21lRWFy
bHlSZWdpc3RlcigpKTsKICAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVl
KHRydWUpKTsKICAgICBSVU4odGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKGZhbHNl
KSk7Ci0gICAgCisKICAgICBSVU4odGVzdE1lbW9yeUZlbmNlKCkpOwogICAgIFJVTih0ZXN0U3Rv
cmVGZW5jZSgpKTsKICAgICBSVU4odGVzdExvYWRGZW5jZSgpKTsKQEAgLTE1MTY4LDcgKzE1MjAw
LDEyIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdExvYWRCYXNl
SW5kZXhTaGlmdDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpKTsKICAg
ICBSVU4odGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkpOwotICAgIAorCisgICAgUlVOKHRl
c3RXYXNtQm91bmRzQ2hlY2soMCkpOworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMCkp
OworICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMDAwKSk7CisgICAgUlVOKHRlc3RXYXNt
Qm91bmRzQ2hlY2soc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gNSkpOwor
CiAgICAgaWYgKGlzWDg2KCkpIHsKICAgICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNp
b24oSWRlbnRpdHksIEludDY0LCAxLCBBaXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6OlRtcCkp
OwogICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwgSW50NjQs
IDB4ZmYsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1wKSk7CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdl
TG9nCmluZGV4IDRjNzBmNzk1ZGQ3MzY1OWIwZjBjOWJiODFjOWUzYmZmNmM2NmY4NGIuLjZjZTEz
ZDgxNjY4YmFlMDBlODg5ZGQ3MjFkYjQzMDBiMmZjM2ExOGIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3dlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMTAtMTIgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgQjMgbmVlZHMgYSBzcGVjaWFsIFdhc21Cb3VuZHNDaGVj
ayBPcGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzI0NgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFVw
ZGF0ZSB0aGUgZG9jcyBmb3IgdGhlIG5ldyBXYXNtQm91bmRzQ2hlY2sgb3Bjb2RlLgorCisgICAg
ICAgICogZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbDoKKwogMjAxNi0x
MC0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBD
b252ZXJ0IGNvbnRyaWJ1dG9ycy5qc29uIHRvIGEgZmxhdCBsaXN0CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwg
Yi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9u
Lmh0bWwKaW5kZXggYmRjNTdhMTA0OTdiMzFmZDkyNzYwN2ZjNjU5MGFiNDdmMzI0NzVkZi4uNjJh
Yzk3Y2IzY2VhNDZkYWJiZTBmODQ2YzcxZTZkYmYyYzk3Mzk3YSAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCisr
KyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRp
b24uaHRtbApAQCAtNTM3LDYgKzUzNywxNiBAQCBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAg
ICAgICAgIHRvIGFuIGluc3RydWN0aW9uIHRoYXQgYnJhbmNoZXMgdG8gdGhlIGV4aXQgaWYgQGEg
Jmd0Oz0gQGIgb3IgaWYgZWl0aGVyIEBhIG9yIEBiIGFyZQogICAgICAgICBOYU4uICBNdXN0IHVz
ZSB0aGUgQ2hlY2tWYWx1ZSBjbGFzcy48L2RkPgogCisgICAgICA8ZHQ+Vm9pZCBXYXNtQm91bmRz
Q2hlY2soSW50MzIsIHBpbm5lZEdQUiwgb2Zmc2V0KTwvZHQ+CisgICAgICA8ZGQ+U3BlY2lhbCBX
YXNtIG9wY29kZS4gVGhpcyBicmFuY2hlcyBvbiB0aGUgZmlyc3QgY2hpbGQuIElmIHRoZSBmaXJz
dCBjaGlsZCBwbHVzIHRoZSBvZmZzZXQKKyAgICAgICAgcHJvZHVjZXMgYSBJbnQ2NCBsZXNzIHRo
YW4gdG8gdGhlIHBpbm5lZEdQUiB0aGlzIGZhbGxzIHRocm91Z2guIE90aGVyd2lzZSwgaXQgYnJh
bmNoZXMgdG8KKyAgICAgICAgdGhlIGV4aXQgcGF0aCBnZW5lcmF0ZWQgYnkgdGhlIHBhc3NlZCBn
ZW5lcmF0b3IuIFVubGlrZSB0aGUgUGF0Y2gvQ2hlY2sgZmFtaWx5LCB0aGUKKyAgICAgICAgZ2Vu
ZXJhdG9yIHVzZWQgYnkgV2FzbUJvdW5kc0NoZWNrIHNvdWxkIGJlIHNldCBvbiB0aGUgUHJvY3Vk
ZXIgaXRzZWxmLiBUaGUgR1JQUmVnIHBhc3NlZCBpbgorICAgICAgICBwaW5uZWRHUFIgbXVzdCBh
bHNvIGJlIG1hcmtlZCBhcyBwaW5uZWQgYnkgY2FsbGluZyB0aGUgUHJvY2VkdXJlJ3MgcGlubmlu
ZyBBUEkuIEIzIGFzc3VtZXMKKyAgICAgICAgdGhlIFdhc21Cb3VuZHNDaGVjayB3aWxsIHNpZGUt
ZXhpdCB3aGVuIHRoZSBpdCBicmFuY2hlcywgc28gdGhlIGdlbmVyYXRvciBtdXN0IGRvIHNvbWUg
a2luZAorICAgICAgICBvZiB0ZXJtaW5hdGlvbi4gSW4gV2FzbSB0aGlzIGlzIHVzZWQgdG8gdHJh
cCBhbmQgdW53aW5kIGJhY2sgdG8gSlMuIE11c3QgdXNlIHRoZQorICAgICAgICBXYXNtQm91bmRz
Q2hlY2tWYWx1ZSBjbGFzcy48L2RkPgorCiAgICAgICA8ZHQ+Vm9pZCBVcHNpbG9uKFQsIF5waGkp
PC9kdD4KICAgICAgIDxkZD5CMyB1c2VzIFNTQS4gIFNTQSByZXF1aXJlcyB0aGF0IGVhY2ggdmFy
aWFibGUgZ2V0cyBhc3NpZ25lZCB0byBvbmx5IG9uY2UgYW55d2hlcmUgaW4KICAgICAgICAgdGhl
IHByb2NlZHVyZS4gIEJ1dCB0aGF0IGRvZXNuJ3Qgd29yayBpZiB5b3UgaGF2ZSBhIHZhcmlhYmxl
IHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgdGhlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>