<?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>201498</bug_id>
          
          <creation_ts>2019-09-05 00:24:35 -0700</creation_ts>
          <short_desc>[JSC] AsyncGenerator should have internal fields</short_desc>
          <delta_ts>2019-10-02 14:24:15 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568043</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-05 00:24:35 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573605</commentid>
    <comment_count>1</comment_count>
      <attachid>379439</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-24 01:11:06 -0700</bug_when>
    <thetext>Created attachment 379439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573610</commentid>
    <comment_count>2</comment_count>
      <attachid>379440</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-24 01:53:49 -0700</bug_when>
    <thetext>Created attachment 379440
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573611</commentid>
    <comment_count>3</comment_count>
      <attachid>379441</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-24 01:58:58 -0700</bug_when>
    <thetext>Created attachment 379441
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573612</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-24 01:59:39 -0700</bug_when>
    <thetext>Note that, this improves JetStream2/async-fs by ~10%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573962</commentid>
    <comment_count>5</comment_count>
      <attachid>379527</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-24 23:56:27 -0700</bug_when>
    <thetext>Created attachment 379527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574276</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-25 16:37:25 -0700</bug_when>
    <thetext>I&apos;ll quickly fix debug-wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574304</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-25 17:39:11 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; I&apos;ll quickly fix debug-wk1.

After adding a new bytecode, maybe, hash order is changed? and op_add becomes 0.
And we are hitting crash because we are using op_add &lt;&lt; 32 | metadataID as a key to hash table. And we cannot use 0 as a key.
I&apos;ll add 1 to the opcode to make key non-zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574309</commentid>
    <comment_count>8</comment_count>
      <attachid>379600</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-25 17:47:46 -0700</bug_when>
    <thetext>Created attachment 379600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576110</commentid>
    <comment_count>9</comment_count>
      <attachid>379600</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-02 12:33:24 -0700</bug_when>
    <thetext>Comment on attachment 379600
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch introduces JSAsyncGenerator. We do the same thing to JSGenerator to improve async generator performance.

I don&apos;t understand your second sentence. Is this patch just for async generator. Or regular generator too? If both, the title should be renamed

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        We also adjust ArithProfile key in JIT by adding +1 to opcodeID since `op_add` can be zero, and `key` can be zero in this case.

what is &quot;key&quot; here? What&apos;s the benefit here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576118</commentid>
    <comment_count>10</comment_count>
      <attachid>379600</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-02 12:54:51 -0700</bug_when>
    <thetext>Comment on attachment 379600
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        This patch introduces JSAsyncGenerator. We do the same thing to JSGenerator to improve async generator performance.
&gt; 
&gt; I don&apos;t understand your second sentence. Is this patch just for async generator. Or regular generator too? If both, the title should be renamed

Introducing JSAsyncGenerator, basically the same mechanism to JSGenerator.

&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt; +        We also adjust ArithProfile key in JIT by adding +1 to opcodeID since `op_add` can be zero, and `key` can be zero in this case.
&gt; 
&gt; what is &quot;key&quot; here? What&apos;s the benefit here?

This is pre-existing bug. We are using OpcodeID for the key of hashmap. And using op_add code as a part of key. By adding a new bytecode, it suddenly becomes 0. And 0 is not valid key in WTF::HashMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576125</commentid>
    <comment_count>11</comment_count>
      <attachid>379600</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-02 13:08:12 -0700</bug_when>
    <thetext>Comment on attachment 379600
Patch

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

r=me

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        This patch introduces JSAsyncGenerator. We do the same thing to JSGenerator to improve async generator performance.
&gt; 
&gt; I don&apos;t understand your second sentence. Is this patch just for async generator. Or regular generator too? If both, the title should be renamed

it looks like this patch is just JSAsyncGenerator. I think a better sentence is something like:
&quot;We did this already for JSGenerator. This patch does the same thing for JSAsyncGenerator&quot;

&gt; Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp:98
&gt; +    m_asyncGeneratorFieldSuspendReason.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSAsyncGenerator::Field::SuspendReason)));
&gt; +    m_asyncGeneratorFieldQueueFirst.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSAsyncGenerator::Field::QueueFirst)));
&gt; +    m_asyncGeneratorFieldQueueLast.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSAsyncGenerator::Field::QueueLast)));
&gt; +    m_AsyncGeneratorStateCompleted.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorState::Completed)));
&gt; +    m_AsyncGeneratorStateExecuting.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorState::Executing)));
&gt; +    m_AsyncGeneratorStateSuspendedStart.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorState::SuspendedStart)));
&gt; +    m_AsyncGeneratorStateSuspendedYield.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorState::SuspendedYield)));
&gt; +    m_AsyncGeneratorStateAwaitingReturn.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorState::AwaitingReturn)));
&gt; +    m_AsyncGeneratorSuspendReasonYield.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorSuspendReason::Yield)));
&gt; +    m_AsyncGeneratorSuspendReasonAwait.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorSuspendReason::Await)));
&gt; +    m_AsyncGeneratorSuspendReasonNone.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorSuspendReason::None)));

why some capital &quot;A&quot; and some lower case &quot;a&quot;?

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2694
&gt; +        auto findConstant = [&amp;] (const ClassInfo* classInfo) -&gt; bool {

nit: maybe a better name is &quot;tryToFold&quot; or similar, since we&apos;re not actually producing a constant value, but a constant structure

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12897
&gt; +    auto initialValues = JSClass::initialValues();
&gt; +    for (unsigned index = 0; index &lt; JSClass::numberOfInternalFields; ++index)

same thing about assert

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5952
&gt; +        auto initialValues = JSClass::initialValues();
&gt; +        for (unsigned index = 0; index &lt; JSClass::numberOfInternalFields; ++index)

maybe assert that initialValues.size() == numberOfInternalFields?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6426
&gt; +        auto initialValues = JSClass::initialValues();
&gt; +        for (unsigned index = 0; index &lt; JSClass::numberOfInternalFields; ++index)

maybe assert that initialValues.size()  matches numberOfInternalFields?

&gt; Source/JavaScriptCore/runtime/JSGenerator.cpp:58
&gt; +    for (unsigned index = 0; index &lt; numberOfInternalFields; ++index)
&gt; +        internalField(index).set(vm, this, values[index]);

nit: it feels slightly weird to not just iterate over the size of the array here (which is also constexpr). (Same comment elsewhere based on how we iterate.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576127</commentid>
    <comment_count>12</comment_count>
      <attachid>379600</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-02 13:09:21 -0700</bug_when>
    <thetext>Comment on attachment 379600
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt;&gt; +        We also adjust ArithProfile key in JIT by adding +1 to opcodeID since `op_add` can be zero, and `key` can be zero in this case.
&gt;&gt; 
&gt;&gt; what is &quot;key&quot; here? What&apos;s the benefit here?
&gt; 
&gt; This is pre-existing bug. We are using OpcodeID for the key of hashmap. And using op_add code as a part of key. By adding a new bytecode, it suddenly becomes 0. And 0 is not valid key in WTF::HashMap.

got it. Can you explain that here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576180</commentid>
    <comment_count>13</comment_count>
      <attachid>379600</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-02 14:12:44 -0700</bug_when>
    <thetext>Comment on attachment 379600
Patch

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

Thanks!

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt;&gt;&gt; +        This patch introduces JSAsyncGenerator. We do the same thing to JSGenerator to improve async generator performance.
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t understand your second sentence. Is this patch just for async generator. Or regular generator too? If both, the title should be renamed
&gt;&gt; 
&gt;&gt; Introducing JSAsyncGenerator, basically the same mechanism to JSGenerator.
&gt; 
&gt; it looks like this patch is just JSAsyncGenerator. I think a better sentence is something like:
&gt; &quot;We did this already for JSGenerator. This patch does the same thing for JSAsyncGenerator&quot;

Fixed!

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt;&gt;&gt; +        We also adjust ArithProfile key in JIT by adding +1 to opcodeID since `op_add` can be zero, and `key` can be zero in this case.
&gt;&gt;&gt; 
&gt;&gt;&gt; what is &quot;key&quot; here? What&apos;s the benefit here?
&gt;&gt; 
&gt;&gt; This is pre-existing bug. We are using OpcodeID for the key of hashmap. And using op_add code as a part of key. By adding a new bytecode, it suddenly becomes 0. And 0 is not valid key in WTF::HashMap.
&gt; 
&gt; got it. Can you explain that here?

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp:98
&gt;&gt; +    m_AsyncGeneratorSuspendReasonNone.set(m_vm, jsNumber(static_cast&lt;int32_t&gt;(JSAsyncGenerator::AsyncGeneratorSuspendReason::None)));
&gt; 
&gt; why some capital &quot;A&quot; and some lower case &quot;a&quot;?

Capital &quot;A&quot; things exist before this patch and it is used to represent a constant. I use lower case &quot;a&quot; for field index.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2694
&gt;&gt; +        auto findConstant = [&amp;] (const ClassInfo* classInfo) -&gt; bool {
&gt; 
&gt; nit: maybe a better name is &quot;tryToFold&quot; or similar, since we&apos;re not actually producing a constant value, but a constant structure

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12897
&gt;&gt; +    for (unsigned index = 0; index &lt; JSClass::numberOfInternalFields; ++index)
&gt; 
&gt; same thing about assert

Fixed. Adding `static_assert`.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5952
&gt;&gt; +        for (unsigned index = 0; index &lt; JSClass::numberOfInternalFields; ++index)
&gt; 
&gt; maybe assert that initialValues.size() == numberOfInternalFields?

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6426
&gt;&gt; +        for (unsigned index = 0; index &lt; JSClass::numberOfInternalFields; ++index)
&gt; 
&gt; maybe assert that initialValues.size()  matches numberOfInternalFields?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGenerator.cpp:58
&gt;&gt; +        internalField(index).set(vm, this, values[index]);
&gt; 
&gt; nit: it feels slightly weird to not just iterate over the size of the array here (which is also constexpr). (Same comment elsewhere based on how we iterate.)

OK, use initialValues.size() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576181</commentid>
    <comment_count>14</comment_count>
      <attachid>379600</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-02 14:13:58 -0700</bug_when>
    <thetext>Comment on attachment 379600
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:12897
&gt;&gt;&gt; +    for (unsigned index = 0; index &lt; JSClass::numberOfInternalFields; ++index)
&gt;&gt; 
&gt;&gt; same thing about assert
&gt; 
&gt; Fixed. Adding `static_assert`.

Use ASSERT for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576191</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-02 14:23:14 -0700</bug_when>
    <thetext>Committed r250630: &lt;https://trac.webkit.org/changeset/250630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576192</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-02 14:24:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/55924481&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379439</attachid>
            <date>2019-09-24 01:11:06 -0700</date>
            <delta_ts>2019-09-24 01:53:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201498-20190924011105.patch</filename>
            <type>text/plain</type>
            <size>108991</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTkwNWE0MjY2MTg5MGJkMDZlNDc1NGIyZjRiMWIxMTE4MjZhYWVlLi5mY2VlYjJlNTg0YmE1YTA2
ODVjZjU3YTlkY2UzNTVjNDkzNmVjNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjYgQEAKKzIwMTktMDktMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBc3luY0dlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5hbCBm
aWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MTQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qczoK
KyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHkpOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZSk6CisgICAgICAg
IChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKToKKyAgICAgICAgKGds
b2JhbFByaXZhdGUuaXNFeGVjdXRpb25TdGF0ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmlz
U3VzcGVuZFlpZWxkU3RhdGUpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRv
clJlamVjdCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUmVzb2x2ZSk6
CisgICAgICAgIChhc3luY0dlbmVyYXRvcllpZWxkQXdhaXRlZCk6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLmFzeW5jR2VuZXJhdG9yWWllbGQpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5kb0Fz
eW5jR2VuZXJhdG9yQm9keUNhbGwpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVy
YXRvclJlc3VtZU5leHQpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvckVu
cXVldWUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
Lmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJ
bmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JG
aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFzeW5j
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRJc0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
SW5kZXgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19pc0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6WWllbGRFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3QXN5bmNH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1N0cnVjdHVyZSk6CisgICAg
ICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5v
ZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3R2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5l
d0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDcmVhdGVBc3luY0dlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9KU0FzeW5jR2Vu
ZXJhdG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3IuY3BwLgorICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpKU0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SlNBc3luY0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Fz
eW5jR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNH
ZW5lcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3IuaC4KKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0dl
bmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0yMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjI1MDI2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTM0ZDdk
MDJhMThhM2Q0ZWRkMWU0OTZkYzZlYmRiMThjZWQ5NGZlMC4uYWVjOWM2YmFmODZlNTU5MjMzNTQz
NWJjN2Q4MWJhY2Q1ZjNkODMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4
MjYsNiArMTgyNiw3IEBACiAJCUUzOUQ4QjJFMjMwMjFFMjYwMDI2NTg1MiAvKiBXYXNtT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
RDhCMkQyMzAyMUUxRTAwMjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmggKi87IH07CiAJCUUzOURB
NEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8q
IEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5RUVBRjMyMjgxMjQ1MDAwODQ3NEY0IC8qIE9iamVjdFRvU3RyaW5nQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzlFRUFGMjIyODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0VG9TdHJp
bmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgfTsKKwkJRTM5RkVCRTMyMzM5QzVE
OTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMzOUM1RDQwMEI0MEFCMCAvKiBKU0FzeW5j
R2VuZXJhdG9yLmggKi87IH07CiAJCUUzQTA1MzFBMjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU3Ry
ZWFtaW5nUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICov
OyB9OwogCQlFM0EwNTMxQzIxMzQyQjY4MDAyMkVDMTQgLyogV2FzbVNlY3Rpb25QYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTA1MzE4MjEz
NDJCNjcwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oICovOyB9OwogCQlFM0EzMkJDNzFG
QzgzMTQ3MDA3RDdFNzYgLyogV2Vha01hcEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMyQkM2MUZDODMxMkUwMDdEN0U3NiAvKiBXZWFrTWFw
SW1wbC5oICovOyB9OwpAQCAtNDk0Niw2ICs0OTQ3LDggQEAKIAkJRTM5RTAzMEQyMkQ5RUEzRTAw
NDA4QzE4IC8qIFdlYkFzc2VtYmx5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gV2ViQXNzZW1i
bHkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUVFQUYxMjI4MTI0NEMwMDg0
NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUVFQUYyMjI4MTI0NEMwMDg0
NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBBQjAgLyog
SlNBc3luY0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FzeW5jR2VuZXJhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RkVCRTIyMzM5QzVENDAwQjQw
QUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBc3luY0dlbmVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EwNTMxNjIxMzQyQjY2MDAyMkVD
MTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtU3RyZWFtaW5nUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzQTA1MzE3MjEzNDJCNjYwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU2VjdGlvblBhcnNlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTA1MzE4MjEzNDJCNjcwMDIyRUMxNCAvKiBX
YXNtU2VjdGlvblBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
U2VjdGlvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE0MCwxNyAr
NzE0MywxOSBAQAogCQkJCTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5l
cy5oICovLAogCQkJCTVCNzBDRkQ5MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24u
Y3BwICovLAogCQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24u
aCAqLywKKwkJCQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBBQjAgLyogSlNBc3luY0dlbmVyYXRvci5j
cHAgKi8sCisJCQkJRTM5RkVCRTIyMzM5QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3Iu
aCAqLywKIAkJCQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1
bmN0aW9uLmNwcCAqLywKIAkJCQk4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4Q0EgLyogSlNBc3luY0dl
bmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpT
QmlnSW50LmNwcCAqLywKIAkJCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCAqLywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNw
cCAqLywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmgg
Ki8sCi0JCQkJRkU0OEJENDMyMzI0NUU4NzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5jcHAgKi8sCi0J
CQkJRkU0OEJENDIyMzI0NUU4NzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5oICovLAogCQkJCTY1N0NG
NDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCiAJCQkJNjU3Q0Y0NTcxOUJG
NjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi8sCiAJCQkJNTNCNjAxRUIyMDM0QjhDNTAwNkJF
NjY3IC8qIEpTQ2FzdC5oICovLAorCQkJCUZFNDhCRDQzMjMyNDVFODcwMEYxMzZEMCAvKiBKU0ND
b25maWcuY3BwICovLAorCQkJCUZFNDhCRDQyMjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcu
aCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKIAkJ
CQlCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggKi8sCiAJCQkJMEY5NzQ5NkYx
Njg3QURFMjAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCAqLywKQEAgLTkzNTMsNyArOTM1OCw2
IEBACiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9CMy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWRO
b2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y5MTlEMEJBQzEwMEIxRDFCNSAv
KiBGVExPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMjIzMjRENTFCMDA5
REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzFDMTdENTFG
MjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREQx
NzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1
QkUwMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtOTU0Myw3ICs5NTQ3LDYgQEAKIAkJCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkYx
QjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMTJCQkZGMjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRkU0OEJENDQyMzI0NUU5MzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzA4RUJFMjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIEludGxPYmpl
Y3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYg
LyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRFMDM1NDFFNTNCRDI5MDAyMTNG
NjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjAx
LDYgKzk2MDQsNyBAQAogCQkJCTBGMkI2NkVBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUZCOEJBMUM5OURBN0MwMDk0
MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUI3MENGREUxREI2
OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5
RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCThCQzA2NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5ODcyQzQ4MjIxQkJBRjMwMDhDNjk2OSAvKiBKU0Jh
c2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjE0LDYgKzk2MTgsNyBAQAogCQkJCTY1
N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTQ4QkQ0NDIzMjQ1RTkzMDBGMTM2RDAgLyogSlNDQ29uZmlnLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGluZXMuaCBp
biBIZWFkZXJzICovLApAQCAtOTg5MSw3ICs5ODk2LDkgQEAKIAkJCQkwRjJCREMyQzE1MUZERTkx
MDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VBMTdBMEJE
NDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDQ4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjlEQUEwQTFGRDFDM0QzMDA3OUM1QjIgLyogUGFyYWxsZWxTb3Vy
Y2VBZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFNjU3NTIwNjY4RUFBMDBGQjgxQUMg
LyogUGFyc2VIYXNoLmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTgsNyArMTAwMDUsNiBAQAogCQkJ
CTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyog
T3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIx
NyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQw
MDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2VhNTMwYzI1MTM0ODVl
NzQ3ZDU0MTUzNTI3Mjg3ODdjODI4NWM2Li5iOWZlZWNlZmUyN2QwNWMxMWZmNWFmNGVjOTQxNTAw
Nzg1ZTdlODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MDksNiArODA5LDcg
QEAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0pTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGlt
ZS9KU0FzeW5jRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuY3BwCiBydW50
aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNCaWdJbnQuY3BwCiBy
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCA5MGRlOTIw
ZDlkNmUzMDRhNmRkYmJhZTk0ODkxYmIyNzM4NDJmNzQ5Li5iMGFjNDAzODFkZmYwNTY3N2JjZWM5
NDAwYzEzMTAzOGViNDJjOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0yOSw3ICsyOSw3IEBA
IGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdlbmVyYXRvcikKIHsKICAgICAi
dXNlIHN0cmljdCI7CiAKLSAgICByZXR1cm4gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRv
ciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpID09PSBudWxsOworICAgIHJldHVybiBAZ2V0
QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmll
bGRRdWV1ZUZpcnN0KSA9PT0gbnVsbDsKIH0KIAogQGdsb2JhbFByaXZhdGUKQEAgLTM5LDE1ICsz
OSwxNSBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZShnZW5lcmF0b3IsIGl0
ZW0pCiAKICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShpdGVtLCAiYXN5bmNHZW5l
cmF0b3JRdWV1ZUl0ZW1OZXh0IikgPT09IG51bGwpOwogCi0gICAgaWYgKEBnZXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3QiKSA9PT0gbnVsbCkg
ewotICAgICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3lu
Y0dlbmVyYXRvclF1ZXVlTGFzdCIpID09PSBudWxsKTsKKyAgICBpZiAoQGdldEFzeW5jR2VuZXJh
dG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVldWVGaXJz
dCkgPT09IG51bGwpIHsKKyAgICAgICAgQGFzc2VydChAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QpID09PSBudWxs
KTsKIAotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5l
cmF0b3JRdWV1ZUZpcnN0IiwgaXRlbSk7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0pOworICAgICAgICBAcHV0
QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmll
bGRRdWV1ZUZpcnN0LCBpdGVtKTsKKyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxG
aWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0LCBpdGVtKTsKICAg
ICB9IGVsc2UgewotICAgICAgICB2YXIgbGFzdCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIpOworICAgICAgICB2YXIgbGFzdCA9IEBn
ZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JG
aWVsZFF1ZXVlTGFzdCk7CiAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShsYXN0LCAiYXN5
bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IiwgaXRlbSk7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0pOworICAg
ICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2Vu
ZXJhdG9yRmllbGRRdWV1ZUxhc3QsIGl0ZW0pOwogICAgIH0KIH0KIApAQCAtNTgsMTMgKzU4LDEz
IEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikKIAogICAg
IEBhc3NlcnQoIUBhc3luY0dlbmVyYXRvclF1ZXVlSXNFbXB0eShnZW5lcmF0b3IpLCAiQXN5bmMg
Z2VuZXRhdG9yJ3MgUXVldWUgaXMgYW4gZW1wdHkgTGlzdC4iKTsKIAotICAgIHZhciByZXN1bHQg
PSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUZp
cnN0Iik7CisgICAgdmFyIHJlc3VsdCA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlRmlyc3QpOwogCiAgICAgdmFyIHVw
ZGF0ZWRGaXJzdCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShyZXN1bHQsICJhc3luY0dlbmVyYXRv
clF1ZXVlSXRlbU5leHQiKTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAi
YXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0IiwgdXBkYXRlZEZpcnN0KTsKKyAgICBAcHV0QXN5bmNH
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1
ZUZpcnN0LCB1cGRhdGVkRmlyc3QpOwogCiAgICAgaWYgKHVwZGF0ZWRGaXJzdCA9PT0gbnVsbCkK
LSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9y
UXVldWVMYXN0IiwgbnVsbCk7CisgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmll
bGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCwgbnVsbCk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzQsOCArNzQsOCBAQCBmdW5jdGlvbiBpc0V4ZWN1dGlv
blN0YXRlKGdlbmVyYXRvcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgc3RhdGUg
PSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAg
ICB2YXIgcmVhc29uID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbiIpOworICAgIHZhciBzdGF0ZSA9IEBnZXRBc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7CisgICAgdmFy
IHJlYXNvbiA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5
bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pOwogICAgIHJldHVybiAoc3RhdGUgPiAwICYm
IHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpCiAgICAgICAgIHx8
IHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZwogICAgICAgICB8fCByZWFz
b24gPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdDsKQEAgLTg2LDggKzg2LDgg
QEAgZnVuY3Rpb24gaXNTdXNwZW5kWWllbGRTdGF0ZShnZW5lcmF0b3IpCiB7CiAgICAgInVzZSBz
dHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRv
ciwgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgcmV0dXJuIChzdGF0ZSA+IDAgJiYgQGdldEJ5SWRE
aXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09
PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQpCisgICAgdmFyIHN0YXRlID0gQGdl
dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0
YXRlKTsKKyAgICByZXR1cm4gKHN0YXRlID4gMCAmJiBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKSA9PT0g
QEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbllpZWxkKQogICAgICAgICB8fCBzdGF0ZSA9PT0g
QEFzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRZaWVsZDsKIH0KIApAQCAtOTYsNyArOTYsNyBA
QCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclJlamVjdChnZW5lcmF0b3IsIGV4Y2VwdGlvbikKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBAYXNzZXJ0KHR5cGVvZiBAZ2V0QnlJZERpcmVjdFBy
aXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIikgPT09ICJudW1i
ZXIiLCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3luY0dlbmVyYXRvciBpbnN0YW5jZS4iKTsKKyAg
ICBAYXNzZXJ0KEBpc0FzeW5jR2VuZXJhdG9yKGdlbmVyYXRvciksICJHZW5lcmF0b3IgaXMgbm90
IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOwogCiAgICAgdmFyIHByb21pc2UgPSBAYXN5
bmNHZW5lcmF0b3JRdWV1ZURlcXVldWUoZ2VuZXJhdG9yKS5wcm9taXNlOwogICAgIEBhc3NlcnQo
QGlzUHJvbWlzZShwcm9taXNlKSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgZnVuY3Rpb24gYXN5bmNH
ZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgdmFsdWUsIGRvbmUpCiB7CiAgICAgInVzZSBzdHJp
Y3QiOwogCi0gICAgQGFzc2VydCh0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRv
ciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSAibnVtYmVyIiwgIkdlbmVyYXRv
ciBpcyBub3QgYW4gQXN5bmNHZW5lcmF0b3IgaW5zdGFuY2UuIik7CisgICAgQGFzc2VydChAaXNB
c3luY0dlbmVyYXRvcihnZW5lcmF0b3IpLCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3luY0dlbmVy
YXRvciBpbnN0YW5jZS4iKTsKIAogICAgIHZhciBwcm9taXNlID0gQGFzeW5jR2VuZXJhdG9yUXVl
dWVEZXF1ZXVlKGdlbmVyYXRvcikucHJvbWlzZTsKICAgICBAYXNzZXJ0KEBpc1Byb21pc2UocHJv
bWlzZSkpOwpAQCAtMTI2LDExICsxMjYsMTEgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JZaWVs
ZChnZW5lcmF0b3IsIHZhbHVlLCByZXN1bWVNb2RlKQogCiAgICAgZnVuY3Rpb24gYXN5bmNHZW5l
cmF0b3JZaWVsZEF3YWl0ZWQocmVzdWx0KQogICAgIHsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIsIEBBc3luY0dl
bmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CisgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvcklu
dGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24s
IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CiAgICAgICAgIEBhc3luY0dlbmVy
YXRvclJlc29sdmUoZ2VuZXJhdG9yLCByZXN1bHQsIGZhbHNlKTsKICAgICB9CiAKLSAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29u
IiwgQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0KTsKKyAgICBAcHV0QXN5bmNHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5k
UmVhc29uLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpOwogCiAgICAgQGF3YWl0
VmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSwgYXN5bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQpOwogfQpA
QCAtMTUwLDM0ICsxNTAsMzkgQEAgZnVuY3Rpb24gZG9Bc3luY0dlbmVyYXRvckJvZHlDYWxsKGdl
bmVyYXRvciwgcmVzdW1lVmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgInVzZSBzdHJpY3QiOwogCiAg
ICAgdmFyIHZhbHVlID0gQHVuZGVmaW5lZDsKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVj
dFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3RhdGUgPSBA
Z2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxk
U3RhdGUpOwogCi0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
clN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwotICAgIEBwdXRCeUlkRGly
ZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBAQXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZSk7CisgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50
ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChn
ZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbiwgQEFzeW5jR2VuZXJh
dG9yU3VzcGVuZFJlYXNvbk5vbmUpOwogCiAgICAgdHJ5IHsKLSAgICAgICAgdmFsdWUgPSBAZ2V0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yTmV4dCIpLkBjYWxsKEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JUaGlzIiksIGdlbmVyYXRvciwg
c3RhdGUsIHJlc3VtZVZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2Vu
ZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgIGlmIChAZ2V0QnlJZERpcmVjdFBy
aXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEFzeW5jR2VuZXJhdG9yU3Rh
dGVFeGVjdXRpbmcpCi0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9y
LCAiZ2VuZXJhdG9yU3RhdGUiLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAg
ICAgIHZhbHVlID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgZ2VuZXJhdG9yLCBzdGF0ZSwgcmVzdW1l
VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFtZSkpOworICAgICAgICBzdGF0ZSA9IEBnZXRBc3luY0dl
bmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7Cisg
ICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAg
ICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2Vu
ZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAg
ICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAgICAgfQog
ICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsK
LSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbiIsIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKTsKKyAgICAg
ICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgIEBwdXRB
c3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVs
ZFN1c3BlbmRSZWFzb24sIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKTsKIAogICAg
ICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9yUmVqZWN0KGdlbmVyYXRvciwgZXJyb3IpOwogICAg
IH0KIAotICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5l
cmF0b3JTdXNwZW5kUmVhc29uIikgPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2Fp
dCkgeworICAgIHZhciByZWFzb24gPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdl
bmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKTsKKyAgICBpZiAocmVh
c29uID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpIHsKICAgICAgICAgdmFy
IG9uRnVsZmlsbGVkID0gZnVuY3Rpb24ocmVzdWx0KSB7IEBkb0FzeW5jR2VuZXJhdG9yQm9keUNh
bGwoZ2VuZXJhdG9yLCByZXN1bHQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsgfTsKIAog
ICAgICAgICBAYXdhaXRWYWx1ZShnZW5lcmF0b3IsIHZhbHVlLCBvbkZ1bGZpbGxlZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVy
YXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSBAQXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uWWllbGQpCisgICAgaWYgKHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJhdG9yU3Vz
cGVuZFJlYXNvbllpZWxkKQogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9yWWllbGQoZ2Vu
ZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSk7CiAKLSAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBBc3luY0dlbmVyYXRvclN0YXRl
Q29tcGxldGVkKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJh
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29u
Tm9uZSk7CisgICAgaWYgKHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkg
eworICAgICAgICBAYXNzZXJ0KEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0
ZWQpOworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwg
QGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uTm9uZSk7CiAgICAgICAgIHJldHVybiBAYXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVy
YXRvciwgdmFsdWUsIHRydWUpOwogICAgIH0KIH0KQEAgLTE4Nyw5ICsxOTIsOSBAQCBmdW5jdGlv
biBhc3luY0dlbmVyYXRvclJlc3VtZU5leHQoZ2VuZXJhdG9yKQogewogICAgICJ1c2Ugc3RyaWN0
IjsKIAotICAgIEBhc3NlcnQodHlwZW9mIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3Is
ICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKSA9PT0gIm51bWJlciIsICJHZW5lcmF0b3Ig
aXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOworICAgIEBhc3NlcnQoQGlzQXN5
bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSwgIkdlbmVyYXRvciBpcyBub3QgYW4gQXN5bmNHZW5lcmF0
b3IgaW5zdGFuY2UuIik7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3RhdGUgPSBAZ2V0QXN5bmNH
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUpOwog
CiAgICAgQGFzc2VydChzdGF0ZSAhPT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcsICJB
c3luYyBnZW5lcmF0b3Igc2hvdWxkIG5vdCBiZSBpbiBleGVjdXRpbmcgc3RhdGUiKTsKIApAQCAt
MTk5LDI0ICsyMDQsMjQgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JSZXN1bWVOZXh0KGdlbmVy
YXRvcikKICAgICBpZiAoQGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdlbmVyYXRvcikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHZhciBuZXh0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpOworICAgIHZhciBuZXh0ID0gQGdl
dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZp
ZWxkUXVldWVGaXJzdCk7CiAKICAgICBpZiAobmV4dC5yZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9y
UmVzdW1lTW9kZU5vcm1hbCkgewogICAgICAgICBpZiAoc3RhdGUgPT09IEBBc3luY0dlbmVyYXRv
clN0YXRlU3VzcGVuZGVkU3RhcnQpIHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKTsKKyAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQp
OwogICAgICAgICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQpIHsKICAgICAgICAgICAgIGlmIChuZXh0LnJlc3VtZU1vZGUgPT09IEBHZW5lcmF0b3JS
ZXN1bWVNb2RlUmV0dXJuKSB7Ci0gICAgICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRl
KGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVBd2FpdGlu
Z1JldHVybik7CisgICAgICAgICAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVs
ZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUF3
YWl0aW5nUmV0dXJuKTsKICAgICAgICAgICAgICAgICBAcmVzb2x2ZVdpdGhvdXRQcm9taXNlKG5l
eHQudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBA
Z2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgQGFzeW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0b3IsIHJl
c3VsdCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgQHB1dEJ5SWREaXJl
Y3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9y
SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBAYXN5bmNHZW5l
cmF0b3JSZWplY3QoZ2VuZXJhdG9yLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0MCw3ICsyNDUsNyBAQCBmdW5jdGlvbiBhc3lu
Y0dlbmVyYXRvckVucXVldWUoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSkKICAgICAidXNl
IHN0cmljdCI7CiAKICAgICB2YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7Ci0gICAgaWYgKCFA
aXNPYmplY3QoZ2VuZXJhdG9yKSB8fCB0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVy
YXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpICE9PSAnbnVtYmVyJykgeworICAg
IGlmICghQGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSkgewogICAgICAgICBAcmVqZWN0UHJv
bWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIEBtYWtlVHlw
ZUVycm9yKCd8dGhpc3wgc2hvdWxkIGJlIGFuIGFzeW5jIGdlbmVyYXRvcicpKTsKICAgICAgICAg
cmV0dXJuIHByb21pc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oCmluZGV4IDM1YzEwNDBhZDQ1NTc0NzgxNWUxMTZmYmM3ZDEyNjViM2Zj
NzQyNDIuLjQ4ODA2NTkyNjYwZGYxYWVjNDkyNWQwODk2ODZlZWE1YzVjNzFhZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTEwOCwxNSAr
MTA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdlbmVyYXRvckZyYW1lKSBcCiAg
ICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKICAgICBtYWNybyhnZW5lcmF0b3JUaGlzKSBcCisg
ICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogICAgIG1hY3JvKHN5bmNJdGVyYXRvcikg
XAogICAgIG1hY3JvKG5leHRNZXRob2QpIFwKLSAgICBtYWNybyhhc3luY0dlbmVyYXRvclN0YXRl
KSBcCi0gICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uKSBcCi0gICAgbWFjcm8o
YXN5bmNHZW5lcmF0b3JRdWV1ZSkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVGaXJz
dCkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVMYXN0KSBcCiAgICAgbWFjcm8oYXN5
bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0KSBcCi0gICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkgXAogICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oaW50bFN1YnN0aXR1
dGVWYWx1ZSkgXAogICAgIG1hY3JvKHRoaXNUaW1lVmFsdWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcAppbmRleCAwNmZjNTgxOTIxMmIzMWIwNTU5ZWVmZjYxMTlkNzVhYTUxMGM5NzI1Li5kNDE2
MzNjNTViNjA5Y2Q1N2UyNDNiMmIxYTRjNDQwOTIxNGM1YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJdGVyYXRpb25LaW5kLmgiCi0j
aW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNBc3luY0dl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC04NSwxNCArODUsMTcgQEAgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0p
CiAgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJu
TW9kZSkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBs
ZXRlZCkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1
dGluZykpKTsKLSAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5
bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0
ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7Ci0g
ICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5l
cmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRl
U3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkWWll
bGQpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQXdhaXRpbmdSZXR1cm4uc2V0KG1fdm0s
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6
QXN5bmNHZW5lcmF0b3JTdGF0ZTo6QXdhaXRpbmdSZXR1cm4pKSk7Ci0gICAgbV9Bc3luY0dlbmVy
YXRvclN1c3BlbmRSZWFzb25ZaWVsZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b246OllpZWxkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQuc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCkpKTsKLSAgICBtX0FzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uOjpOb25lKSkpOworICAgIG1fYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24u
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9y
OjpGaWVsZDo6U3VzcGVuZFJlYXNvbikpKTsKKyAgICBtX2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1
ZUZpcnN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNBc3luY0dl
bmVyYXRvcjo6RmllbGQ6OlF1ZXVlRmlyc3QpKSk7CisgICAgbV9hc3luY0dlbmVyYXRvckZpZWxk
UXVldWVMYXN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNBc3lu
Y0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdCkpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5
bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKKyAgICBtX0Fz
eW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGlu
ZykpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRTdGFydC5zZXQobV92bSwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5l
cmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRl
U3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
QXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFlpZWxkKSkpOwor
ICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN0
YXRlOjpBd2FpdGluZ1JldHVybikpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bllpZWxkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2Vu
ZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKSkpOworICAgIG1fQXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6QXdhaXQpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lLnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiB9CiAKIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggMjgwYjdm
OTA2ZDY1ZTUwZmZiNzY3NWUxMWVhMmUyOTNiN2Q1N2VhOS4uZmFlYjIzODliOGZkNzBlZTVmOTQ5
MzVmMzhhNzRhNjE1Njc4NjliZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC00MywxMiArNDMs
MTQgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhnZXRCeUlkRGlyZWN0UHJpdmF0ZSkg
XAogICAgIG1hY3JvKGdldFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0R2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEFzeW5jR2VuZXJhdG9ySW50ZXJu
YWxGaWVsZCkgXAogICAgIG1hY3JvKGlkV2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhpc09iamVj
dCkgXAogICAgIG1hY3JvKGlzSlNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJveHlPYmplY3QpIFwK
ICAgICBtYWNybyhpc0Rlcml2ZWRBcnJheSkgXAogICAgIG1hY3JvKGlzR2VuZXJhdG9yKSBcCisg
ICAgbWFjcm8oaXNBc3luY0dlbmVyYXRvcikgXAogICAgIG1hY3JvKGlzUHJvbWlzZSkgXAogICAg
IG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBcCiAgICAgbWFjcm8oaXNNYXApIFwKQEAgLTY0LDYgKzY2
LDcgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAg
IG1hY3JvKHB1dFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8ocHV0R2VuZXJhdG9y
SW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVs
ZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKICAgICBt
YWNybyh0b09iamVjdCkgXApAQCAtMTEwLDYgKzExMyw5IEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAg
ICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybikgXAogICAgIG1hY3JvKEdlbmVyYXRv
clN0YXRlQ29tcGxldGVkKSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIFwK
KyAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikgXAorICAgIG1hY3Jv
KGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KSBcCisgICAgbWFjcm8oYXN5bmNHZW5lcmF0
b3JGaWVsZFF1ZXVlTGFzdCkgXAogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0
ZWQpIFwKICAgICBtYWNybyhBc3luY0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSBcCiAgICAgbWFj
cm8oQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAxYmE0MWYxMDZiN2ExMTUx
MjU1NzEyZjZhM2Q5MzM3NzBmMmQ3M2YxLi4zY2E0Mzk2NzRiZmZhYTQwOTdiZWUwODI0OTdiNjVi
OWVhY2NmZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTE0OCw2ICsxNDgsMTUgQEAKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgfQogCitvcCA6Y3JlYXRlX2FzeW5jX2dlbmVyYXRvciwKKyAgICBhcmdzOiB7Cisg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdp
c3RlciwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGNhY2hlZENhbGxlZTogV3Jp
dGVCYXJyaWVyW0pTQ2VsbF0KKyAgICB9CisKIG9wIDpnZXRfYXJndW1lbnQsCiAgICAgYXJnczog
ewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNDA3OTI0OTk2NWQ1NjE4ZTkzZjk4
NjcyNDcyNGVjYzM3MzIwMTVjNy4uMDIyZjNiZmViODY4NDQxY2NhZGRhZmQ3ZjgzNGZhOGY5ODg3
M2JjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIFVT
RVMoT3BDcmVhdGVUaGlzLCBjYWxsZWUpCiAgICAgVVNFUyhPcENyZWF0ZVByb21pc2UsIGNhbGxl
ZSkKICAgICBVU0VTKE9wQ3JlYXRlR2VuZXJhdG9yLCBjYWxsZWUpCisgICAgVVNFUyhPcENyZWF0
ZUFzeW5jR2VuZXJhdG9yLCBjYWxsZWUpCiAgICAgVVNFUyhPcERlbEJ5SWQsIGJhc2UpCiAgICAg
VVNFUyhPcE5ld0Z1bmMsIHNjb3BlKQogICAgIFVTRVMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmMs
IHNjb3BlKQpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAg
REVGUyhPcENyZWF0ZVRoaXMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlUHJvbWlzZSwgZHN0KQog
ICAgIERFRlMoT3BDcmVhdGVHZW5lcmF0b3IsIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlQXN5bmNH
ZW5lcmF0b3IsIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKICAgICBERUZTKE9wTmV3
QXJyYXlXaXRoU3ByZWFkLCBkc3QpCiAgICAgREVGUyhPcFNwcmVhZCwgZHN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNzkwOTQ3MGY1ZGVi
NjVlM2U0ZmRmMTI3NWM3ODViMmYyYjBkOGNlLi40MjQ3NGZlMjhhZTNhNTJhZTY3YWJlMzg2Y2E1
NDBmOGJlZjRlYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMTI3OCw2ICsxMjc4LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMoKQogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ3JlYXRlR2Vu
ZXJhdG9yPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBoYW5kbGVDcmVhdGVC
eXRlY29kZShtZXRhZGF0YSwgIm9wX2NyZWF0ZV9nZW5lcmF0b3IiX3MpOwogICAgICAgICB9KTsK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENyZWF0ZUFzeW5jR2VuZXJhdG9yPihbJl0g
KGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRh
ZGF0YSwgIm9wX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IiX3MpOworICAgICAgICB9KTsKIAogICAg
ICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUmVzb2x2ZVNjb3BlPihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7CiAgICAgICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNl
c3NhcnkuIEFueSBzeW1ib2wgdGFibGVzIHRoYXQgdGhpcyB3aWxsIHJlZmVyIHRvCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDMyZTQwODZmNWNmYTAwZmUyNmNmODFhYzg4MjYzZTRiMDg1OGZjMjYuLmU3
OTE0YWE0N2M1ZWU5YTk4M2Q3NTlmZGQ2ZmFhYjZjY2EwYjNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkRl
ZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCi0jaW5j
bHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVy
YXRvci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTRml4ZWRBcnJheS5oIgpAQCAtNzAyLDggKzcwMiw3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE1ODYKICAgICAgICAgZW1pdFRvVGhpcygpOwogCi0gICAgICAgIG1vdmUobV9n
ZW5lcmF0b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOwotICAgICAgICBlbWl0Q3JlYXRl
VGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdENyZWF0ZUFzeW5jR2VuZXJh
dG9yKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC04NzYsMTAgKzg3NSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgICAgICAgICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhpY2FsIGVudmly
b25tZW50IGNyZWF0aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252ZXJ0IGl0IHRv
IG9wX21vdiBmcmFtZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0ZUdlbmVyYXRv
ckZyYW1lRW52aXJvbm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBz
Y29wZVJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRl
eCB9LCBhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9k
ZSkKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVtaXRQdXRJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZp
ZWxkOjpGcmFtZSkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZp
ZWxkOjpGcmFtZSkpOworICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdp
c3RlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSks
IGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRJbml0
aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxl
dmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCkBAIC0yNzIzLDE4ICsy
NzIwLDggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEFzeW5jR2VuZXJhdG9yRmll
bGRzKFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNBc3luY0dlbmVy
YXRvcldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKCkpKTsKIAotICAgIGVtaXREaXJlY3RQdXRC
eUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dEZ1bmN0aW9uLCBQcm9wZXJ0eU5vZGU6Oktu
b3duRGlyZWN0KTsKLSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JS
ZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2
YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwot
ICAgICAgICAKLSAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBl
bWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpLCBQ
cm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKLSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5
SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQ
cm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVy
YXRvclN1c3BlbmRSZWFzb25Qcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbjo6Tm9uZSkpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
Ci0KLSAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0UHJpdmF0ZU5hbWUo
KSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
KTsKLSAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3RQcml2YXRlTmFtZSgp
LCBlbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3Qp
OworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCksIG5leHRGdW5jdGlv
bik7CisgICAgZW1pdFB1dEludGVybmFsRmllbGQobV9nZW5lcmF0b3JSZWdpc3Rlciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSwgJm1fdGhpc1Jl
Z2lzdGVyKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVC
eUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHkpCkBAIC0yODc1LDYgKzI4NjIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KQogICAgIHJldHVybiBkc3Q7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5l
cmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BD
cmVhdGVBc3luY0dlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QsIG5ld1RhcmdldCk7CisgICAgcmV0
dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNrKFJlZ2lz
dGVySUQqIHRhcmdldCkKIHsKICAgICBPcENoZWNrVGR6OjplbWl0KHRoaXMsIHRhcmdldCk7CkBA
IC00NTE1LDcgKzQ1MDgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9i
amVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogICAgIGVtaXRMYWJl
bCh0YXJnZXQuZ2V0KCkpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQ
b2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb24gcmVzdWx0KQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6OkFz
eW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiByZXN1bHQpCiB7CiAgICAgUmVmPExhYmVsPiBtZXJn
ZVBvaW50ID0gbmV3TGFiZWwoKTsKICAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lp
ZWxkUG9pbnRzKys7CkBAIC00NTIzLDcgKzQ1MTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1
bgogCiAgICAgaWYgKHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0
b3JCb2R5TW9kZSkgewogICAgICAgICBpbnQgc3VzcGVuZFJlYXNvbiA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHJlc3VsdCk7Ci0gICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCks
IHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b25Qcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29u
KSkpOworICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFz
b24pLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29uKSkpOwogICAgIH0K
IAogICAgIC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KQEAgLTQ1NTUsNyArNDU0OCw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50LCBKU0FzeW5jR2VuZXJhdG9yRnVuCiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQuZ2V0KCkp
OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3Vz
cGVuZFJlYXNvbiByZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlp
ZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb24gcmVzdWx0KQogewogICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50LCBy
ZXN1bHQpOwogCkBAIC00NTk1LDcgKzQ1ODgsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxJdGVyYXRvcihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRAog
CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiB7
Ci0gICAgZW1pdFlpZWxkKHZhbHVlLCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdhaXQpOworICAgIGVtaXRZaWVsZCh2YWx1ZSwgSlNBc3lu
Y0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7CiAgICAgbW92
ZSh2YWx1ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIApAQCAtNDY2Nyw3ICs0NjYw
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJl
Z2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIAogICAgICAgICAgICAgUmVmPExhYmVsPiBi
cmFuY2hPblJlc3VsdCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZW1pdFlpZWxkUG9pbnQodmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6
QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVsZCk7CisgICAgICAgICAgICAgICAgZW1p
dFlpZWxkUG9pbnQodmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbjo6WWllbGQpOwogCiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBub3Jt
YWxMYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5M
YWJlbCA9IG5ld0xhYmVsKCk7CkBAIC00Nzc4LDEwICs0NzcxLDggQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBU
aHJvd2FibGUKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShpbnQzMl90IHN0YXRlKQogewogICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGUpKTsKLSAgICBpZiAobV9jb2RlQmxvY2stPnBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKLSAg
ICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUp
OwotICAgIGVsc2UKLSAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0
ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBj
b21wbGV0ZWRTdGF0ZSk7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5
bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdl
bmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6OlN0YXRlKSwgY29tcGxldGVkU3RhdGUpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SnVtcFZpYUZpbmFsbHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBM
YWJlbCYganVtcFRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyNjk0YjIyNmFiOTVjMmQ4NzBjY2Mw
ZmFjNDIxZGYxMTYxNDVjNzNlLi40MTk3YWJjMTJlNTIyNTg5MTRmZTUwMGVjMWVlN2I1YWNiMzRi
ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgot
I2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQXN5bmNH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKQEAgLTcyNSw2ICs3
MjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRo
aXMoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVByb21p
c2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wgaXNJbnRlcm5h
bFByb21pc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJhdG9yKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3
VGFyZ2V0KTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsK
ICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIHZv
aWQgZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0
YXJnZXQsIFJlZ2lzdGVySUQqIHNjb3BlKTsKQEAgLTg2OSw2ICs4NzAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4g
ZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc0FzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXN5bmNH
ZW5lcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUo
ZHN0LCBzcmMsIEFycmF5VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlz
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdp
dGhUeXBlKGRzdCwgc3JjLCBKU1Byb21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SXNQcm94eU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1
cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05
ODUsMTEgKzk4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBiZWdpblN3aXRj
aChSZWdpc3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5k
U3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBjb25zdCBWZWN0b3I8UmVmPExhYmVsPiwgOD4m
LCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCYgZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50
MzJfdCByYW5nZSk7CiAKLSAgICAgICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiwg
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24pOwor
ICAgICAgICB2b2lkIGVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqLCBKU0FzeW5jR2VuZXJhdG9y
OjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24pOwogCiAgICAgICAgIHZvaWQgZW1pdEdlbmVy
YXRvclN0YXRlTGFiZWwoKTsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uo
aW50MzJfdCBzdGF0ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklE
KiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb24gPSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6WWllbGQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJ
RCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
biA9IEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJh
bWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVu
dDo6VmFsdWUpXTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY1Mjc2NmFiZjljNTQxNDg0MzAwOWFkZTY4Zjc5ODQz
NzI0NGU2ODMuLjY1OTM3ZjMxOWJlOTI1NDkzZGVlZTI1Nzg0ZTExMmJhN2E1OGQ5YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpTQXN5bmNH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCkBAIC0xMDM0LDYgKzEwMzUsMjYgQEAgc3Rh
dGljIEpTR2VuZXJhdG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKiBub2QKICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0
ZTsKIH0KIAorc3RhdGljIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5jR2VuZXJhdG9ySW50
ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dlbmVyYXRvckZpZWxkU3RhdGUpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpG
aWVsZDo6U3RhdGU7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgICAgIHJldHVy
biBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigp
ID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxk
VGhpcykKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOworICAg
IGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0
b3I6OkZpZWxkOjpGcmFtZTsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVh
c29uKQorICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFz
b247CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkKKyAgICAgICAgcmV0
dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUZpcnN0OworICAgIGlmIChub2RlLT5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNH
ZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6
OkZpZWxkOjpRdWV1ZUxhc3Q7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOworfQorCiBSZWdpc3RlcklE
KiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5h
bEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsK
ICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTA2
MCw2ICsxMDgxLDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlCiAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBpbmRleCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5t
X25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmlu
c2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
c3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJp
bnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dl
bmVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25l
eHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJndW1lbnQoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMTYxLDYgKzExOTUs
MjIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19w
dXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGUKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUo
ZHN0LCBnZW5lcmF0b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZh
bHVlLmdldCgpKSk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2Rl
KiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgp
KTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3luY0dlbmVy
YXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUq
Pihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6
bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAg
ICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0
LCBnZW5lcmF0b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVl
LmdldCgpKSk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0g
bV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTI4Myw3ICsxMzMzLDE2IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNHZW5lcmF0b3IoSlNDOjpCeXRl
Y29kZUdlbmVyCiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1p
dElzR2VuZXJhdG9yKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpKSk7
CiB9Ci0gICAgCisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfaXNBc3luY0dlbmVyYXRvcihKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IEpTQzo6UmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdElzQXN5bmNHZW5lcmF0b3IoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pc0pTQXJyYXkoSlNDOjpC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKIHsKICAg
ICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtNDE1OCw3
ICs0MjE3LDcgQEAgUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIGFyZyA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChh
cmcuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uOjpZaWVsZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0WWllbGQoYXJnLmdldCgpLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb246OllpZWxkKTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5n
ZXQoKSk7CkBAIC00MTc3LDcgKzQyMzYsNyBAQCBSZWdpc3RlcklEKiBBd2FpdEV4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogewog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Ci0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpTQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcu
Z2V0KCksIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdh
aXQpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5
YjYzN2ZkN2RlZjUxYTYxODUzOGFiMDQ2ODJiMDQ1ZDI2YTFlZjdhLi4xZGEwMzJhMTgxYjhlYjJl
NTA4OTZlNzc4MmUzZjE4ZTcwYTQ3MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwu
aCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMjcxMywxMiArMjcx
NCw0MCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOiB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4obV9ncmFwaC5tX3ZtLCBiYXNlKSkgeworICAgICAgICAgICAgICAg
IGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
U3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0Fz
eW5jR2VuZXJhdG9yOjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1
Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5p
c1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJl
ZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNo
cG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0
YW50cyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldv
cmxkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0T3RoZXIpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0
cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBub2RlLT5zdHJ1Y3R1
cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgY2Fz
ZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgQVNTRVJUKCEhbm9kZS0+c3RydWN0dXJlKCku
Z2V0KCkpOwogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDA3ZjY5ZTY2ZDMwNGI3MmJiYmE2NjdlOWNlNzE2ZDUwYjYyYjZhYTcu
Ljk5ZTM2Yzk5ZWI4NTYxNTk3MWQ0YmMzZjIzNWNlOTQ1OTQ1Zjc4YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00OTkwLDYgKzQ5
OTAsNTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9nZW5lcmF0b3IpOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yOiB7CisgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y3VycmVudE5vZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFzeW5jR2VuZXJhdG9yPigpOworICAg
ICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Nh
bGxlZSkpOworCisgICAgICAgICAgICBib29sIGFscmVhZHlFbWl0dGVkID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0
YW50PEpTRnVuY3Rpb24qPigqbV92bSk7CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jaykubV9jYWNoZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoY2FjaGVkRnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgJiYgY2FjaGVkRnVu
Y3Rpb24gIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChj
YWNoZWRGdW5jdGlvbi0+aW5oZXJpdHM8SlNGdW5jdGlvbj4oKm1fdm0pKTsKKworICAgICAgICAg
ICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVu
Y3Rpb24pOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZv
KGZyb3plbiksIGNhbGxlZSk7CisKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSBzdGF0
aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY2FjaGVkRnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAgICAgICAg
ICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRh
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9j
YXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09
IEpTQXN5bmNHZW5lcmF0b3I6OmluZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNl
dCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5mcmVlemUocmFyZURhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
d2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKE5ld0FzeW5jR2VuZXJhdG9yLCBPcElu
Zm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBjYWxsZWUgaXMgc3RpbGwgbGl2ZSB1cCB0byB0aGlzIHBv
aW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2Fs
bGVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWFscmVhZHlFbWl0
dGVkKQorICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3Qp
LCBhZGRUb0dyYXBoKENyZWF0ZUFzeW5jR2VuZXJhdG9yLCBjYWxsZWUpKTsKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IpOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld09iamVjdD4oKTsKICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX2RzdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA3MWVjN2YxNjI4NDk1ZWIyYzg0MDQ1OTUxNzg1NzEwMmYxZDhlNDBhLi5k
MzM3NmJkMjFjYWU4OTNmZWVmNzE4MDhhMDBlODFlNzdjNTc1ZGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOgogICAgIGNh
c2Ugb3BfY3JlYXRlX3Byb21pc2U6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOgorICAg
IGNhc2Ugb3BfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcjoKICAgICBjYXNlIG9wX2JpdG5vdDoKICAg
ICBjYXNlIG9wX2JpdGFuZDoKICAgICBjYXNlIG9wX2JpdG9yOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA5YThhZDA3YjMxYTg4YmVhNmY5YjRkN2E5YTky
ZTFkZGJmOGVkNTQ3Li5jN2JhMDMxZWI1MTVhZDY0ZjljMzc0MGUzZGY0NzlhMTNjODU3Zjc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY5LDYgKzY2
OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAg
IGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICBjYXNl
IENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIFN0
cmluZ1ZhbHVlT2Y6CiAgICAgY2FzZSBPYmplY3RLZXlzOgpAQCAtMTU2OCw2ICsxNTY5LDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5l
d1Byb21pc2U6CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgY2FzZSBOZXdBc3luY0dlbmVy
YXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNl
IE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggZDJmN2JhNDc4ZDhlYzgzNGNkMjUwOGQ1M2JkOWZh
MTRkMjgwMDkwZS4uZWY2OGZkNTRmNGU0ZDdhYWQ1Njg1ODEwYzMzNDg0MTJlMGEwOThhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHAKQEAgLTU5LDYgKzU5LDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgog
ICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAg
Y2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdP
YmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCmluZGV4IGYzZjVjYjYwZDg4YWM1YzY0NTJkZGYxNWJlNGM0NWRmZTEw
OGQ5YTcuLjZlMTlhMmE0OWFiNzNlY2Q5NjRiYmRlMzc4MDIwMjBjYTQ0MGRjNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCkBAIC04MDIsNiArODAyLDMwIEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAg
ICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjogeworICAgICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9n
cmFwaC5tX3ZtLCBiYXNlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9u
UmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkgPT0gSlNBc3luY0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2Jh
bE9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRz
KCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9OZXdB
c3luY0dlbmVyYXRvcihtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2Fz
ZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCmluZGV4IGM5NzMzZDAwOTZkNjJlZjJkNWRlYzE3ODNlYzc2OWJlZjIwMjc1NjcuLmMy
NjEwYjZjNzhhZTMwN2ZiNzNmNjdiNzA0Y2NhNzVmZjQ0Mjk3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMzNCw2ICszMzQsNyBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2Ug
Q3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICBjYXNlIENyZWF0
ZUFzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgIGNhc2UgT2JqZWN0
S2V5czoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtMzQzLDYgKzM0NCw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09i
amVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAg
Y2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3
QXJyYXlXaXRoU3ByZWFkOgogICAgIGNhc2UgU3ByZWFkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZDA2NDMyMjVhY2JmYjQ0ZDZmMDFmMWY0N2Zm
MWFjNTk3ODkzZTVlNS4uYmYzODY2N2FhYjdkOTRkNjAyY2Y4MmUyODJlNmNkZGExYTMwNWViZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNjQ4
LDYgKzE2NDgsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Y2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgICAgIGNh
c2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgog
ICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0MDYsNiArMjQwNyw3
IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld09i
amVjdDoKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
cjoKKyAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMmQ1NTI0YTZiYzk4YjAyNDgzZmNh
YWVmZjZiZjk1MDVjYWQ1NWE1YS4uOWNmYmU1ZDk3ZTNmNTAxY2IyOTg3YTY1YjljNzdiZWVlOTI5
YjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc3Niw2ICs3NzYsMTUg
QEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wSW5mbzIgPSBPcEluZm9XcmFwcGVyKCk7CiAg
ICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9OZXdBc3luY0dlbmVyYXRvcihSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IENyZWF0ZUFz
eW5jR2VuZXJhdG9yKTsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3QXN5bmNHZW5l
cmF0b3IpOworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAgICAgICBtX29wSW5mbyA9IHN0
cnVjdHVyZTsKKyAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgIH0KKwog
ICAgIHZvaWQgY29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUqIGltbXV0YWJsZUJ1
dHRlcmZseSk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVl
Kik7CkBAIC0xOTE5LDYgKzE5MjgsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgTmV3
T2JqZWN0OgogICAgICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgICAgIGNhc2UgTmV3R2VuZXJh
dG9yOgorICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0
cmluZ09iamVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDFlYmRmZDEzYTk1YjU1
NDI0YmM2MWMzM2M5NjRiNWQ3NTJlNGE0MzIuLjU2ZGE2NzI0NmRkNzM4Yzg5YmEzYWMxZmFjZDBj
YzcyNmUyNzU0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAg
LTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRKUykgLyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJh
dGUgc2luY2Ugd2UncmUgcmV0dXJuaW5nIGl0IGFueXdheS4gKi8gXAogICAgIG1hY3JvKENyZWF0
ZVByb21pc2UsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhD
cmVhdGVHZW5lcmF0b3IsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhDcmVhdGVBc3luY0dlbmVyYXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0
Q2FsbGVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXApAQCAtMzQzLDYgKzM0NCw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhOZXdPYmplY3QsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKE5ld1Byb21pc2UsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KE5ld0dlbmVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0
b3IsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld0FycmF5LCBOb2RlUmVzdWx0SlMgfCBO
b2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNwcmVhZCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOZXdBcnJheVdpdGhTaXplLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBjMzE1YzI2NTI3Yzc2MmIxM2MwZTZlMzNjMzQ5YzJi
Y2I2NDQ0OWFiLi5mYTk0NTlkYjY5MGU1NThiYzJiYzk5Y2VhNjg0YzM4MzA3NzFlN2MwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQwOCw2ICs0
MDgsMTYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSkpOwogfQogCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dWJjbGFzc1N0cnVjdHVyZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0
LT5hc3luY0dlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQXN5bmNHZW5l
cmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCmluZGV4IDc0NGE1MGRiZmVmODI3NWUyOWFmNzI5NjljNjg2NGEzNjYyYzU3MDIu
LmU5ZWZlMDhlMjE1NzRhZWJlNjU2NTc5ZDQ0M2M5NDc4YjAxMjdhYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC01MSw2ICs1MSw3IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBj
b25zdHJ1Y3RvciwgdWluCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUHJv
bWlzZShFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0Kikg
V1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVy
bmFsUHJvbWlzZShFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2Jq
ZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0
ZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2Jq
ZWN0KikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0
ZUFzeW5jR2VuZXJhdG9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9i
YWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0
cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
IFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggYzNkOTIxY2Q3MWE1ODM2
NDc5MGExY2NlYTk5NDQ4Y2VmMjRmN2Y0Ny4uYjhjYjI4Y2Q0NmFhMDMzYmJmOWUzOWU5MTM4MWZl
YWVlNmM2ODM0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwMTgsNiArMTAxOCw4IEBA
IGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAg
ICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6Cisg
ICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgIGNhc2UgTmV3QXN5bmNH
ZW5lcmF0b3I6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA3ZDhlZWU4NGRmYTc3Y2M0N2ZlYjE5NTBhZWUx
ZDYzYmRhNzg1YzE2Li45M2IxNDgyMWZkMjAxNTE4YTU0MDBlOTU0NGQ2Y2I5MGRjMWVkMWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTgw
LDYgKzE4MCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUs
IEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAg
ICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAg
IGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEdldENhbGxlZToKQEAgLTMyMyw2ICszMjQsNyBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2Ug
TmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0FzeW5jR2Vu
ZXJhdG9yOgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgog
ICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDUxYmEzNDgyNTE0ZWFjNGFlNzc4ZGYyNjM0NjQ3
MmM3ZDljNzIyNzQuLjI4NTY0ZDRiMzJlYzkyNzRiNjkwZWRjMTc0OGMxOThjNGViMmNjNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBA
IC0xMjc3NiwxMSArMTI3NzYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
R2VuZXJhdG9yKE5vZGUqIG5vZGUpCiAKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1Q
dHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTR2Vu
ZXJhdG9yPihyZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJhdG9yKSk7Ci0gICAgbV9qaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNOdWxsKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRH
UFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90bykpKSk7Ci0g
ICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkp
KTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNl
dE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxk
OjpOZXh0KSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpUaGlzKSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVm
aW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgYXV0byBpbml0aWFsVmFsdWVzID0g
SlNHZW5lcmF0b3I6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBKU0dlbmVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkK
KyAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoaW5pdGlhbFZhbHVlc1tpbmRleF0sIEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8
Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5j
ZShtX2ppdC52bSgpKTsKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BSLCBjYWxs
ZWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9i
amVjdCkpKTsKQEAgLTEyNzg4LDYgKzEyNzg2LDQ5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBc3luY0dl
bmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMp
OworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDIodGhpcyk7CisKKyAgICBHUFJSZWcgY2FsbGVlR1BSID0gY2FsbGVlLmdwcigpOworICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHN0cnVjdHVyZUdQ
UiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5n
cHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKyAgICAvLyBS
YXJlIGRhdGEgaXMgb25seSB1c2VkIHRvIGFjY2VzcyB0aGUgYWxsb2NhdG9yICYgc3RydWN0dXJl
CisgICAgLy8gV2UgY2FuIGF2b2lkIHVzaW5nIGFuIGFkZGl0aW9uYWwgR1BSIHRoaXMgd2F5Cisg
ICAgR1BSUmVnIHJhcmVEYXRhR1BSID0gc3RydWN0dXJlR1BSOworCisgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwg
cmFyZURhdGFHUFIpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIpKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
ZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJv
LCBzdHJ1Y3R1cmVHUFIpKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlNBc3luY0dl
bmVyYXRvcjo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgp
KSkpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3Jh
cGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOworICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSkpOworCisgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIp
OworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0FzeW5jR2VuZXJhdG9y
PihyZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRj
aDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTQXN5bmNHZW5lcmF0b3IpKTsKKyAgICBhdXRvIGlu
aXRpYWxWYWx1ZXMgPSBKU0FzeW5jR2VuZXJhdG9yOjppbml0aWFsVmFsdWVzKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6bnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUo
aW5pdGlhbFZhbHVlc1tpbmRleF0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSkp
OworICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2ppdC52bSgpKTsKKworICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFz
eW5jR2VuZXJhdG9yLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSkpOworCisgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3T2Jq
ZWN0KE5vZGUqIG5vZGUpCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTEy
ODU5LDExICsxMjkwMCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0
b3IoTm9kZSogbm9kZSkKICAgICBGcm96ZW5WYWx1ZSogc3RydWN0dXJlID0gbV9ncmFwaC5mcmVl
emVTdHJvbmcobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIGF1dG8gYnV0dGVyZmx5ID0g
VHJ1c3RlZEltbVB0cihudWxscHRyKTsKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93
blNpemU8SlNHZW5lcmF0b3I+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBi
dXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNH
ZW5lcmF0b3IpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bGwoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+Ojpv
ZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6UG9seVByb3RvKSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQp
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSkpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpz
VW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpKSkpOwotICAgIG1faml0LnN0b3JlVHJ1c3Rl
ZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpKSkpOwotICAgIG1faml0LnN0
b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxk
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpKTsKKyAg
ICBhdXRvIGluaXRpYWxWYWx1ZXMgPSBKU0dlbmVyYXRvcjo6aW5pdGlhbFZhbHVlcygpOworICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IEpTR2VuZXJhdG9yOjpudW1iZXJPZklu
dGVybmFsRmllbGRzOyArK2luZGV4KQorICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShp
bml0aWFsVmFsdWVzW2luZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7
CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCiAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJh
dG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOwpAQCAtMTI4NzEsNiAr
MTI5MTAsMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihOb2Rl
KiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKE5vZGUqIG5vZGUpCit7CisgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5n
cHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBGcm96ZW5WYWx1ZSogc3Ry
dWN0dXJlID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwor
ICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1c3RlZEltbVB0cihudWxscHRyKTsKKyAgICBlbWl0QWxs
b2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8SlNBc3luY0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gy
R1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0FzeW5jR2VuZXJhdG9yKSk7CisgICAgYXV0byBpbml0
aWFsVmFsdWVzID0gSlNBc3luY0dlbmVyYXRvcjo6aW5pdGlhbFZhbHVlcygpOworICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IEpTQXN5bmNHZW5lcmF0b3I6Om51bWJlck9mSW50
ZXJuYWxGaWVsZHM7ICsraW5kZXgpCisgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGlu
aXRpYWxWYWx1ZXNbaW5kZXhdLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChpbmRleCkpKTsK
KyAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7CisKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBc3luY0dl
bmVyYXRvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKworICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCAzZWU3YWNlZWQ2N2ViZDIxZDllMTZlNmJiZDM3MDI4OGFlMjE1
ODJhLi42ZDIxMTVlYThiNjNlOGE4MGZmOGQ1NjdkZDE0MjdhODM4Y2IxMjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDc1LDkgKzE0
NzUsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRo
aXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcihOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRl
QXN5bmNHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld09iamVjdChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlTmV3UHJvbWlzZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3
R2VuZXJhdG9yKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlVG9QcmltaXRpdmUoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUxvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hh
ZG93Q2hpY2tlblRhaWwoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggODQzMDU3MDhlZjJiMjc3M2RiMmU1
MmFmNjNlMDIzMzM4MWFhOWRlNi4uMDFiNmY1YWY2NDcxOTg2ZDlkMTlkYTc1NDY3YTE1OWQwNTU2
OGEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCkBAIC0zMTYyLDYgKzMxNjIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IENyZWF0ZUFzeW5jR2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVBc3luY0dlbmVy
YXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOZXdPYmplY3Q6
IHsKICAgICAgICAgY29tcGlsZU5ld09iamVjdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
MTc3LDYgKzMxODIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOiB7
CisgICAgICAgIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAgICAgY29tcGlsZUdldENhbGxl
ZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiZDljM2JiZjgzNGE3ZGNkMzAyMGY0YTI1
OWU2ZWZlODI2M2VmZTg3Li4xNTYwYzY4OGRhYmE0MTJmZGY2ZjE3ZThkZGY2Mjc3YWUyNmE3MDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTM0ODgsNiArMzQ4OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3Iobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6IHsKKyAg
ICAgICAgY29tcGlsZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVO
ZXdPYmplY3Qobm9kZSk7CkBAIC0zNTA0LDYgKzM1MDksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IE5ld0FzeW5jR2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAg
ICAgICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCmluZGV4IDU0OTE3ZGIzNDkxZTJkN2E5MjliNTcxY2M3MzYxMmJhZDE3Nzc1ODQu
Ljc1ODY3YmY3NzVmOTUyZGUwOWU1NWUyOTMzNDUyYTk2ZmI0MjQ5NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC0zMjMsNiArMzIzLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoK
KyAgICAgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgICAgICBjYXNlIE5l
d0FycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICAgICAg
Y2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCBlYWQyNTlhMDE0NzUyZTJjMzY5MjZkOGQxNmMzNThhZjE2NGYw
YjM5Li5mYTYwOTkxMDA1NGM3YjJhOWIyZmMzMzRkZTgzMTliMTgwZTljNDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC03Niw2ICs3Niw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRv
cjoKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0
OgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2UgTmV3QXJyYXk6CkBAIC0zODIsNiArMzgz
LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0
ZUdlbmVyYXRvcjoKKyAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQ6CiAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgogICAgIGNhc2UgRGF0YVZp
ZXdTZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggYTE0MGIwYjQ0OTI3MmY2YzBkMzQyOTc1YzY3ZjFlMGFiNWYxOWI2MS4uN2E3ZGE5ZDc2
NmUxMjhhNjI3YzAwOTgxY2Y2NWY0N2VmZWVkYjE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUg
IkpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRTdWJHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCkBAIC0xMDUyLDYgKzEwNTMsOSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAg
ICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgorICAgICAgICAgICAgY29tcGlsZU5ld0FzeW5jR2Vu
ZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmpl
Y3Q6CiAgICAgICAgICAgICBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEwNzMsNiArMTA3Nyw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVyYXRv
cigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0
b3I6CisgICAgICAgICAgICBjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVTcHJl
YWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkyNywxMSArNTkzNCw5IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0
TmV3QmxvY2tzQmVmb3JlKHNsb3dDYXNlKTsKIAogICAgICAgICBMVmFsdWUgZ2VuZXJhdG9yID0g
YWxsb2NhdGVPYmplY3Q8SlNHZW5lcmF0b3I+KG1fbm9kZS0+c3RydWN0dXJlKCksIG1fb3V0Lmlu
dFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQo
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSkpKSwgZ2VuZXJhdG9yLCBt
X2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpXSk7Ci0gICAgICAgIG1fb3V0
LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkp
LCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZp
ZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KV0pOwot
ICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdElt
cGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVs
ZDo6VGhpcyldKTsKLSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFs
RmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dl
bmVyYXRvcjo6RmllbGQ6OkZyYW1lKV0pOworICAgICAgICBhdXRvIGluaXRpYWxWYWx1ZXMgPSBK
U0dlbmVyYXRvcjo6aW5pdGlhbFZhbHVlcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBKU0dlbmVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRl
eCkKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoaW5pdGlhbFZhbHVlc1tpbmRleF0pKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbaW5kZXhdKTsKICAgICAgICAgbXV0YXRv
ckZlbmNlKCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNo
b3IoZ2VuZXJhdG9yKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNTk0
NCw2ICs1OTQ5LDI5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9
CiAKKyAgICB2b2lkIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcigpCisgICAgeworICAgICAgICBM
QmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd0Nhc2UpOworCisg
ICAgICAgIExWYWx1ZSBnZW5lcmF0b3IgPSBhbGxvY2F0ZU9iamVjdDxKU0FzeW5jR2VuZXJhdG9y
PihtX25vZGUtPnN0cnVjdHVyZSgpLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAg
ICAgIGF1dG8gaW5pdGlhbFZhbHVlcyA9IEpTQXN5bmNHZW5lcmF0b3I6OmluaXRpYWxWYWx1ZXMo
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgSlNBc3luY0dlbmVy
YXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAgICAgICAgIG1fb3V0
LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoaW5pdGlhbFZhbHVlc1tp
bmRleF0pKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50
ZXJuYWxGaWVsZHNbaW5kZXhdKTsKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2VuZXJhdG9yKTsKKyAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRlcihtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhtX25vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKKyAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVy
VHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlTmV3U3RyaW5nT2JqZWN0KCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmUoKTsKQEAgLTYzOTIsMTEgKzY0MjAsOSBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGZhc3RBbGxvY2F0
aW9uQ2FzZSwgc2xvd0Nhc2UpOwogICAgICAgICBMVmFsdWUgZ2VuZXJhdG9yID0gYWxsb2NhdGVP
YmplY3Q8SlNHZW5lcmF0b3I+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2Up
OwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBs
X2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6
OlBvbHlQcm90byldKTsKLSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsKLSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25z
dEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFw
cy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3Jl
NjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5l
cmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKV0pOwotICAgICAg
ICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50
ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJh
bWUpXSk7CisgICAgICAgIGF1dG8gaW5pdGlhbFZhbHVlcyA9IEpTR2VuZXJhdG9yOjppbml0aWFs
VmFsdWVzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IEpTR2Vu
ZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmllbGRzOyArK2luZGV4KQorICAgICAgICAgICAgbV9v
dXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsVmFsdWVz
W2luZGV4XSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9p
bnRlcm5hbEZpZWxkc1tpbmRleF0pOwogICAgICAgICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihnZW5lcmF0b3IpOwogICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC02NDExLDYgKzY0MzcsNTUgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAor
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2Nr
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNTdHJ1Y3R1cmUgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjaGVja0dsb2JhbE9iamVjdENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBmYXN0QWxsb2NhdGlvbkNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCBy
YXJlbHkoc2xvd0Nhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUg
cmFyZURhdGEgPSBtX291dC5sb2FkUHRyKGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVE
YXRhKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFy
ZWx5KHNsb3dDYXNlKSwgdXN1YWxseShoYXNSYXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGhhc1JhcmVEYXRhLCBoYXNTdHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgc3RydWN0
dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX2lu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZV9zdHJ1Y3R1cmUpOworICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuaXNaZXJvNjQoc3RydWN0dXJlKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1
YWxseShoYXNTdHJ1Y3R1cmUpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNTdHJ1Y3R1
cmUsIGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5l
cXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZv
KSwgbV9vdXQuY29uc3RJbnRQdHIoSlNBc3luY0dlbmVyYXRvcjo6aW5mbygpKSksIHVzdWFsbHko
Y2hlY2tHbG9iYWxPYmplY3RDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY2hlY2tHbG9iYWxPYmplY3RDYXNlLCBmYXN0QWxsb2NhdGlvbkNhc2UpOwor
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUs
IG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCkpLCB1c3VhbGx5KGZhc3RBbGxvY2F0aW9uQ2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGZhc3RBbGxvY2F0aW9uQ2FzZSwgc2xvd0Nhc2UpOworICAg
ICAgICBMVmFsdWUgZ2VuZXJhdG9yID0gYWxsb2NhdGVPYmplY3Q8SlNBc3luY0dlbmVyYXRvcj4o
c3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIGF1dG8gaW5p
dGlhbFZhbHVlcyA9IEpTQXN5bmNHZW5lcmF0b3I6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6bnVtYmVy
T2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9v
dXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoaW5pdGlhbFZhbHVlc1tpbmRleF0pKSwgZ2Vu
ZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNb
aW5kZXhdKTsKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2VuZXJhdG9yKTsKKyAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250
aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5j
aG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2Vu
ZXJhdG9yKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSkp
OworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBt
X291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOworCisgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVTcHJlYWQoKQogICAgIHsK
ICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRvbU5ld0FycmF5QnVm
ZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYmJmY2ZlMzBmYTM2MGZkZjUz
ZDgzN2E3Yjk3YTU0MjM2N2UyOTVhZi4uZWZhZDU1YzFlNDIwMjNjMGEwYTYzYjMxNTgzZThhYWZi
ZmQyZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzEzLDYgKzMxMyw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1df
T1AoY3JlYXRlX3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKG5ld19wcm9taXNlKQog
ICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfZ2VuZXJhdG9yKQorICAgICAgICBERUZJTkVf
U0xPV19PUChjcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV19PUChu
ZXdfZ2VuZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV19PUChwb3cpCiAKQEAgLTU4Myw2ICs1
ODQsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AoY3JlYXRlX3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KGNyZWF0ZV9nZW5lcmF0b3IpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0
ZV9hc3luY19nZW5lcmF0b3IpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3Ro
aXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3ByaW1pdGl2ZSkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fbnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggM2MzZTM2MmU1NzUyMzk3Yzk3ZjE2Y2Qz
OWYxMDM3NDEwNjcxYmNmNS4uNjU2ZTdkZDg2YWIyM2M5NjhmZTliNzgxZWRhYWM0YTVhNWZiYmQy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0x
NDAyLDYgKzE0MDIsMTQgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVy
YXRvcihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXIKICAgICByZXR1cm4gSlNH
ZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKIH0KIAorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBKU0FzeW5jR2VuZXJh
dG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHJlZ2V4cFB0cikKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDFiNzQ5YjIzMGY4MDJkM2Zj
NDJmY2ZhMTYwNDZiYTg5ZjMwYzhjNWIuLmQyNTMyMzE0YWY3M2Q5MjU4MDg0MTIwZjZhNWU0OTQx
N2ZlY2VlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBA
IC00MjIsNiArNDIyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVj
dChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3UHJvbWlzZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50ZXJuYWxQcm9taXNl
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3IoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9y
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFM
OwogVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlVHJhcHMoRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMGZlYTA5NjAx
ZDI3MWI2ZWYyMWM1ZTliNGIwZTQyYzRjNTZiNDBkNC4uMmQ5YTE3MjQ2MmFjZTlmZTNhNjFhOWYw
Y2UwY2MyNmI0OTZmZTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ5Niw2ICsxNDk2LDcgQEAgc2xvd1BhdGhP
cChjcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKIHNsb3dQYXRoT3AoY3JlYXRlX3RoaXMpCiBzbG93
UGF0aE9wKGNyZWF0ZV9wcm9taXNlKQogc2xvd1BhdGhPcChjcmVhdGVfZ2VuZXJhdG9yKQorc2xv
d1BhdGhPcChjcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKQogc2xvd1BhdGhPcChkZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHkpCiBzbG93UGF0aE9wKGRlZmluZV9kYXRhX3Byb3BlcnR5KQogc2xvd1BhdGhP
cChlbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAxMTIzZDE3OWY2MzkwNjIzMTVlNTQy
NDA0YTFlNTI1YjQ4N2U2ZjVmLi41MjYxZjMyMzAwYmMxYzZiZDZkMzk5YjdhMWVlZTQzYTNkMWRj
YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTMzMSw2ICszMzEsMjggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV9nZW5lcmF0b3IpCiAgICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKQoreworICAgIEJFR0lOKCk7CisgICAg
YXV0byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUFzeW5jR2VuZXJhdG9yPigpOworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yQXNPYmplY3QgPSBhc09iamVjdChHRVQoYnl0ZWNv
ZGUubV9jYWxsZWUpLmpzVmFsdWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IElu
dGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51bGxwdHIsIGNv
bnN0cnVjdG9yQXNPYmplY3QsIGdsb2JhbE9iamVjdC0+YXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUo
KSk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgSlNBc3luY0dlbmVyYXRvciogcmVzdWx0
ID0gSlNBc3luY0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworCisgICAgSlNGdW5j
dGlvbiogY29uc3RydWN0b3IgPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY29uc3Ry
dWN0b3JBc09iamVjdCk7CisgICAgaWYgKGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLT5jYW5V
c2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CisgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+JiBj
YWNoZWRDYWxsZWUgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKS5tX2NhY2hlZENhbGxlZTsKKyAg
ICAgICAgaWYgKCFjYWNoZWRDYWxsZWUpCisgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0KHZt
LCBleGVjLT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOworICAgICAgICBlbHNlIGlmIChjYWNo
ZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQoKSAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9i
amVjdHMoKSAmJiBjYWNoZWRDYWxsZWUuZ2V0KCkgIT0gY29uc3RydWN0b3IpCisgICAgICAgICAg
ICBjYWNoZWRDYWxsZWUuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0aXBs
ZUNhbGxlZU9iamVjdHMoKSk7CisgICAgfQorICAgIFJFVFVSTihyZXN1bHQpOworfQorCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcikKIHsKICAgICBCRUdJTigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA3
ZjkwYjE0MGI4OTc5MGZlMTRjNDMwN2YxYTIwZjc0ZmQ5ZDNmYmIxLi5kNWQ2ZjdlMjQwMGRiN2M5
MGVkMWYzNjllYmY4MzI3ODI2ZDk0YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzg1LDYgKzM4NSw3IEBAIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfaXNfdmFyX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcHJvbWlzZSk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9nZW5lcmF0b3IpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2NjYzZj
MzU4NWJiOGFjN2MzOGU4MzUwZjA5YzVjN2M1MmQ1MDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5jcHAKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBKU0FzeW5jR2VuZXJhdG9yOjpzX2luZm8gPSB7ICJBc3luY0dlbmVyYXRv
ciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNBc3luY0dlbmVyYXRvcikgfTsKKworSlNBc3luY0dlbmVyYXRvciogSlNBc3luY0dlbmVyYXRv
cjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNBc3luY0dl
bmVyYXRvciogZ2VuZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBc3luY0dl
bmVyYXRvcj4odm0uaGVhcCkpIEpTQXN5bmNHZW5lcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAg
Z2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30K
KworU3RydWN0dXJlKiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhKU0FzeW5jR2VuZXJhdG9yVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQor
CitKU0FzeW5jR2VuZXJhdG9yOjpKU0FzeW5jR2VuZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNBc3lu
Y0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZkludGVybmFsRmllbGRzOyArK2lu
ZGV4KQorICAgICAgICBpbnRlcm5hbEZpZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tp
bmRleF0pOworfQorCit2b2lkIEpTQXN5bmNHZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQXN5bmNHZW5lcmF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcx
NzExMTVjOWRlMDgyNTlmZjlhNGRkN2NkOGMyYjIzMWFkZWNiZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaApAQCAtMCww
ICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0dlbmVy
YXRvci5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEpTQXN5bmNHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbDw4PiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGw8OD47CisKKyAgICAvLyBKU0FzeW5jR2VuZXJhdG9yIGhhcyBv
bmUgaW5saW5lIHN0b3JhZ2Ugc2xvdCwgd2hpY2ggaXMgcG9pbnRpbmcgaW50ZXJuYWxGaWVsZCgw
KS4KKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxp
bmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHks
IGlubGluZUNhcGFjaXR5ID09IDBVKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0FzeW5jR2Vu
ZXJhdG9yKTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNzIEFzeW5jR2VuZXJhdG9yU3RhdGUgOiBp
bnQzMl90IHsKKyAgICAgICAgQ29tcGxldGVkID0gLTEsCisgICAgICAgIEV4ZWN1dGluZyA9IC0y
LAorICAgICAgICBTdXNwZW5kZWRTdGFydCA9IC0zLAorICAgICAgICBTdXNwZW5kZWRZaWVsZCA9
IC00LAorICAgICAgICBBd2FpdGluZ1JldHVybiA9IC01LAorICAgIH07CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxpbnQzMl90PihBc3luY0dlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQp
ID09IHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6Q29t
cGxldGVkKSk7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQzMl90PihBc3luY0dl
bmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICBlbnVtIGNsYXNzIEFzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA6IGludDMyX3QgeworICAgICAgICBOb25lID0gMCwKKyAg
ICAgICAgWWllbGQgPSAtMSwKKyAgICAgICAgQXdhaXQgPSAtMgorICAgIH07CisKKyAgICBlbnVt
IGNsYXNzIEZpZWxkIDogdWludDMyX3QgeworICAgICAgICAvLyBGSVhNRTogSlNBc3luY0dlbmVy
YXRvciBzaG91bGQgc3VwcG9ydCBQb2x5UHJvdG8sIHNpbmNlIGdlbmVyYXRvciB0ZW5kcyB0byBi
ZSBjcmVhdGVkIHdpdGggcG9seSBwcm90byBtb2RlLgorICAgICAgICAvLyBXZSByZXNlcnZlIHRo
ZSBmaXJzdCBpbnRlcm5hbCBmaWVsZCBmb3IgUG9seVByb3RvIHByb3BlcnR5LiBUaGlzIG9mZnNl
dCBpcyBpZGVudGljYWwgdG8gSlNGaW5hbE9iamVjdCdzIGZpcnN0IGlubGluZSBzdG9yYWdlIHNs
b3Qgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciBQb2x5UHJvdG8uCisgICAgICAgIFBvbHlQcm90byA9
IDAsCisgICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlzLAorICAgICAg
ICBGcmFtZSwKKyAgICAgICAgU3VzcGVuZFJlYXNvbiwKKyAgICAgICAgUXVldWVGaXJzdCwKKyAg
ICAgICAgUXVldWVMYXN0LAorICAgIH07CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVy
bmFsRmllbGRzID09IDgpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9m
SW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSwKKyAgICAgICAg
ICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAgICAg
ICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6Tm9uZSkpLAorICAgICAgICAgICAganNO
dWxsKCksCisgICAgICAgICAgICBqc051bGwoKSwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNBc3luY0dlbmVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3Byb3RlY3RlZDoKKyAgICBKU0Fz
eW5jR2VuZXJhdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IDg2YmEz
NzFiMGQxMWM2MGQ3OGEyMTg5MjIyMGM2ZDJiM2QyOWE5MGYuLjBlYmYwNzZjMTkyNGJjOWMxNDRk
YzJkYzNhYTA5Nzc0Yzc1YjgxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC01NiwxOSArNTYsNiBA
QCBjbGFzcyBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlv
biB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBBc3luY0dlbmVyYXRvclN0YXRlIDogaW50MzJf
dCB7Ci0gICAgICAgIENvbXBsZXRlZCA9IC0xLAotICAgICAgICBFeGVjdXRpbmcgPSAtMiwKLSAg
ICAgICAgU3VzcGVuZGVkU3RhcnQgPSAtMywKLSAgICAgICAgU3VzcGVuZGVkWWllbGQgPSAtNCwK
LSAgICAgICAgQXdhaXRpbmdSZXR1cm4gPSAtNQotICAgIH07Ci0gICAgCi0gICAgZW51bSBjbGFz
cyBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gOiBpbnQzMl90IHsKLSAgICAgICAgTm9uZSA9
IDAsCi0gICAgICAgIFlpZWxkID0gLTEsCi0gICAgICAgIEF3YWl0ID0gLTIKLSAgICB9OwogcHJp
dmF0ZToKICAgICBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yLmNwcAppbmRleCA3NThiNzA3ZTQ1YjhlYWIzMjk2NmViNGM4YTVk
NTA3YTBhODk3OWFjLi41MTQyZDdmODdiZWYwYmNiM2VlOWI1NmI1M2Q1ZTk2NjgxY2MzZmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCkBAIC01
MywxMSArNTMsOSBAQCBKU0dlbmVyYXRvcjo6SlNHZW5lcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHZvaWQgSlNHZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgaW50ZXJuYWxGaWVsZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oRmllbGQ6OlBvbHlQcm90bykpLnNldCh2bSwgdGhpcywganNOdWxsKCkp
OwotICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpTdGF0ZSkp
LnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oR2VuZXJhdG9yU3Rh
dGU6OkluaXQpKSk7Ci0gICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmll
bGQ6Ok5leHQpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVkKCkpOwotICAgIGludGVybmFsRmll
bGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpUaGlzKSkuc2V0KHZtLCB0aGlzLCBqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVs
ZDo6RnJhbWUpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVkKCkpOworICAgIGF1dG8gdmFsdWVz
ID0gaW5pdGlhbFZhbHVlcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IG51bWJlck9mSW50ZXJuYWxGaWVsZHM7ICsraW5kZXgpCisgICAgICAgIGludGVybmFsRmllbGQo
aW5kZXgpLnNldCh2bSwgdGhpcywgdmFsdWVzW2luZGV4XSk7CiB9CiAKIHZvaWQgSlNHZW5lcmF0
b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oCmluZGV4IDdiNDRlNzc2
YWQwMGE5NDA1NjViNmQwNzdmZGQ2N2QzMWQ1YmQyMmMuLmYyM2YzYzUzZmJkYmMwODQwZjQ4OGYy
YWQ4NDg2YTg4OTA2MGVlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3IuaApAQCAtNzIsNiArNzIsMTYgQEAgY2xhc3MgSlNHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw1PiB7CiAgICAgICAgIEZyYW1lLAogICAg
IH07CiAgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVybmFsRmllbGRzID09IDUpOworICAg
IHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRp
YWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGpzTnVsbCgp
LAorICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oR2VuZXJhdG9yU3Rh
dGU6OkluaXQpKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1Vu
ZGVmaW5lZCgpLAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgfTsKKyAgICB9
CiAKICAgICBzdGF0aWMgSlNHZW5lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggMGQ1OTg5NGRmNmI2ZWVkM2FlMWYzODM0ZDJkOWI5NzJjZmRjNGM1ZS4u
YTIwYjE2Mzg0ZmQ0OWM5NzQ5Zjk3NjI0NDc1N2U4Y2M3Y2NhOWVkOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODMzLDYgKzgz
Myw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX2FzeW5jR2VuZXJhdG9yUHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
ICAgICBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fYXN5bmNHZW5lcmF0
b3JQcm90b3R5cGUuZ2V0KCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9h
c3luY0dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBm
dW5jdGlvbkNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CkBAIC0xNzY5LDYgKzE3NzAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yU3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yU3Ry
dWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3JlZ0V4cE1hdGNoZXNBcnJheVdpdGhHcm91cHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMWQyYmMyZGEyMTQxNmNi
ZWU1ZjkxMDgwMmY3ZjQzYzhiYjAwZjIxYy4uYmUxYmQyNTI3Njk2MGI0MGEzODAyNmMyZDBiOWQ1
NjhjNTRiYmY5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCkBAIC0zNzUsNiArMzc1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVdpdGhHcm91
cHNTdHJ1Y3R1cmU7CkBAIC03NTQsNiArNzU1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBhc3luY0dl
bmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5
bmNGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JGdW5j
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKaW5kZXggZGFjNWU2OWRhMjA0NTFiOTBmZDQ4YjA3YTcwYzExMjIzZjU3MDc2YS4uZTkw
ODUzZDA3NzE3ZjkxMjQyM2M0NjlhMDliZTczYWViNDQ1ZDFhNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuY3BwCkBAIC05Nyw2ICs5Nyw3IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoUmVnRXhw
T2JqZWN0VHlwZSkKICAgICBDQVNFKFByb3h5T2JqZWN0VHlwZSkKICAgICBDQVNFKEpTR2VuZXJh
dG9yVHlwZSkKKyAgICBDQVNFKEpTQXN5bmNHZW5lcmF0b3JUeXBlKQogICAgIENBU0UoSlNQcm9t
aXNlVHlwZSkKICAgICBDQVNFKEpTTWFwVHlwZSkKICAgICBDQVNFKEpTU2V0VHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggMDFlNzAyMjczNDc2NGIxOGQ5ZTMx
YTkxZWU4Y2Q2MGE5OTU5MjVlYS4uMGU4MTkwNWRiZDM2YzkzOTg4Y2ZhZWRhZmU5OTJiYzY5MzU2
ZDJlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTEwOSw2ICsx
MDksNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFJlZ0V4cE9iamVjdFR5cGUsCiAg
ICAgUHJveHlPYmplY3RUeXBlLAogICAgIEpTR2VuZXJhdG9yVHlwZSwKKyAgICBKU0FzeW5jR2Vu
ZXJhdG9yVHlwZSwKICAgICBKU1Byb21pc2VUeXBlLAogICAgIEpTTWFwVHlwZSwKICAgICBKU1Nl
dFR5cGUsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379440</attachid>
            <date>2019-09-24 01:53:49 -0700</date>
            <delta_ts>2019-09-24 01:58:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201498-20190924015348.patch</filename>
            <type>text/plain</type>
            <size>111921</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTkwNWE0MjY2MTg5MGJkMDZlNDc1NGIyZjRiMWIxMTE4MjZhYWVlLi4wOTY0MjExNGZkMDE5YzJk
MDkzMmExNGQ5NWM0ZTFiYjVkNjMwYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTktMDktMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBc3luY0dlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5hbCBm
aWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MTQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qczoK
KyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHkpOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZSk6CisgICAgICAg
IChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKToKKyAgICAgICAgKGds
b2JhbFByaXZhdGUuaXNFeGVjdXRpb25TdGF0ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmlz
U3VzcGVuZFlpZWxkU3RhdGUpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRv
clJlamVjdCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUmVzb2x2ZSk6
CisgICAgICAgIChhc3luY0dlbmVyYXRvcllpZWxkQXdhaXRlZCk6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLmFzeW5jR2VuZXJhdG9yWWllbGQpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5kb0Fz
eW5jR2VuZXJhdG9yQm9keUNhbGwpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVy
YXRvclJlc3VtZU5leHQpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvckVu
cXVldWUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
Lmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJ
bmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JG
aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFzeW5j
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRJc0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
SW5kZXgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19pc0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6WWllbGRFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3SW50ZXJu
YWxGaWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9OZXdHZW5lcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
QXN5bmNHZW5lcmF0b3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdBc3luY0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVh
dGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBc3luY0dlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9KU0Fz
eW5jR2VuZXJhdG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3IuY3BwLgorICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpKU0FzeW5jR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0FzeW5jR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXN5bmNHZW5lcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3IuaC4KKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJ
bnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0yMyAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjI1MDI2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NTM0ZDdkMDJhMThhM2Q0ZWRkMWU0OTZkYzZlYmRiMThjZWQ5NGZlMC4uYWVjOWM2YmFmODZlNTU5
MjMzNTQzNWJjN2Q4MWJhY2Q1ZjNkODMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE4MjYsNiArMTgyNiw3IEBACiAJCUUzOUQ4QjJFMjMwMjFFMjYwMDI2NTg1MiAvKiBXYXNt
T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5RDhCMkQyMzAyMUUxRTAwMjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmggKi87IH07CiAJ
CUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM5RUVBRjMyMjgxMjQ1MDAwODQ3NEY0IC8qIE9iamVjdFRvU3Ry
aW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlFRUFGMjIyODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0
VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgfTsKKwkJRTM5RkVCRTMy
MzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMzOUM1RDQwMEI0MEFCMCAvKiBK
U0FzeW5jR2VuZXJhdG9yLmggKi87IH07CiAJCUUzQTA1MzFBMjEzNDJCNjgwMDIyRUMxNCAvKiBX
YXNtU3RyZWFtaW5nUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNl
ci5oICovOyB9OwogCQlFM0EwNTMxQzIxMzQyQjY4MDAyMkVDMTQgLyogV2FzbVNlY3Rpb25QYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTA1
MzE4MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oICovOyB9OwogCQlFM0Ez
MkJDNzFGQzgzMTQ3MDA3RDdFNzYgLyogV2Vha01hcEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMyQkM2MUZDODMxMkUwMDdEN0U3NiAvKiBX
ZWFrTWFwSW1wbC5oICovOyB9OwpAQCAtNDk0Niw2ICs0OTQ3LDggQEAKIAkJRTM5RTAzMEQyMkQ5
RUEzRTAwNDA4QzE4IC8qIFdlYkFzc2VtYmx5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gV2Vi
QXNzZW1ibHkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUVFQUYxMjI4MTI0
NEMwMDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUVFQUYyMjI4MTI0
NEMwMDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBB
QjAgLyogSlNBc3luY0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FzeW5jR2Vu
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RkVCRTIyMzM5QzVE
NDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBc3luY0dl
bmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EwNTMxNjIxMzQyQjY2
MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtU3RyZWFtaW5nUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzQTA1MzE3MjEzNDJCNjYwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU2VjdGlvblBhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTA1MzE4MjEzNDJCNjcwMDIyRUMx
NCAvKiBXYXNtU2VjdGlvblBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXYXNtU2VjdGlvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE0
MCwxNyArNzE0MywxOSBAQAogCQkJCTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5
SW5saW5lcy5oICovLAogCQkJCTVCNzBDRkQ5MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uY3BwICovLAogCQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCAqLywKKwkJCQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBBQjAgLyogSlNBc3luY0dlbmVy
YXRvci5jcHAgKi8sCisJCQkJRTM5RkVCRTIyMzM5QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5l
cmF0b3IuaCAqLywKIAkJCQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4Q0EgLyogSlNB
c3luY0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2
IC8qIEpTQmlnSW50LmNwcCAqLywKIAkJCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNC
aWdJbnQuaCAqLywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0
aW9uLmNwcCAqLywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0
aW9uLmggKi8sCi0JCQkJRkU0OEJENDMyMzI0NUU4NzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5jcHAg
Ki8sCi0JCQkJRkU0OEJENDIyMzI0NUU4NzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5oICovLAogCQkJ
CTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCiAJCQkJNjU3Q0Y0
NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi8sCiAJCQkJNTNCNjAxRUIyMDM0QjhD
NTAwNkJFNjY3IC8qIEpTQ2FzdC5oICovLAorCQkJCUZFNDhCRDQzMjMyNDVFODcwMEYxMzZEMCAv
KiBKU0NDb25maWcuY3BwICovLAorCQkJCUZFNDhCRDQyMjMyNDVFODcwMEYxMzZEMCAvKiBKU0ND
b25maWcuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAq
LywKIAkJCQlCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggKi8sCiAJCQkJMEY5
NzQ5NkYxNjg3QURFMjAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCAqLywKQEAgLTkzNTMsNyAr
OTM1OCw2IEBACiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9C
My5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExv
d2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y5MTlEMEJBQzEwMEIx
RDFCNSAvKiBGVExPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMjIzMjRE
NTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzFD
MTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjM1QkUwMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTU0Myw3ICs5NTQ3LDYgQEAKIAkJCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEy
NTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTJCQkZGMjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU0OEJENDQyMzI0NUU5MzAwRjEzNkQwIC8qIEpTQ0Nv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA4RUJFMjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIElu
dGxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBCRDgwMTE0OEVBNkYyMDAx
MTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRFMDM1NDFFNTNCRDI5
MDAyMTNGNjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC05NjAxLDYgKzk2MDQsNyBAQAogCQkJCTBGMkI2NkVBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Fy
cmF5QnVmZmVyVmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUZCOEJBMUM5OURB
N0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUI3MENG
REUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTM5RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCThCQzA2NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5ODcyQzQ4MjIxQkJBRjMwMDhDNjk2OSAv
KiBKU0Jhc2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjE0LDYgKzk2MTgsNyBAQAog
CQkJCTY1N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTQ4QkQ0NDIzMjQ1RTkzMDBGMTM2RDAgLyogSlNDQ29uZmlnLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGlu
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg5MSw3ICs5ODk2LDkgQEAKIAkJCQkwRjJCREMyQzE1
MUZERTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VB
MTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDQ4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEQUEwQTFGRDFDM0QzMDA3OUM1QjIgLyogUGFyYWxs
ZWxTb3VyY2VBZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFNjU3NTIwNjY4RUFBMDBG
QjgxQUMgLyogUGFyc2VIYXNoLmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTgsNyArMTAwMDUsNiBA
QAogCQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8q
IFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkw
MEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2VhNTMwYzI1
MTM0ODVlNzQ3ZDU0MTUzNTI3Mjg3ODdjODI4NWM2Li5iOWZlZWNlZmUyN2QwNWMxMWZmNWFmNGVj
OTQxNTAwNzg1ZTdlODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MDksNiAr
ODA5LDcgQEAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAog
cnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuY3Bw
CiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNCaWdJbnQu
Y3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCA5
MGRlOTIwZDlkNmUzMDRhNmRkYmJhZTk0ODkxYmIyNzM4NDJmNzQ5Li5iMGFjNDAzODFkZmYwNTY3
N2JjZWM5NDAwYzEzMTAzOGViNDJjOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0yOSw3ICsy
OSw3IEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdlbmVyYXRvcikKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICByZXR1cm4gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpID09PSBudWxsOworICAgIHJldHVy
biBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJh
dG9yRmllbGRRdWV1ZUZpcnN0KSA9PT0gbnVsbDsKIH0KIAogQGdsb2JhbFByaXZhdGUKQEAgLTM5
LDE1ICszOSwxNSBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZShnZW5lcmF0
b3IsIGl0ZW0pCiAKICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShpdGVtLCAiYXN5
bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IikgPT09IG51bGwpOwogCi0gICAgaWYgKEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3QiKSA9PT0g
bnVsbCkgewotICAgICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3Is
ICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIpID09PSBudWxsKTsKKyAgICBpZiAoQGdldEFzeW5j
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVl
dWVGaXJzdCkgPT09IG51bGwpIHsKKyAgICAgICAgQGFzc2VydChAZ2V0QXN5bmNHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QpID09
PSBudWxsKTsKIAotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5
bmNHZW5lcmF0b3JRdWV1ZUZpcnN0IiwgaXRlbSk7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0pOworICAgICAg
ICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJh
dG9yRmllbGRRdWV1ZUZpcnN0LCBpdGVtKTsKKyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50
ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0LCBpdGVt
KTsKICAgICB9IGVsc2UgewotICAgICAgICB2YXIgbGFzdCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIpOworICAgICAgICB2YXIgbGFz
dCA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5l
cmF0b3JGaWVsZFF1ZXVlTGFzdCk7CiAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShsYXN0
LCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IiwgaXRlbSk7Ci0gICAgICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0p
OworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFz
eW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QsIGl0ZW0pOwogICAgIH0KIH0KIApAQCAtNTgsMTMg
KzU4LDEzIEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikK
IAogICAgIEBhc3NlcnQoIUBhc3luY0dlbmVyYXRvclF1ZXVlSXNFbXB0eShnZW5lcmF0b3IpLCAi
QXN5bmMgZ2VuZXRhdG9yJ3MgUXVldWUgaXMgYW4gZW1wdHkgTGlzdC4iKTsKIAotICAgIHZhciBy
ZXN1bHQgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JR
dWV1ZUZpcnN0Iik7CisgICAgdmFyIHJlc3VsdCA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlRmlyc3QpOwogCiAgICAg
dmFyIHVwZGF0ZWRGaXJzdCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShyZXN1bHQsICJhc3luY0dl
bmVyYXRvclF1ZXVlSXRlbU5leHQiKTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJh
dG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0IiwgdXBkYXRlZEZpcnN0KTsKKyAgICBAcHV0
QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmll
bGRRdWV1ZUZpcnN0LCB1cGRhdGVkRmlyc3QpOwogCiAgICAgaWYgKHVwZGF0ZWRGaXJzdCA9PT0g
bnVsbCkKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2Vu
ZXJhdG9yUXVldWVMYXN0IiwgbnVsbCk7CisgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVy
bmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCwgbnVsbCk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzQsOCArNzQsOCBAQCBmdW5jdGlvbiBpc0V4
ZWN1dGlvblN0YXRlKGdlbmVyYXRvcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIg
c3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUi
KTsKLSAgICB2YXIgcmVhc29uID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFz
eW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpOworICAgIHZhciBzdGF0ZSA9IEBnZXRBc3luY0dl
bmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7Cisg
ICAgdmFyIHJlYXNvbiA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9y
LCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pOwogICAgIHJldHVybiAoc3RhdGUg
PiAwICYmIHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpCiAgICAg
ICAgIHx8IHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZwogICAgICAgICB8
fCByZWFzb24gPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdDsKQEAgLTg2LDgg
Kzg2LDggQEAgZnVuY3Rpb24gaXNTdXNwZW5kWWllbGRTdGF0ZShnZW5lcmF0b3IpCiB7CiAgICAg
InVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgcmV0dXJuIChzdGF0ZSA+IDAgJiYgQGdl
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
biIpID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQpCisgICAgdmFyIHN0YXRl
ID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlKTsKKyAgICByZXR1cm4gKHN0YXRlID4gMCAmJiBAZ2V0QXN5bmNHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29u
KSA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbllpZWxkKQogICAgICAgICB8fCBzdGF0
ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRZaWVsZDsKIH0KIApAQCAtOTYsNyAr
OTYsNyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclJlamVjdChnZW5lcmF0b3IsIGV4Y2VwdGlv
bikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBAYXNzZXJ0KHR5cGVvZiBAZ2V0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIikgPT09
ICJudW1iZXIiLCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3luY0dlbmVyYXRvciBpbnN0YW5jZS4i
KTsKKyAgICBAYXNzZXJ0KEBpc0FzeW5jR2VuZXJhdG9yKGdlbmVyYXRvciksICJHZW5lcmF0b3Ig
aXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOwogCiAgICAgdmFyIHByb21pc2Ug
PSBAYXN5bmNHZW5lcmF0b3JRdWV1ZURlcXVldWUoZ2VuZXJhdG9yKS5wcm9taXNlOwogICAgIEBh
c3NlcnQoQGlzUHJvbWlzZShwcm9taXNlKSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgZnVuY3Rpb24g
YXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgdmFsdWUsIGRvbmUpCiB7CiAgICAgInVz
ZSBzdHJpY3QiOwogCi0gICAgQGFzc2VydCh0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSAibnVtYmVyIiwgIkdl
bmVyYXRvciBpcyBub3QgYW4gQXN5bmNHZW5lcmF0b3IgaW5zdGFuY2UuIik7CisgICAgQGFzc2Vy
dChAaXNBc3luY0dlbmVyYXRvcihnZW5lcmF0b3IpLCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3lu
Y0dlbmVyYXRvciBpbnN0YW5jZS4iKTsKIAogICAgIHZhciBwcm9taXNlID0gQGFzeW5jR2VuZXJh
dG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikucHJvbWlzZTsKICAgICBAYXNzZXJ0KEBpc1Byb21p
c2UocHJvbWlzZSkpOwpAQCAtMTI2LDExICsxMjYsMTEgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0
b3JZaWVsZChnZW5lcmF0b3IsIHZhbHVlLCByZXN1bWVNb2RlKQogCiAgICAgZnVuY3Rpb24gYXN5
bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQocmVzdWx0KQogICAgIHsKLSAgICAgICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIsIEBB
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CisgICAgICAgIEBwdXRBc3luY0dlbmVy
YXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRS
ZWFzb24sIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CiAgICAgICAgIEBhc3lu
Y0dlbmVyYXRvclJlc29sdmUoZ2VuZXJhdG9yLCByZXN1bHQsIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uIiwgQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0KTsKKyAgICBAcHV0QXN5
bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRT
dXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpOwogCiAgICAg
QGF3YWl0VmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSwgYXN5bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQp
OwogfQpAQCAtMTUwLDM0ICsxNTAsMzkgQEAgZnVuY3Rpb24gZG9Bc3luY0dlbmVyYXRvckJvZHlD
YWxsKGdlbmVyYXRvciwgcmVzdW1lVmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgInVzZSBzdHJpY3Qi
OwogCiAgICAgdmFyIHZhbHVlID0gQHVuZGVmaW5lZDsKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3Rh
dGUgPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRv
ckZpZWxkU3RhdGUpOwogCi0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdl
bmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwotICAgIEBwdXRC
eUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24i
LCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZSk7CisgICAgQHB1dEFzeW5jR2VuZXJh
dG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNH
ZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxG
aWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbiwgQEFzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpOwogCiAgICAgdHJ5IHsKLSAgICAgICAgdmFsdWUg
PSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yTmV4dCIpLkBjYWxs
KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JUaGlzIiksIGdlbmVy
YXRvciwgc3RhdGUsIHJlc3VtZVZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVjdFByaXZh
dGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgIGlmIChAZ2V0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEFzeW5jR2VuZXJh
dG9yU3RhdGVFeGVjdXRpbmcpCi0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2Vu
ZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7
CisgICAgICAgIHZhbHVlID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKEBnZXRBc3luY0dlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgZ2VuZXJhdG9yLCBzdGF0ZSwg
cmVzdW1lVmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFtZSkpOworICAgICAgICBzdGF0ZSA9IEBnZXRB
c3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0
ZSk7CisgICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcp
IHsKKyAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwor
ICAgICAgICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAg
ICAgfQogICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKTsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbiIsIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKTsK
KyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5l
cmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAg
IEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0
b3JGaWVsZFN1c3BlbmRSZWFzb24sIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKTsK
IAogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9yUmVqZWN0KGdlbmVyYXRvciwgZXJyb3Ip
OwogICAgIH0KIAotICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIikgPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b25Bd2FpdCkgeworICAgIHZhciByZWFzb24gPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZp
ZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKTsKKyAgICBp
ZiAocmVhc29uID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpIHsKICAgICAg
ICAgdmFyIG9uRnVsZmlsbGVkID0gZnVuY3Rpb24ocmVzdWx0KSB7IEBkb0FzeW5jR2VuZXJhdG9y
Qm9keUNhbGwoZ2VuZXJhdG9yLCByZXN1bHQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsg
fTsKIAogICAgICAgICBAYXdhaXRWYWx1ZShnZW5lcmF0b3IsIHZhbHVlLCBvbkZ1bGZpbGxlZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRl
KGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSBAQXN5bmNHZW5l
cmF0b3JTdXNwZW5kUmVhc29uWWllbGQpCisgICAgaWYgKHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJh
dG9yU3VzcGVuZFJlYXNvbllpZWxkKQogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9yWWll
bGQoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSk7CiAKLSAgICBpZiAoQGdldEJ5SWREaXJl
Y3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBBc3luY0dlbmVyYXRv
clN0YXRlQ29tcGxldGVkKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0
b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uTm9uZSk7CisgICAgaWYgKHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBs
ZXRlZCkgeworICAgICAgICBAYXNzZXJ0KEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVD
b21wbGV0ZWQpOworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVy
YXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uTm9uZSk7CiAgICAgICAgIHJldHVybiBAYXN5bmNHZW5lcmF0b3JSZXNvbHZl
KGdlbmVyYXRvciwgdmFsdWUsIHRydWUpOwogICAgIH0KIH0KQEAgLTE4Nyw5ICsxOTIsOSBAQCBm
dW5jdGlvbiBhc3luY0dlbmVyYXRvclJlc3VtZU5leHQoZ2VuZXJhdG9yKQogewogICAgICJ1c2Ug
c3RyaWN0IjsKIAotICAgIEBhc3NlcnQodHlwZW9mIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKSA9PT0gIm51bWJlciIsICJHZW5l
cmF0b3IgaXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOworICAgIEBhc3NlcnQo
QGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSwgIkdlbmVyYXRvciBpcyBub3QgYW4gQXN5bmNH
ZW5lcmF0b3IgaW5zdGFuY2UuIik7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFBy
aXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3RhdGUgPSBAZ2V0
QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3Rh
dGUpOwogCiAgICAgQGFzc2VydChzdGF0ZSAhPT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcsICJBc3luYyBnZW5lcmF0b3Igc2hvdWxkIG5vdCBiZSBpbiBleGVjdXRpbmcgc3RhdGUiKTsK
IApAQCAtMTk5LDI0ICsyMDQsMjQgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JSZXN1bWVOZXh0
KGdlbmVyYXRvcikKICAgICBpZiAoQGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdlbmVyYXRv
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZhciBuZXh0ID0gQGdldEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpOworICAgIHZhciBuZXh0
ID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVy
YXRvckZpZWxkUXVldWVGaXJzdCk7CiAKICAgICBpZiAobmV4dC5yZXN1bWVNb2RlICE9PSBAR2Vu
ZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCkgewogICAgICAgICBpZiAoc3RhdGUgPT09IEBBc3luY0dl
bmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQpIHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRl
Q29tcGxldGVkKTsKKyAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQpOwogICAgICAgICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQpIHsKICAgICAgICAgICAgIGlmIChuZXh0LnJlc3VtZU1vZGUgPT09IEBHZW5l
cmF0b3JSZXN1bWVNb2RlUmV0dXJuKSB7Ci0gICAgICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVB
d2FpdGluZ1JldHVybik7CisgICAgICAgICAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJu
YWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0b3JT
dGF0ZUF3YWl0aW5nUmV0dXJuKTsKICAgICAgICAgICAgICAgICBAcmVzb2x2ZVdpdGhvdXRQcm9t
aXNlKG5leHQudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZXN1bHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3Is
ICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQGFzeW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0
b3IsIHJlc3VsdCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgQHB1dEJ5
SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJh
dG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgQHB1dEFzeW5jR2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5
bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBAYXN5
bmNHZW5lcmF0b3JSZWplY3QoZ2VuZXJhdG9yLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0MCw3ICsyNDUsNyBAQCBmdW5jdGlv
biBhc3luY0dlbmVyYXRvckVucXVldWUoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSkKICAg
ICAidXNlIHN0cmljdCI7CiAKICAgICB2YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7Ci0gICAg
aWYgKCFAaXNPYmplY3QoZ2VuZXJhdG9yKSB8fCB0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRl
KGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpICE9PSAnbnVtYmVyJykg
eworICAgIGlmICghQGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSkgewogICAgICAgICBAcmVq
ZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIEBt
YWtlVHlwZUVycm9yKCd8dGhpc3wgc2hvdWxkIGJlIGFuIGFzeW5jIGdlbmVyYXRvcicpKTsKICAg
ICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDM1YzEwNDBhZDQ1NTc0NzgxNWUxMTZmYmM3ZDEy
NjViM2ZjNzQyNDIuLjQ4ODA2NTkyNjYwZGYxYWVjNDkyNWQwODk2ODZlZWE1YzVjNzFhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTEw
OCwxNSArMTA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdlbmVyYXRvckZyYW1l
KSBcCiAgICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKICAgICBtYWNybyhnZW5lcmF0b3JUaGlz
KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogICAgIG1hY3JvKHN5bmNJdGVy
YXRvcikgXAogICAgIG1hY3JvKG5leHRNZXRob2QpIFwKLSAgICBtYWNybyhhc3luY0dlbmVyYXRv
clN0YXRlKSBcCi0gICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uKSBcCi0gICAg
bWFjcm8oYXN5bmNHZW5lcmF0b3JRdWV1ZSkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVl
dWVGaXJzdCkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVMYXN0KSBcCiAgICAgbWFj
cm8oYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0KSBcCi0gICAgbWFjcm8oZ2VuZXJhdG9yUmVz
dW1lTW9kZSkgXAogICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oaW50bFN1
YnN0aXR1dGVWYWx1ZSkgXAogICAgIG1hY3JvKHRoaXNUaW1lVmFsdWUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAppbmRleCAwNmZjNTgxOTIxMmIzMWIwNTU5ZWVmZjYxMTlkNzVhYTUxMGM5NzI1
Li5kNDE2MzNjNTViNjA5Y2Q1N2UyNDNiMmIxYTRjNDQwOTIxNGM1YWRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJdGVyYXRpb25LaW5k
LmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNB
c3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC04NSwxNCArODUsMTcg
QEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShW
TSYgdm0pCiAgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6
UmV0dXJuTW9kZSkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6
OkNvbXBsZXRlZCkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6
OkV4ZWN1dGluZykpKTsKLSAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1f
dm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcp
KSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5
bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRv
clN0YXRlU3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVu
ZGVkWWllbGQpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQXdhaXRpbmdSZXR1cm4uc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6QXdhaXRpbmdSZXR1cm4pKSk7Ci0gICAgbV9Bc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb246OllpZWxkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdh
aXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCkpKTsKLSAgICBt
X0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uOjpOb25lKSkpOworICAgIG1fYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRS
ZWFzb24uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbikpKTsKKyAgICBtX2FzeW5jR2VuZXJhdG9yRmll
bGRRdWV1ZUZpcnN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlRmlyc3QpKSk7CisgICAgbV9hc3luY0dlbmVyYXRv
ckZpZWxkUXVldWVMYXN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdCkpKTsKKyAgICBtX0FzeW5jR2VuZXJh
dG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKKyAg
ICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4
ZWN1dGluZykpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRTdGFydC5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5
bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRv
clN0YXRlU3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFlpZWxk
KSkpOworICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVy
YXRvclN0YXRlOjpBd2FpdGluZ1JldHVybikpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbllpZWxkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0Fz
eW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKSkpOworICAg
IG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6QXdhaXQpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25l
LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9y
OjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiB9CiAKIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3Vw
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXgg
MjgwYjdmOTA2ZDY1ZTUwZmZiNzY3NWUxMWVhMmUyOTNiN2Q1N2VhOS4uZmFlYjIzODliOGZkNzBl
ZTVmOTQ5MzVmMzhhNzRhNjE1Njc4NjliZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC00Mywx
MiArNDMsMTQgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhnZXRCeUlkRGlyZWN0UHJp
dmF0ZSkgXAogICAgIG1hY3JvKGdldFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8o
Z2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEFzeW5jR2VuZXJhdG9y
SW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGlkV2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhp
c09iamVjdCkgXAogICAgIG1hY3JvKGlzSlNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJveHlPYmpl
Y3QpIFwKICAgICBtYWNybyhpc0Rlcml2ZWRBcnJheSkgXAogICAgIG1hY3JvKGlzR2VuZXJhdG9y
KSBcCisgICAgbWFjcm8oaXNBc3luY0dlbmVyYXRvcikgXAogICAgIG1hY3JvKGlzUHJvbWlzZSkg
XAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBcCiAgICAgbWFjcm8oaXNNYXApIFwKQEAgLTY0
LDYgKzY2LDcgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkg
XAogICAgIG1hY3JvKHB1dFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8ocHV0R2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJu
YWxGaWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwK
ICAgICBtYWNybyh0b09iamVjdCkgXApAQCAtMTEwLDYgKzExMyw5IEBAIGNsYXNzIFJlZ2lzdGVy
SUQ7CiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybikgXAogICAgIG1hY3JvKEdl
bmVyYXRvclN0YXRlQ29tcGxldGVkKSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcpIFwKKyAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikgXAorICAg
IG1hY3JvKGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KSBcCisgICAgbWFjcm8oYXN5bmNH
ZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkgXAogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9yU3RhdGVD
b21wbGV0ZWQpIFwKICAgICBtYWNybyhBc3luY0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSBcCiAg
ICAgbWFjcm8oQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAxYmE0MWYxMDZi
N2ExMTUxMjU1NzEyZjZhM2Q5MzM3NzBmMmQ3M2YxLi4xNzI5OTZjY2NkN2ZjMWM1MTA4OWFhMjJi
MzI2MmIxYWQwOGI4MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKQEAgLTEzNCwxOCArMTM0LDIyIEBACiAgICAgICAgIGlzSW50ZXJuYWxQ
cm9taXNlOiBib29sLAogICAgIH0KIAotb3AgOmNyZWF0ZV9nZW5lcmF0b3IsCitvcCA6bmV3X2dl
bmVyYXRvciwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAg
ICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIGNhY2hlZENhbGxlZTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0KICAgICB9CiAKLW9wIDpu
ZXdfZ2VuZXJhdG9yLAorb3BfZ3JvdXAgOkNyZWF0ZUludGVybmFsRmllbGRPYmplY3RPcCwKKyAg
ICBbCisgICAgICAgIDpjcmVhdGVfZ2VuZXJhdG9yLAorICAgICAgICA6Y3JlYXRlX2FzeW5jX2dl
bmVyYXRvciwKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRh
dGE6IHsKKyAgICAgICAgY2FjaGVkQ2FsbGVlOiBXcml0ZUJhcnJpZXJbSlNDZWxsXQogICAgIH0K
IAogb3AgOmdldF9hcmd1bWVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNDA3OTI0OTk2NWQ1NjE4ZTkzZjk4NjcyNDcyNGVjYzM3
MzIwMTVjNy4uMDIyZjNiZmViODY4NDQxY2NhZGRhZmQ3ZjgzNGZhOGY5ODg3M2JjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE5
Niw2ICsxOTYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNv
ZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIFVTRVMoT3BDcmVhdGVU
aGlzLCBjYWxsZWUpCiAgICAgVVNFUyhPcENyZWF0ZVByb21pc2UsIGNhbGxlZSkKICAgICBVU0VT
KE9wQ3JlYXRlR2VuZXJhdG9yLCBjYWxsZWUpCisgICAgVVNFUyhPcENyZWF0ZUFzeW5jR2VuZXJh
dG9yLCBjYWxsZWUpCiAgICAgVVNFUyhPcERlbEJ5SWQsIGJhc2UpCiAgICAgVVNFUyhPcE5ld0Z1
bmMsIHNjb3BlKQogICAgIFVTRVMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmMsIHNjb3BlKQpAQCAt
Mzg4LDYgKzM4OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayog
Y29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhPcENyZWF0
ZVRoaXMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlUHJvbWlzZSwgZHN0KQogICAgIERFRlMoT3BD
cmVhdGVHZW5lcmF0b3IsIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlQXN5bmNHZW5lcmF0b3IsIGRz
dCkKICAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXlXaXRoU3By
ZWFkLCBkc3QpCiAgICAgREVGUyhPcFNwcmVhZCwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNzkwOTQ3MGY1ZGViNjVlM2U0ZmRmMTI3
NWM3ODViMmYyYjBkOGNlLi40MjQ3NGZlMjhhZTNhNTJhZTY3YWJlMzg2Y2E1NDBmOGJlZjRlYmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
MTI3OCw2ICsxMjc4LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMoKQogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ3JlYXRlR2VuZXJhdG9yPihbJl0g
KGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRh
ZGF0YSwgIm9wX2NyZWF0ZV9nZW5lcmF0b3IiX3MpOwogICAgICAgICB9KTsKKyAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcENyZWF0ZUFzeW5jR2VuZXJhdG9yPihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7CisgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRhZGF0YSwgIm9wX2Ny
ZWF0ZV9hc3luY19nZW5lcmF0b3IiX3MpOworICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wUmVzb2x2ZVNjb3BlPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAg
ICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkuIEFueSBz
eW1ib2wgdGFibGVzIHRoYXQgdGhpcyB3aWxsIHJlZmVyIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDMyZTQwODZmNWNmYTAwZmUyNmNmODFhYzg4MjYzZTRiMDg1OGZjMjYuLmU3OTE0YWE0N2M1ZWU5
YTk4M2Q3NTlmZGQ2ZmFhYjZjY2EwYjNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MSw3ICs0
MSw3IEBACiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCi0jaW5jbHVkZSAiSlNBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Rml4ZWRBcnJheS5oIgpAQCAtNzAyLDggKzcwMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKICAgICAgICAgZW1pdFRvVGhpcygpOwogCi0gICAgICAgIG1vdmUobV9nZW5lcmF0b3JSZWdp
c3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOwotICAgICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVy
YXRvclJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CkBAIC04NzYsMTAgKzg3NSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAg
ICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhpY2FsIGVudmlyb25tZW50IGNyZWF0
aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252ZXJ0IGl0IHRvIG9wX21vdiBmcmFt
ZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0ZUdlbmVyYXRvckZyYW1lRW52aXJv
bm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBzY29wZVJlZ2lzdGVy
KCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9LCBhZGRDb25z
dGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAgfQotICAgICAgICBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAg
ICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxk
KGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6
RmllbGQ6OkZyYW1lKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkp
OworICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSksIGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tT
Y29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9u
IGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCkBAIC0yNzIzLDE4ICsyNzIwLDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEFzeW5jR2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVy
SUQqIG5leHRGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQ
YXJzZU1vZGUocGFyc2VNb2RlKCkpKTsKIAotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JOZXh0
UHJpdmF0ZU5hbWUoKSwgbmV4dEZ1bmN0aW9uLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsK
LSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAm
bV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotICAgICAgICAKLSAg
ICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKLSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0
b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0
ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVyYXRvclN1c3BlbmRS
ZWFzb25Qcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6Tm9uZSkpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAgICBlbWl0
RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0UHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKLSAgICBlbWl0
RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3RQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVtaXRQ
dXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCksIG5leHRGdW5jdGlvbik7CisgICAgZW1p
dFB1dEludGVybmFsRmllbGQobV9nZW5lcmF0b3JSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSwgJm1fdGhpc1JlZ2lzdGVyKTsKIH0K
IAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeUlkKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCkBA
IC0yODc1LDYgKzI4NjIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BDcmVhdGVBc3luY0dl
bmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QsIG5ld1RhcmdldCk7CisgICAgcmV0dXJuIGRzdDsKK30K
Kwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdl
dCkKIHsKICAgICBPcENoZWNrVGR6OjplbWl0KHRoaXMsIHRhcmdldCk7CkBAIC00NTE1LDcgKzQ1
MDgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJs
ZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogICAgIGVtaXRMYWJlbCh0YXJnZXQuZ2V0
KCkpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1
c3BlbmRSZWFzb24gcmVzdWx0KQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9p
bnQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbiByZXN1bHQpCiB7CiAgICAgUmVmPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3
TGFiZWwoKTsKICAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7
CkBAIC00NTIzLDcgKzQ1MTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQ
b2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bgogCiAgICAgaWYg
KHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkg
ewogICAgICAgICBpbnQgc3VzcGVuZFJlYXNvbiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc3Vs
dCk7Ci0gICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Qcml2YXRlTmFt
ZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29uKSkpOworICAgICAg
ICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb24pLCBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29uKSkpOwogICAgIH0KIAogICAgIC8vIFNw
bGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KQEAgLTQ1NTUsNyArNDU0OCw3IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5j
R2VuZXJhdG9yRnVuCiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQuZ2V0KCkpOwogfQogCi1SZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50
LCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiBy
ZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b24gcmVzdWx0KQogewogICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50LCByZXN1bHQpOwogCkBA
IC00NTk1LDcgKzQ1ODgsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGxJdGVyYXRvcihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgZW1pdFlp
ZWxkKHZhbHVlLCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6QXdhaXQpOworICAgIGVtaXRZaWVsZCh2YWx1ZSwgSlNBc3luY0dlbmVyYXRvcjo6
QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7CiAgICAgbW92ZSh2YWx1ZSwgZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIApAQCAtNDY2Nyw3ICs0NjYwLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGUKIAogICAgICAgICAgICAgUmVmPExhYmVsPiBicmFuY2hPblJlc3Vs
dCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZW1pdFlpZWxk
UG9pbnQodmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0
b3JTdXNwZW5kUmVhc29uOjpZaWVsZCk7CisgICAgICAgICAgICAgICAgZW1pdFlpZWxkUG9pbnQo
dmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOwogCiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJlbCA9IG5l
d0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xh
YmVsKCk7CkBAIC00Nzc4LDEwICs0NzcxLDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0
YXRlKQogewogICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGUpKTsKLSAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwotICAgIGVsc2UK
LSAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0
ZSk7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6
OkZpZWxkOjpTdGF0ZSkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6
OkZpZWxkOjpTdGF0ZSkpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lz
dGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSwg
Y29tcGxldGVkU3RhdGUpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcFZp
YUZpbmFsbHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBMYWJlbCYganVtcFRh
cmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyNjk0YjIyNmFiOTVjMmQ4NzBjY2MwZmFjNDIxZGYxMTYx
NDVjNzNlLi40MTk3YWJjMTJlNTIyNTg5MTRmZTUwMGVjMWVlN2I1YWNiMzRiZGU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgotI2luY2x1ZGUgIkpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKQEAgLTcyNSw2ICs3MjUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJ
RCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVByb21pc2UoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wgaXNJbnRlcm5hbFByb21pc2UpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFz
eW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAg
ICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9v
bCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIHZvaWQgZW1pdFREWkNo
ZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0YXJnZXQsIFJlZ2lz
dGVySUQqIHNjb3BlKTsKQEAgLTg2OSw2ICs4NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzcmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0dlbmVyYXRv
cihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdp
dGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc0FzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7
IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXN5bmNHZW5lcmF0b3JUeXBl
KTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEFy
cmF5VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwg
c3JjLCBKU1Byb21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm94eU9i
amVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2Vs
bFdpdGhUeXBlKGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05ODUsMTEgKzk4Nywx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklE
KiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQz
Ml90IGNsYXVzZUNvdW50LCBjb25zdCBWZWN0b3I8UmVmPExhYmVsPiwgOD4mLCBFeHByZXNzaW9u
Tm9kZSoqLCBMYWJlbCYgZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7
CiAKLSAgICAgICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiwgSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24pOworICAgICAgICB2b2lk
IGVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVy
YXRvclN1c3BlbmRSZWFzb24pOwogCiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlTGFi
ZWwoKTsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0
ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gPSBK
U0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWll
bGQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA9IEpTQXN5bmNH
ZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCmluZGV4IDY1Mjc2NmFiZjljNTQxNDg0MzAwOWFkZTY4Zjc5ODQzNzI0NGU2ODMuLjY1
OTM3ZjMxOWJlOTI1NDkzZGVlZTI1Nzg0ZTExMmJhN2E1OGQ5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yLmgiCkBAIC0xMDM0LDYgKzEwMzUsMjYgQEAgc3RhdGljIEpTR2VuZXJh
dG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKiBub2QKICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKIH0KIAorc3Rh
dGljIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZElu
ZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+ZW1pdHRl
cigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZp
ZWxkU3RhdGUpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7
CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKKyAgICAg
ICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOworICAgIGlmIChub2RlLT5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJh
dG9yRmllbGRGcmFtZSkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpG
cmFtZTsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQorICAgICAg
ICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb247CisgICAgaWYg
KG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNH
ZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUZpcnN0OworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVs
ZFF1ZXVlTGFzdCkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1
ZUxhc3Q7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTA2MCw2ICsxMDgxLDE5
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0
SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBpbmRleCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBu
b2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAg
UkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsK
KyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihu
b2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6bnVt
YmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJndW1lbnQoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUq
IG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMTYxLDYgKzExOTUsMjIgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKEJ5dGUKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0
b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
cHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9h
cmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9B
U1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNp
Z25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3luY0dlbmVyYXRvckludGVybmFs
RmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4
cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6bnVtYmVyT2ZJbnRl
cm5hbEZpZWxkcyk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAgICBBU1NFUlQoIW5v
ZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3Iu
ZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7Cit9
CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGFp
bENhbGxGb3J3YXJkQXJndW1lbnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xp
c3ROb2RlOwpAQCAtMTI4Myw3ICsxMzMzLDE2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNHZW5lcmF0b3IoSlNDOjpCeXRlY29kZUdlbmVyCiAK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdElzR2VuZXJhdG9y
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpKSk7CiB9Ci0gICAgCisK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNBc3lu
Y0dlbmVyYXRvcihKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEpTQzo6UmVnaXN0
ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShu
b2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdElzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pc0pTQXJyYXkoSlNDOjpCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtNDE1OCw3ICs0MjE3LDcgQEAg
UmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShh
cmcuZ2V0KCksIGFyZ3VtZW50KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFyZyA9
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVs
ZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWll
bGQoYXJnLmdldCgpLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b246OllpZWxkKTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
bW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CkBAIC00
MTc3LDcgKzQyMzYsNyBAQCBSZWdpc3RlcklEKiBBd2FpdEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogewogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpTQXN5
bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdhaXQpOwogICAgIGlm
IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIHZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5YjYzN2ZkN2RlZjUx
YTYxODUzOGFiMDQ2ODJiMDQ1ZDI2YTFlZjdhLi5lOTE5OTlkZmU1NzFiZDFiNWE3YTI0Y2IzN2Rj
ZWI1ZjRkZjY5MGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNp
bmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMjY4NiwyOCArMjY4Nyw0NyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENy
ZWF0ZUdlbmVyYXRvcjogewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAg
aWYgKEpTVmFsdWUgYmFzZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJl
RGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3Rp
bGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6OmluZm8oKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkg
PT0gZ2xvYmFsT2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFy
ZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgY2Fz
ZSBDcmVhdGVBc3luY0dlbmVyYXRvcjogeworICAgICAgICBhdXRvIGZpbmRDb25zdGFudCA9IFsm
XSAoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIC0+IGJvb2wgeworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBm
dW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3JhcGgubV92bSwgYmFzZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0g
ZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXJl
RGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVE
YXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBjbGFzc0luZm8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9i
YWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemls
eShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvck5vZGUobm9kZSwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9OworCisgICAgICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgorICAgICAgICAgICAgZm91bmQgPSBmaW5kQ29uc3RhbnQoSlNHZW5lcmF0b3I6
OmluZm8oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dl
bmVyYXRvcjoKKyAgICAgICAgICAgIGZvdW5kID0gZmluZENvbnN0YW50KEpTQXN5bmNHZW5lcmF0
b3I6OmluZm8oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNPYmpl
Y3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwpAQCAtMjcxOSw2ICsyNzM5LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoK
KyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBBU1NFUlQoISFub2RlLT5zdHJ1
Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbm9kZS0+c3RydWN0dXJl
KCkpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDdmNjllNjZkMzA0YjcyYmJiYTY2N2U5Y2U3MTZkNTBi
NjJiNmFhNy4uOTllMzZjOTllYjg1NjE1OTcxZDRiYzNmMjM1Y2U5NDU5NDVmNzhhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ5
OTAsNiArNDk5MCw1MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2dlbmVyYXRvcik7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hc3luY19nZW5lcmF0b3I6IHsKKyAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlQXN5bmNHZW5lcmF0b3I+
KCk7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fY2FsbGVlKSk7CisKKyAgICAgICAgICAgIGJvb2wgYWxyZWFkeUVtaXR0ZWQgPSBmYWxz
ZTsKKworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWND
YXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KCptX3ZtKTsKKyAgICAgICAgICAgIGlmICghZnVuY3Rp
b24pIHsKKyAgICAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKS5tX2NhY2hlZENhbGxlZS51bnZhbGlkYXRlZEdldCgpOworICAg
ICAgICAgICAgICAgIGlmIChjYWNoZWRGdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAmJiBj
YWNoZWRGdW5jdGlvbiAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKQorICAg
ICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0czxKU0Z1bmN0aW9uPigqbV92bSkpOworCisg
ICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShj
YWNoZWRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxs
LCBPcEluZm8oZnJvemVuKSwgY2FsbGVlKTsKKworICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
biA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjYWNoZWRGdW5jdGlvbik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+
cmFyZURhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCkgPT0gSlNBc3luY0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50U2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoTmV3QXN5bmNHZW5lcmF0
b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRv
IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsZWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYWxy
ZWFkeUVtaXR0ZWQpCisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdCksIGFkZFRvR3JhcGgoQ3JlYXRlQXN5bmNHZW5lcmF0b3IsIGNhbGxlZSkpOworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3T2JqZWN0PigpOwogICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IDcxZWM3ZjE2Mjg0OTVlYjJjODQwNDU5NTE3ODU3MTAyZjFk
OGU0MGEuLmQzMzc2YmQyMWNhZTg5M2ZlZWY3MTgwOGEwMGU4MWU3N2M1NzVkYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTExOCw2ICsx
MTgsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6
CiAgICAgY2FzZSBvcF9jcmVhdGVfcHJvbWlzZToKICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0
b3I6CisgICAgY2FzZSBvcF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yOgogICAgIGNhc2Ugb3BfYml0
bm90OgogICAgIGNhc2Ugb3BfYml0YW5kOgogICAgIGNhc2Ugb3BfYml0b3I6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDlhOGFkMDdiMzFhODhiZWE2Zjli
NGQ3YTlhOTJlMWRkYmY4ZWQ1NDcuLmM3YmEwMzFlYjUxNWFkNjRmOWMzNzQwZTNkZjQ3OWExM2M4
NTdmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02
NjksNiArNjY5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgor
ICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAg
IGNhc2UgU3RyaW5nVmFsdWVPZjoKICAgICBjYXNlIE9iamVjdEtleXM6CkBAIC0xNTY4LDYgKzE1
NjksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
IGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0Fz
eW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgog
ICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBkMmY3YmE0NzhkOGVjODM0Y2QyNTA4
ZDUzYmQ5ZmExNGQyODAwOTBlLi5lZjY4ZmQ1NGY0ZTRkN2FhZDU2ODU4MTBjMzM0ODQxMmUwYTA5
OGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTksNiArNTksNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1By
b21pc2U6CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRv
cjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5l
d1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZjNmNWNiNjBkODhhYzVjNjQ1MmRkZjE1YmU0
YzQ1ZGZlMTA4ZDlhNy4uNTljY2M4MTA3NWZhMDMwMmIyMjYwZmE0YmUxM2I1MDRkNzM5OTNjNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTc3OCwyNiArNzc4LDQxIEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1Bo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsKLSAgICAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNl
ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGdW5j
dGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblN0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFs
T2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld0dl
bmVyYXRvcihtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlR2Vu
ZXJhdG9yOgorICAgICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjogeworICAgICAg
ICAgICAgICAgIGF1dG8gZm9sZENvbnN0YW50ID0gWyZdIChOb2RlVHlwZSBuZXdPcCwgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3Jh
cGgubV92bSwgYmFzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRnVuY3Rp
b25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gY2xhc3NJbmZvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9
PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlk
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZy
ZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb05ld0ludGVybmFsRmllbGRPYmplY3QobmV3T3AsIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgICAg
ICAgICAgICAgICAgICBmb2xkQ29uc3RhbnQoTmV3R2VuZXJhdG9yLCBKU0dlbmVyYXRvcjo6aW5m
bygpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBD
cmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgICAgICAgICAgICAgZm9sZENvbnN0YW50KE5l
d0FzeW5jR2VuZXJhdG9yLCBKU0FzeW5jR2VuZXJhdG9yOjppbmZvKCkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggYzk3MzNk
MDA5NmQ2MmVmMmQ1ZGVjMTc4M2VjNzY5YmVmMjAyNzU2Ny4uYzI2MTBiNmM3OGFlMzA3ZmI3M2Y2
N2I3MDRjY2E3NWZmNDQyOTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcApAQCAtMzM0LDYgKzMzNCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAg
IGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0zNDMsNiArMzQ0LDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3
UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJh
dG9yOgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAg
ICAgY2FzZSBTcHJlYWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCBkMDY0MzIyNWFjYmZiNDRkNmYwMWYxZjQ3ZmYxYWM1OTc4OTNlNWU1Li5iZjM4
NjY3YWFiN2Q5NGQ2MDJjZjgyZTI4MmU2Y2RkYTFhMzA1ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2NDgsNiArMTY0OCw3IEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6
CisgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgR2V0QnV0
dGVyZmx5OiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQwNiw2ICsyNDA3LDcgQEAgY2xhc3MgRml4dXBQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNl
IE5ld1Byb21pc2U6CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICBjYXNlIE5l
d0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgY2FzZSBE
ZWxldGVCeUlkOgogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAppbmRleCAyZDU1MjRhNmJjOThiMDI0ODNmY2FhZWZmNmJmOTUwNWNhZDU1YTVh
Li40MGRkZGE4MTE1Njg5ZjcwZmM0N2Q5MjViNjE4YWVhNDYwMWJkZTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtNzY3LDEwICs3NjcsMTAgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICBtX29wSW5mbzIgPSBpbnRlcm5hbDsKICAgICB9CiAKLSAgICB2b2lkIGNvbnZlcnRU
b05ld0dlbmVyYXRvcihSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICB2b2lkIGNv
bnZlcnRUb05ld0ludGVybmFsRmllbGRPYmplY3QoTm9kZVR5cGUgbmV3T3AsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRl
R2VuZXJhdG9yKTsKLSAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3R2VuZXJhdG9yKTsK
KyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRlQXN5bmNHZW5lcmF0b3IgfHwgbV9vcCA9PSBD
cmVhdGVHZW5lcmF0b3IpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhuZXdPcCk7CiAg
ICAgICAgIGNoaWxkcmVuLnJlc2V0KCk7CiAgICAgICAgIG1fb3BJbmZvID0gc3RydWN0dXJlOwog
ICAgICAgICBtX29wSW5mbzIgPSBPcEluZm9XcmFwcGVyKCk7CkBAIC0xOTE5LDYgKzE5MTksNyBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5l
d1Byb21pc2U6CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICBjYXNlIE5ld0Fz
eW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCmluZGV4IDFlYmRmZDEzYTk1YjU1NDI0YmM2MWMzM2M5NjRiNWQ3NTJlNGE0
MzIuLjU2ZGE2NzI0NmRkNzM4Yzg5YmEzYWMxZmFjZDBjYzcyNmUyNzU0NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRK
UykgLyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5n
IGl0IGFueXdheS4gKi8gXAogICAgIG1hY3JvKENyZWF0ZVByb21pc2UsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDcmVhdGVHZW5lcmF0b3IsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDcmVhdGVBc3luY0dlbmVyYXRv
ciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldENhbGxl
ZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0Q2FsbGVlLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJ
bnQzMikgXApAQCAtMzQzLDYgKzM0NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhOZXdPYmplY3QsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1By
b21pc2UsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvciwgTm9kZVJlc3Vs
dEpTKSBcCisgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0b3IsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKE5ld0FycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1h
Y3JvKE5ld0FycmF5V2l0aFNwcmVhZCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhOZXdBcnJheVdpdGhTaXplLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCBjMzE1YzI2NTI3Yzc2MmIxM2MwZTZlMzNjMzQ5YzJiY2I2NDQ0OWFiLi5mYTk0NTlkYjY5MGU1
NThiYzJiYzk5Y2VhNjg0YzM4MzA3NzFlN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQwOCw2ICs0MDgsMTYgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBjb25zdHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTR2VuZXJhdG9yOjpjcmVh
dGUodm0sIHN0cnVjdHVyZSkpOwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlQXN5bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0
b3IsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBu
dWxscHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5hc3luY0dlbmVyYXRvclN0cnVjdHVy
ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDc0NGE1MGRi
ZmVmODI3NWUyOWFmNzI5NjljNjg2NGEzNjYyYzU3MDIuLmU5ZWZlMDhlMjE1NzRhZWJlNjU2NTc5
ZDQ0M2M5NDc4YjAxMjdhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCkBAIC01MSw2ICs1MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVUaGlzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWluCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZShFeGVjU3RhdGUqLCBKU09iamVj
dCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZShFeGVjU3RhdGUqLCBK
U09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBK
U09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggYzNkOTIxY2Q3MWE1ODM2NDc5MGExY2NlYTk5NDQ4Y2VmMjRmN2Y0
Ny4uYjhjYjI4Y2Q0NmFhMDMzYmJmOWUzOWU5MTM4MWZlYWVlNmM2ODM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKQEAgLTEwMTgsNiArMTAxOCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRv
cjoKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNH
ZW5lcmF0b3I6CisgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCA3ZDhlZWU4NGRmYTc3Y2M0N2ZlYjE5NTBhZWUxZDYzYmRhNzg1YzE2Li45M2IxNDgyMWZk
MjAxNTE4YTU0MDBlOTU0NGQ2Y2I5MGRjMWVkMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTgwLDYgKzE4MCw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlz
ZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJh
dG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBj
YXNlIEdldENhbGxlZToKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5l
d0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJy
YXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDUxYmEzNDgyNTE0ZWFjNGFlNzc4ZGYyNjM0NjQ3MmM3ZDljNzIyNzQuLjhhZjdkODU5ZjJh
MjYzY2Y0ODg3Y2QxMTFkNmUzZDdmMzRkZTUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMjc0Myw3ICsxMjc0Myw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUqIG5vZGUpCisKK3RlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4KK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24p
CiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCkBAIC0xMjc2OSwyNSArMTI3NzEsMzMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcihOb2RlKiBub2RlKQog
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgcmFyZURhdGFHUFIpKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rp
b25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIp
KTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlNHZW5lcmF0b3I6OmluZm8oKSksIHNj
cmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlNDbGFzczo6aW5mbygp
KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKEND
YWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOwogICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2Jq
ZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRy
KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwotICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBzdHJ1Y3R1
cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNp
emVvZihKU0dlbmVyYXRvcikpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVsbCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pKSkpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVl
KGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0
ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVk
VmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCkpKSk7Ci0gICAgbV9qaXQuc3Rv
cmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcykpKSk7Ci0gICAg
bV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVy
bmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUp
KSkpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0NsYXNzPihyZXN1
bHRHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIs
IHNsb3dDYXNlcywgc2l6ZW9mKEpTQ2xhc3MpKTsKKyAgICBhdXRvIGluaXRpYWxWYWx1ZXMgPSBK
U0NsYXNzOjppbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgSlNDbGFzczo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAgICAg
bV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoaW5pdGlhbFZhbHVlc1tpbmRleF0sIENDYWxsSGVscGVy
czo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0
T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2ppdC52
bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkpKTsK
KyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb24sIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVHZW5l
cmF0b3IoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVj
dDxKU0dlbmVyYXRvcj4obm9kZSwgb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKTsKK30KKwordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKE5vZGUqIG5vZGUp
Cit7CisgICAgY29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVyYXRv
cj4obm9kZSwgb3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOworfQorCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3T2JqZWN0KE5vZGUqIG5vZGUpCiB7CiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTEyODQ0LDcgKzEyODU0LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1Byb21pc2UoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0
b3IoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJh
dGlvbj4KK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24pCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CkBAIC0xMjg1OCwx
OSArMTI4NjksMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihO
b2RlKiBub2RlKQogCiAgICAgRnJvemVuVmFsdWUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRy
dXN0ZWRJbW1QdHIobnVsbHB0cik7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPEpTR2VuZXJhdG9yPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0
dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2Vu
ZXJhdG9yKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdWxsKCksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zm
c2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6OlBvbHlQcm90bykpKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdElt
cGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVy
YXRvcjo6RmllbGQ6OlN0YXRlKSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1Vu
ZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRW
YWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkpKTsKLSAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTQ2xhc3M+KHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQ
Uiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNDbGFzcykpOworICAgIGF1dG8gaW5pdGlhbFZhbHVlcyA9
IEpTQ2xhc3M6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBKU0NsYXNzOjpudW1iZXJPZkludGVybmFsRmllbGRzOyArK2luZGV4KQorICAgICAg
ICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShpbml0aWFsVmFsdWVzW2luZGV4XSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZz
ZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0
LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIGNvbXBp
bGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTR2VuZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdH
ZW5lcmF0b3IpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXN5bmNHZW5l
cmF0b3IoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxK
U0FzeW5jR2VuZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdBc3luY0dlbmVyYXRvcik7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1ByaW1pdGl2ZShOb2RlKiBub2RlKQogewog
ICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggM2VlN2FjZWVkNjdl
YmQyMWQ5ZTE2ZTZiYmQzNzAyODhhZTIxNTgyYS4uZTA5NDA2Y2ZiZWJlOTcxZWYzOGYwODgwNTMz
ZTZlM2QzOWQ5YmEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtMTQ3NSw5ICsxNDc1LDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVh
dGVQcm9taXNlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSop
OworICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1Byb21pc2UoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlTmV3QXN5bmNHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvUHJpbWl0aXZl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWUoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWlsKE5vZGUqKTsKQEAgLTE0ODcs
NiArMTQ4OSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHJv
ZmlsZVR5cGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KE5vZGUq
KTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4K
KyAgICB2b2lkIGNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqLCBPcGVyYXRp
b24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4K
KyAgICB2b2lkIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqLCBPcGVyYXRpb24p
OworCiAgICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhH
UFJSZWcpOwogICAgIHZvaWQgYmxlc3NCb29sZWFuKEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4NDMw
NTcwOGVmMmIyNzczZGIyZTUyYWY2M2UwMjMzMzgxYWE5ZGU2Li4wMWI2ZjVhZjY0NzE5ODZkOWQx
OWRhNzU0NjdhMTU5ZDA1NTY4YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMxNjIsNiArMzE2MiwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGls
ZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBjb21waWxlTmV3T2JqZWN0KG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTMxNzcsNiArMzE4MiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgTmV3
QXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAg
ICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGJkOWMzYmJm
ODM0YTdkY2QzMDIwZjRhMjU5ZTZlZmU4MjYzZWZlODcuLjE1NjBjNjg4ZGFiYTQxMmZkZjZmMTdl
OGRkZjYyNzdhZTI2YTcwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzQ4OCw2ICszNDg4LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVy
YXRvcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBDcmVhdGVBc3lu
Y0dlbmVyYXRvcjogeworICAgICAgICBjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3Iobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6IHsK
ICAgICAgICAgY29tcGlsZU5ld09iamVjdChub2RlKTsKQEAgLTM1MDQsNiArMzUwOSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5l
d0FzeW5jR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IEdldENhbGxlZTogewogICAgICAgICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNTQ5MTdkYjM0OTFlMmQ3YTkyOWI1NzFj
YzczNjEyYmFkMTc3NzU4NC4uNzU4NjdiZjc3NWY5NTJkZTA5ZTU1ZTI5MzM0NTJhOTZmYjQyNDk2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMyMyw2ICszMjMsNyBAQCBjbGFzcyBTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNl
IE5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICAgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yOgorICAgICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAg
ICAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNp
emU6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGVhZDI1OWEwMTQ3NTJlMmMzNjky
NmQ4ZDE2YzM1OGFmMTY0ZjBiMzkuLmZhNjA5OTEwMDU0YzdiMmE5YjJmYzMzNGRlODMxOWIxODBl
OWM0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTc2LDYgKzc2LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAg
IGNhc2UgTmV3R2VuZXJhdG9yOgorICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgY2Fz
ZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJh
eToKQEAgLTM4Miw2ICszODMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNl
OgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0
b3I6CiAgICAgY2FzZSBEYXRhVmlld0dldEludDoKICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6
CiAgICAgY2FzZSBEYXRhVmlld1NldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBhMTQwYjBiNDQ5MjcyZjZjMGQzNDI5NzVjNjdmMWUwYWI1
ZjE5YjYxLi44ZDcyMzVkMjg1NjNhZWJjYWI4MmYzNjhmYmUxZGMzZjRlMTY1MzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03Niw2ICs3
Niw3IEBACiAjaW5jbHVkZSAiSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJ
VFN1YkdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKQEAg
LTEwNTIsNiArMTA1Myw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yOgogICAgICAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcigpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CisgICAgICAgICAgICBj
b21waWxlTmV3QXN5bmNHZW5lcmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdTdHJpbmdPYmplY3Qo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3Myw2ICsxMDc3LDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgICAgICBjb21w
aWxlQ3JlYXRlR2VuZXJhdG9yKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
cmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVBc3luY0dlbmVy
YXRvcigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3ByZWFkOgogICAgICAg
ICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01OTE5LDMxICs1
OTI2LDQwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4KKyAgICB2b2lkIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0KE9wZXJhdGlvbiBvcGVyYXRpb24pCiAgICAgewogICAgICAgICBMQmFzaWNCbG9jayBz
bG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd0Nhc2UpOwogCi0gICAgICAgIExWYWx1
ZSBnZW5lcmF0b3IgPSBhbGxvY2F0ZU9iamVjdDxKU0dlbmVyYXRvcj4obV9ub2RlLT5zdHJ1Y3R1
cmUoKSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICBtX291dC5zdG9yZTY0
KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSksIGdlbmVyYXRvciwg
bV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90byldKTsKLSAgICAgICAg
bV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkp
LCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZp
ZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsK
LSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6Ok5leHQpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNH
ZW5lcmF0b3I6OkZpZWxkOjpUaGlzKV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hl
YXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIExWYWx1ZSBv
YmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0NsYXNzPihtX25vZGUtPnN0cnVjdHVyZSgpLCBtX291
dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIGF1dG8gaW5pdGlhbFZhbHVlcyA9IEpT
Q2xhc3M6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgSlNDbGFzczo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAg
ICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoaW5p
dGlhbFZhbHVlc1tpbmRleF0pKSwgb2JqZWN0LCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxfaW50ZXJuYWxGaWVsZHNbaW5kZXhdKTsKICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0g
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2VuZXJhdG9y
KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihvYmpl
Y3QpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRl
cihtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX25vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9p
bnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbiksIG1fY2FsbEZyYW1lLCBmcm96
ZW5Qb2ludGVyKG1fZ3JhcGguZnJlZXplU3Ryb25nKG1fbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkp
KSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEpTVmFsdWUobV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAK
KyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgY29tcGlsZU5l
d0ludGVybmFsRmllbGRPYmplY3Q8SlNHZW5lcmF0b3I+KG9wZXJhdGlvbk5ld0dlbmVyYXRvcik7
CisgICAgfQorCisgICAgdm9pZCBjb21waWxlTmV3QXN5bmNHZW5lcmF0b3IoKQorICAgIHsKKyAg
ICAgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVyYXRvcj4ob3Bl
cmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU5ld1N0
cmluZ09iamVjdCgpCiAgICAgewogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fbm9kZS0+c3RydWN0dXJlKCk7CkBAIC02MzYwLDcgKzYzNzYsOCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9p
ZCBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNz
LCB0eXBlbmFtZSBPcGVyYXRpb24+CisgICAgdm9pZCBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVs
ZE9iamVjdChPcGVyYXRpb24gb3BlcmF0aW9uKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKIApAQCAtNjM4NSwyNCArNjQwMiwyMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQoc3RydWN0dXJlKSwgcmFyZWx5
KHNsb3dDYXNlKSwgdXN1YWxseShoYXNTdHJ1Y3R1cmUpKTsKIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhoYXNTdHJ1Y3R1cmUsIGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSk7Ci0gICAgICAgIG1fb3V0
LmJyYW5jaChtX291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1
Y3R1cmVfY2xhc3NJbmZvKSwgbV9vdXQuY29uc3RJbnRQdHIoSlNHZW5lcmF0b3I6OmluZm8oKSkp
LCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1f
aGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksIG1fb3V0LmNvbnN0SW50UHRyKEpTQ2xhc3M6Omlu
Zm8oKSkpLCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2FzZSkp
OwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSwgZmFzdEFs
bG9jYXRpb25DYXNlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0Lmxv
YWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3QpLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpKSwgdXN1YWxseShmYXN0QWxsb2NhdGlvbkNhc2UpLCByYXJlbHko
c2xvd0Nhc2UpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhmYXN0QWxsb2NhdGlvbkNhc2Us
IHNsb3dDYXNlKTsKLSAgICAgICAgTFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0PEpT
R2VuZXJhdG9yPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAg
ICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5h
bEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJv
dG8pXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRv
clN0YXRlOjpJbml0KSkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6U3RhdGUpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBt
X2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcyldKTsKLSAgICAgICAgbV9vdXQu
c3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSks
IGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmll
bGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKV0pOwor
ICAgICAgICBMVmFsdWUgb2JqZWN0ID0gYWxsb2NhdGVPYmplY3Q8SlNDbGFzcz4oc3RydWN0dXJl
LCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIGF1dG8gaW5pdGlhbFZhbHVl
cyA9IEpTQ2xhc3M6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgSlNDbGFzczo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkK
KyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNv
ZGUoaW5pdGlhbFZhbHVlc1tpbmRleF0pKSwgb2JqZWN0LCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbaW5kZXhdKTsKICAgICAgICAgbXV0YXRvckZlbmNl
KCk7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2Vu
ZXJhdG9yKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hv
cihvYmplY3QpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSkpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
biksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCkpKTsKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNjQxMSw2ICs2NDI2LDE2IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKKyAgICB2
b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgY29tcGlsZUNyZWF0
ZUludGVybmFsRmllbGRPYmplY3Q8SlNHZW5lcmF0b3I+KG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRv
cik7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IoKQorICAg
IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVy
YXRvcj4ob3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOworICAgIH0KKwogICAgIHZvaWQg
Y29tcGlsZVNwcmVhZCgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS0+b3Ao
KSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCBiYmZjZmUzMGZhMzYwZmRmNTNkODM3YTdiOTdhNTQyMzY3ZTI5NWFmLi5lZmFkNTVjMWU0
MjAyM2MwYTBhNjNiMzE1ODNlOGFhZmJmZDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0zMTMsNiArMzEzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAgREVGSU5F
X1NMT1dfT1AobmV3X3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9nZW5l
cmF0b3IpCisgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9hc3luY19nZW5lcmF0b3IpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKG5ld19nZW5lcmF0b3IpCiAgICAgICAgIERFRklORV9TTE9X
X09QKHBvdykKIApAQCAtNTgzLDYgKzU4NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV90aGlzKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX2dlbmVyYXRvcikKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX2FzeW5jX2dlbmVyYXRvcikKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AodG9fdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1df
T1AodG9fcHJpbWl0aXZlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19udW1i
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAz
YzNlMzYyZTU3NTIzOTdjOTdmMTZjZDM5ZjEwMzc0MTA2NzFiY2Y1Li42NTZlN2RkODZhYjIzYzk2
OGZlOWI3ODFlZGFhYzRhNWE1ZmJiZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTE0MDIsNiArMTQwMiwxNCBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cgogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwog
fQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisg
ICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKK30KKwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogcmVnZXhwUHRyKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggMWI3NDliMjMwZjgwMmQzZmM0MmZjZmExNjA0NmJhODlmMzBjOGM1Yi4uZDI1MzIzMTRh
ZjczZDkyNTgwODQxMjBmNmE1ZTQ5NDE3ZmVjZWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTQyMiw2ICs0MjIsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdQcm9taXNlKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVS
TkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvcihFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVS
TkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUq
LCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBVbnVzZWRQdHIgSklUX09QRVJBVElPTiBvcGVyYXRp
b25IYW5kbGVUcmFwcyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3coRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCAwZmVhMDk2MDFkMjcxYjZlZjIxYzVlOWI0YjBlNDJjNGM1NmI0MGQ0Li4y
ZDlhMTcyNDYyYWNlOWZlM2E2MWE5ZjBjZTBjYzI2YjQ5NmZlNDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDk2
LDYgKzE0OTYsNyBAQCBzbG93UGF0aE9wKGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogc2xvd1Bh
dGhPcChjcmVhdGVfdGhpcykKIHNsb3dQYXRoT3AoY3JlYXRlX3Byb21pc2UpCiBzbG93UGF0aE9w
KGNyZWF0ZV9nZW5lcmF0b3IpCitzbG93UGF0aE9wKGNyZWF0ZV9hc3luY19nZW5lcmF0b3IpCiBz
bG93UGF0aE9wKGRlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZGVmaW5lX2Rh
dGFfcHJvcGVydHkpCiBzbG93UGF0aE9wKGVudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4
IDExMjNkMTc5ZjYzOTA2MjMxNWU1NDI0MDRhMWU1MjViNDg3ZTZmNWYuLjUyNjFmMzIzMDBiYzFj
NmJkNmQzOTliN2ExZWVlNDNhM2QxZGNhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzMxLDYgKzMzMSwyOCBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVyYXRvcikKICAgICBSRVRVUk4ocmVzdWx0
KTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3Ip
Cit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlQXN5
bmNHZW5lcmF0b3I+KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3JBc09iamVj
dCA9IGFzT2JqZWN0KEdFVChieXRlY29kZS5tX2NhbGxlZSkuanNWYWx1ZSgpKTsKKworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgbnVsbHB0ciwgY29uc3RydWN0b3JBc09iamVjdCwgZ2xvYmFsT2JqZWN0LT5h
c3luY0dlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBK
U0FzeW5jR2VuZXJhdG9yKiByZXN1bHQgPSBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0
cnVjdHVyZSk7CisKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8
SlNGdW5jdGlvbio+KHZtLCBjb25zdHJ1Y3RvckFzT2JqZWN0KTsKKyAgICBpZiAoY29uc3RydWN0
b3IgJiYgY29uc3RydWN0b3ItPmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKKyAgICAgICAg
V3JpdGVCYXJyaWVyPEpTQ2VsbD4mIGNhY2hlZENhbGxlZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4
ZWMpLm1fY2FjaGVkQ2FsbGVlOworICAgICAgICBpZiAoIWNhY2hlZENhbGxlZSkKKyAgICAgICAg
ICAgIGNhY2hlZENhbGxlZS5zZXQodm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBjb25zdHJ1Y3Rvcik7
CisgICAgICAgIGVsc2UgaWYgKGNhY2hlZENhbGxlZS51bnZhbGlkYXRlZEdldCgpICE9IEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpICYmIGNhY2hlZENhbGxlZS5nZXQoKSAhPSBj
b25zdHJ1Y3RvcikKKyAgICAgICAgICAgIGNhY2hlZENhbGxlZS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKTsKKyAgICB9CisgICAgUkVU
VVJOKHJlc3VsdCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCmluZGV4IDdmOTBiMTQwYjg5NzkwZmUxNGM0MzA3ZjFhMjBmNzRmZDlk
M2ZiYjEuLmQ1ZDZmN2UyNDAwZGI3YzkwZWQxZjM2OWViZjgzMjc4MjZkOTRhMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0zODUs
NiArMzg1LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc192YXJfc2NvcGUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lz
dGluZ19mdW5jX2RlY2xfaW5fZXZhbCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9wcm9taXNlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRl
X2dlbmVyYXRvcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3lu
Y19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVz
dCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE3Y2NjNmMzNTg1YmI4YWM3YzM4ZTgzNTBmMDljNWM3YzUyZDUwOWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5j
R2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNHZW5lcmF0b3I6OnNf
aW5mbyA9IHsgIkFzeW5jR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FzeW5jR2VuZXJhdG9yKSB9OworCitKU0FzeW5jR2Vu
ZXJhdG9yKiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBKU0FzeW5jR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0FzeW5jR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNBc3luY0dlbmVyYXRv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBnZW5lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTQXN5bmNHZW5lcmF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQXN5bmNHZW5lcmF0b3JUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTQXN5bmNHZW5lcmF0b3I6OkpTQXN5bmNHZW5lcmF0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBKU0FzeW5jR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGF1dG8gdmFsdWVzID0gaW5p
dGlhbFZhbHVlcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bWJl
ck9mSW50ZXJuYWxGaWVsZHM7ICsraW5kZXgpCisgICAgICAgIGludGVybmFsRmllbGQoaW5kZXgp
LnNldCh2bSwgdGhpcywgdmFsdWVzW2luZGV4XSk7Cit9CisKK3ZvaWQgSlNBc3luY0dlbmVyYXRv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBc3luY0dlbmVyYXRvcio+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5l
cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NzE3MTExNWM5ZGUwODI1OWZmOWE0ZGQ3Y2Q4YzJiMjMxYWRl
Y2JmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
c3luY0dlbmVyYXRvci5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNBc3luY0dlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDg+IHsKK3B1YmxpYzoK
KyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw4PjsKKworICAgIC8v
IEpTQXN5bmNHZW5lcmF0b3IgaGFzIG9uZSBpbmxpbmUgc3RvcmFnZSBzbG90LCB3aGljaCBpcyBw
b2ludGluZyBpbnRlcm5hbEZpZWxkKDApLgorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNp
emUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5lQ2FwYWNpdHkgPT0gMFUpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEpTQXN5bmNHZW5lcmF0b3IpOworICAgIH0KKworICAgIGVudW0gY2xhc3Mg
QXN5bmNHZW5lcmF0b3JTdGF0ZSA6IGludDMyX3QgeworICAgICAgICBDb21wbGV0ZWQgPSAtMSwK
KyAgICAgICAgRXhlY3V0aW5nID0gLTIsCisgICAgICAgIFN1c3BlbmRlZFN0YXJ0ID0gLTMsCisg
ICAgICAgIFN1c3BlbmRlZFlpZWxkID0gLTQsCisgICAgICAgIEF3YWl0aW5nUmV0dXJuID0gLTUs
CisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2Vu
ZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykgPT0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKTsK
KworICAgIGVudW0gY2xhc3MgQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIDogaW50MzJfdCB7
CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBZaWVsZCA9IC0xLAorICAgICAgICBBd2FpdCA9
IC0yCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50MzJfdCB7CisgICAgICAg
IC8vIEZJWE1FOiBKU0FzeW5jR2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IFBvbHlQcm90bywgc2lu
Y2UgZ2VuZXJhdG9yIHRlbmRzIHRvIGJlIGNyZWF0ZWQgd2l0aCBwb2x5IHByb3RvIG1vZGUuCisg
ICAgICAgIC8vIFdlIHJlc2VydmUgdGhlIGZpcnN0IGludGVybmFsIGZpZWxkIGZvciBQb2x5UHJv
dG8gcHJvcGVydHkuIFRoaXMgb2Zmc2V0IGlzIGlkZW50aWNhbCB0byBKU0ZpbmFsT2JqZWN0J3Mg
Zmlyc3QgaW5saW5lIHN0b3JhZ2Ugc2xvdCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIFBvbHlQcm90
by4KKyAgICAgICAgUG9seVByb3RvID0gMCwKKyAgICAgICAgU3RhdGUsCisgICAgICAgIE5leHQs
CisgICAgICAgIFRoaXMsCisgICAgICAgIEZyYW1lLAorICAgICAgICBTdXNwZW5kUmVhc29uLAor
ICAgICAgICBRdWV1ZUZpcnN0LAorICAgICAgICBRdWV1ZUxhc3QsCisgICAgfTsKKyAgICBzdGF0
aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gOCk7CisgICAgc3RhdGljIHN0ZDo6
YXJyYXk8SlNWYWx1ZSwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz4gaW5pdGlhbFZhbHVlcygpCisg
ICAgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgICAg
ICBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihBc3luY0dlbmVyYXRvclN0YXRlOjpTdXNw
ZW5kZWRTdGFydCkpLAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpz
VW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAgICAgICAganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpO
b25lKSksCisgICAgICAgICAgICBqc051bGwoKSwKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAg
ICAgICB9OworICAgIH0KKworICAgIHN0YXRpYyBKU0FzeW5jR2VuZXJhdG9yKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
KworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
KworcHJvdGVjdGVkOgorICAgIEpTQXN5bmNHZW5lcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uLmgKaW5kZXggODZiYTM3MWIwZDExYzYwZDc4YTIxODkyMjIwYzZkMmIzZDI5YTkw
Zi4uMGViZjA3NmMxOTI0YmM5YzE0NGRjMmRjM2FhMDk3NzRjNzViODEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0
aW9uLmgKQEAgLTU2LDE5ICs1Niw2IEBAIGNsYXNzIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiBm
aW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIEFzeW5j
R2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKLSAgICAgICAgQ29tcGxldGVkID0gLTEsCi0gICAg
ICAgIEV4ZWN1dGluZyA9IC0yLAotICAgICAgICBTdXNwZW5kZWRTdGFydCA9IC0zLAotICAgICAg
ICBTdXNwZW5kZWRZaWVsZCA9IC00LAotICAgICAgICBBd2FpdGluZ1JldHVybiA9IC01Ci0gICAg
fTsKLSAgICAKLSAgICBlbnVtIGNsYXNzIEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA6IGlu
dDMyX3QgewotICAgICAgICBOb25lID0gMCwKLSAgICAgICAgWWllbGQgPSAtMSwKLSAgICAgICAg
QXdhaXQgPSAtMgotICAgIH07CiBwcml2YXRlOgogICAgIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCmluZGV4IDc1OGI3
MDdlNDViOGVhYjMyOTY2ZWI0YzhhNWQ1MDdhMGE4OTc5YWMuLjUxNDJkN2Y4N2JlZjBiY2IzZWU5
YjU2YjUzZDVlOTY2ODFjYzNmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyYXRvci5jcHAKQEAgLTUzLDExICs1Myw5IEBAIEpTR2VuZXJhdG9yOjpKU0dlbmVy
YXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogdm9pZCBKU0dlbmVyYXRvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6UG9seVByb3RvKSku
c2V0KHZtLCB0aGlzLCBqc051bGwoKSk7Ci0gICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oRmllbGQ6OlN0YXRlKSkuc2V0KHZtLCB0aGlzLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKTsKLSAgICBpbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6TmV4dCkpLnNldCh2bSwgdGhpcywganNVbmRlZmlu
ZWQoKSk7Ci0gICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlRo
aXMpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVkKCkpOwotICAgIGludGVybmFsRmllbGQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpGcmFtZSkpLnNldCh2bSwgdGhpcywganNVbmRlZmlu
ZWQoKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkK
KyAgICAgICAgaW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNbaW5kZXhd
KTsKIH0KIAogdm9pZCBKU0dlbmVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yLmgKaW5kZXggN2I0NGU3NzZhZDAwYTk0MDU2NWI2ZDA3N2ZkZDY3ZDMxZDViZDIyYy4u
ZjIzZjNjNTNmYmRiYzA4NDBmNDg4ZjJhZDg0ODZhODg5MDYwZWUzMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oCkBAIC03Miw2ICs3MiwxNiBAQCBjbGFz
cyBKU0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDU+
IHsKICAgICAgICAgRnJhbWUsCiAgICAgfTsKICAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50
ZXJuYWxGaWVsZHMgPT0gNSk7CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNWYWx1ZSwgbnVtYmVy
T2ZJbnRlcm5hbEZpZWxkcz4gaW5pdGlhbFZhbHVlcygpCisgICAgeworICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgICAgICBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLAorICAgICAgICAgICAganNVbmRlZmlu
ZWQoKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVmaW5l
ZCgpLAorICAgICAgICB9OworICAgIH0KIAogICAgIHN0YXRpYyBKU0dlbmVyYXRvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwZDU5ODk0ZGY2YjZlZWQzYWUx
ZjM4MzRkMmQ5Yjk3MmNmZGM0YzVlLi5hMjBiMTYzODRmZDQ5Yzk3NDlmOTc2MjQ0NzU3ZThjYzdj
Y2E5ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC04MzMsNiArODMzLDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAog
ICAgIG1fYXN5bmNHZW5lcmF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9hc3luY0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBtX2FzeW5j
R2VuZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBc3luY0dlbmVyYXRvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX2Z1
bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTE3NjksNiArMTc3MCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5j
RnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5
bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9nZW5lcmF0b3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0
b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEdyb3Vwc1N0cnVj
dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCAxZDJiYzJkYTIxNDE2Y2JlZTVmOTEwODAyZjdmNDNjOGJiMDBmMjFjLi5iZTFiZDI1
Mjc2OTYwYjQwYTM4MDI2YzJkMGI5ZDU2OGM1NGJiZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTM3NSw2ICszNzUsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvclN0cnVjdHVyZTsK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVz
dWx0T2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVn
RXhwTWF0Y2hlc0FycmF5V2l0aEdyb3Vwc1N0cnVjdHVyZTsKQEAgLTc1NCw2ICs3NTUsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9y
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0K
KyAgICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZ2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCBkYWM1ZTY5ZGEyMDQ1MWI5MGZkNDhi
MDdhNzBjMTEyMjNmNTcwNzZhLi5lOTA4NTNkMDc3MTdmOTEyNDIzYzQ2OWEwOWJlNzNhZWI0NDVk
MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTk3LDYg
Kzk3LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBl
IHR5cGUpCiAgICAgQ0FTRShSZWdFeHBPYmplY3RUeXBlKQogICAgIENBU0UoUHJveHlPYmplY3RU
eXBlKQogICAgIENBU0UoSlNHZW5lcmF0b3JUeXBlKQorICAgIENBU0UoSlNBc3luY0dlbmVyYXRv
clR5cGUpCiAgICAgQ0FTRShKU1Byb21pc2VUeXBlKQogICAgIENBU0UoSlNNYXBUeXBlKQogICAg
IENBU0UoSlNTZXRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRl
eCAwMWU3MDIyNzM0NzY0YjE4ZDllMzFhOTFlZThjZDYwYTk5NTkyNWVhLi4wZTgxOTA1ZGJkMzZj
OTM5ODhjZmFlZGFmZTk5MmJjNjkzNTZkMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaApAQCAtMTA5LDYgKzEwOSw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAg
ICAgUmVnRXhwT2JqZWN0VHlwZSwKICAgICBQcm94eU9iamVjdFR5cGUsCiAgICAgSlNHZW5lcmF0
b3JUeXBlLAorICAgIEpTQXN5bmNHZW5lcmF0b3JUeXBlLAogICAgIEpTUHJvbWlzZVR5cGUsCiAg
ICAgSlNNYXBUeXBlLAogICAgIEpTU2V0VHlwZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379441</attachid>
            <date>2019-09-24 01:58:58 -0700</date>
            <delta_ts>2019-09-24 23:56:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201498-20190924015857.patch</filename>
            <type>text/plain</type>
            <size>111929</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTkwNWE0MjY2MTg5MGJkMDZlNDc1NGIyZjRiMWIxMTE4MjZhYWVlLi4wOTY0MjExNGZkMDE5YzJk
MDkzMmExNGQ5NWM0ZTFiYjVkNjMwYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTktMDktMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBc3luY0dlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5hbCBm
aWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MTQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qczoK
KyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHkpOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZSk6CisgICAgICAg
IChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKToKKyAgICAgICAgKGds
b2JhbFByaXZhdGUuaXNFeGVjdXRpb25TdGF0ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmlz
U3VzcGVuZFlpZWxkU3RhdGUpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRv
clJlamVjdCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUmVzb2x2ZSk6
CisgICAgICAgIChhc3luY0dlbmVyYXRvcllpZWxkQXdhaXRlZCk6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLmFzeW5jR2VuZXJhdG9yWWllbGQpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5kb0Fz
eW5jR2VuZXJhdG9yQm9keUNhbGwpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVy
YXRvclJlc3VtZU5leHQpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvckVu
cXVldWUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
Lmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJ
bmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JG
aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFzeW5j
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRJc0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
SW5kZXgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19pc0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6WWllbGRFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXdhaXRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3SW50ZXJu
YWxGaWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9OZXdHZW5lcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
QXN5bmNHZW5lcmF0b3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdBc3luY0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVh
dGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBc3luY0dlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9KU0Fz
eW5jR2VuZXJhdG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3IuY3BwLgorICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpKU0FzeW5jR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0FzeW5jR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXN5bmNHZW5lcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3IuaC4KKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJ
bnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0yMyAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjI1MDI2Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NTM0ZDdkMDJhMThhM2Q0ZWRkMWU0OTZkYzZlYmRiMThjZWQ5NGZlMC4uYWVjOWM2YmFmODZlNTU5
MjMzNTQzNWJjN2Q4MWJhY2Q1ZjNkODMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE4MjYsNiArMTgyNiw3IEBACiAJCUUzOUQ4QjJFMjMwMjFFMjYwMDI2NTg1MiAvKiBXYXNt
T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5RDhCMkQyMzAyMUUxRTAwMjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmggKi87IH07CiAJ
CUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM5RUVBRjMyMjgxMjQ1MDAwODQ3NEY0IC8qIE9iamVjdFRvU3Ry
aW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlFRUFGMjIyODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0
VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgfTsKKwkJRTM5RkVCRTMy
MzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMzOUM1RDQwMEI0MEFCMCAvKiBK
U0FzeW5jR2VuZXJhdG9yLmggKi87IH07CiAJCUUzQTA1MzFBMjEzNDJCNjgwMDIyRUMxNCAvKiBX
YXNtU3RyZWFtaW5nUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNl
ci5oICovOyB9OwogCQlFM0EwNTMxQzIxMzQyQjY4MDAyMkVDMTQgLyogV2FzbVNlY3Rpb25QYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTA1
MzE4MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oICovOyB9OwogCQlFM0Ez
MkJDNzFGQzgzMTQ3MDA3RDdFNzYgLyogV2Vha01hcEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMyQkM2MUZDODMxMkUwMDdEN0U3NiAvKiBX
ZWFrTWFwSW1wbC5oICovOyB9OwpAQCAtNDk0Niw2ICs0OTQ3LDggQEAKIAkJRTM5RTAzMEQyMkQ5
RUEzRTAwNDA4QzE4IC8qIFdlYkFzc2VtYmx5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gV2Vi
QXNzZW1ibHkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUVFQUYxMjI4MTI0
NEMwMDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUVFQUYyMjI4MTI0
NEMwMDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBB
QjAgLyogSlNBc3luY0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FzeW5jR2Vu
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RkVCRTIyMzM5QzVE
NDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBc3luY0dl
bmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EwNTMxNjIxMzQyQjY2
MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtU3RyZWFtaW5nUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzQTA1MzE3MjEzNDJCNjYwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU2VjdGlvblBhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTA1MzE4MjEzNDJCNjcwMDIyRUMx
NCAvKiBXYXNtU2VjdGlvblBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXYXNtU2VjdGlvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE0
MCwxNyArNzE0MywxOSBAQAogCQkJCTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5
SW5saW5lcy5oICovLAogCQkJCTVCNzBDRkQ5MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uY3BwICovLAogCQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCAqLywKKwkJCQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBBQjAgLyogSlNBc3luY0dlbmVy
YXRvci5jcHAgKi8sCisJCQkJRTM5RkVCRTIyMzM5QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5l
cmF0b3IuaCAqLywKIAkJCQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4Q0EgLyogSlNB
c3luY0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2
IC8qIEpTQmlnSW50LmNwcCAqLywKIAkJCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNC
aWdJbnQuaCAqLywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0
aW9uLmNwcCAqLywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0
aW9uLmggKi8sCi0JCQkJRkU0OEJENDMyMzI0NUU4NzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5jcHAg
Ki8sCi0JCQkJRkU0OEJENDIyMzI0NUU4NzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5oICovLAogCQkJ
CTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCiAJCQkJNjU3Q0Y0
NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi8sCiAJCQkJNTNCNjAxRUIyMDM0QjhD
NTAwNkJFNjY3IC8qIEpTQ2FzdC5oICovLAorCQkJCUZFNDhCRDQzMjMyNDVFODcwMEYxMzZEMCAv
KiBKU0NDb25maWcuY3BwICovLAorCQkJCUZFNDhCRDQyMjMyNDVFODcwMEYxMzZEMCAvKiBKU0ND
b25maWcuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAq
LywKIAkJCQlCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggKi8sCiAJCQkJMEY5
NzQ5NkYxNjg3QURFMjAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCAqLywKQEAgLTkzNTMsNyAr
OTM1OCw2IEBACiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9C
My5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExv
d2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y5MTlEMEJBQzEwMEIx
RDFCNSAvKiBGVExPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMjIzMjRE
NTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzFD
MTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjM1QkUwMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTU0Myw3ICs5NTQ3LDYgQEAKIAkJCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEy
NTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTJCQkZGMjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU0OEJENDQyMzI0NUU5MzAwRjEzNkQwIC8qIEpTQ0Nv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA4RUJFMjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIElu
dGxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBCRDgwMTE0OEVBNkYyMDAx
MTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRFMDM1NDFFNTNCRDI5
MDAyMTNGNjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC05NjAxLDYgKzk2MDQsNyBAQAogCQkJCTBGMkI2NkVBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Fy
cmF5QnVmZmVyVmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUZCOEJBMUM5OURB
N0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUI3MENG
REUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTM5RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCThCQzA2NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5ODcyQzQ4MjIxQkJBRjMwMDhDNjk2OSAv
KiBKU0Jhc2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjE0LDYgKzk2MTgsNyBAQAog
CQkJCTY1N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTQ4QkQ0NDIzMjQ1RTkzMDBGMTM2RDAgLyogSlNDQ29uZmlnLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGlu
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg5MSw3ICs5ODk2LDkgQEAKIAkJCQkwRjJCREMyQzE1
MUZERTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VB
MTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDQ4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEQUEwQTFGRDFDM0QzMDA3OUM1QjIgLyogUGFyYWxs
ZWxTb3VyY2VBZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFNjU3NTIwNjY4RUFBMDBG
QjgxQUMgLyogUGFyc2VIYXNoLmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTgsNyArMTAwMDUsNiBA
QAogCQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8q
IFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkw
MEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA0M2VhNTMwYzI1
MTM0ODVlNzQ3ZDU0MTUzNTI3Mjg3ODdjODI4NWM2Li5iOWZlZWNlZmUyN2QwNWMxMWZmNWFmNGVj
OTQxNTAwNzg1ZTdlODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MDksNiAr
ODA5LDcgQEAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAog
cnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuY3Bw
CiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNCaWdJbnQu
Y3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCA5
MGRlOTIwZDlkNmUzMDRhNmRkYmJhZTk0ODkxYmIyNzM4NDJmNzQ5Li5iMGFjNDAzODFkZmYwNTY3
N2JjZWM5NDAwYzEzMTAzOGViNDJjOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0yOSw3ICsy
OSw3IEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdlbmVyYXRvcikKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICByZXR1cm4gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpID09PSBudWxsOworICAgIHJldHVy
biBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJh
dG9yRmllbGRRdWV1ZUZpcnN0KSA9PT0gbnVsbDsKIH0KIAogQGdsb2JhbFByaXZhdGUKQEAgLTM5
LDE1ICszOSwxNSBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZShnZW5lcmF0
b3IsIGl0ZW0pCiAKICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShpdGVtLCAiYXN5
bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IikgPT09IG51bGwpOwogCi0gICAgaWYgKEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3QiKSA9PT0g
bnVsbCkgewotICAgICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3Is
ICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIpID09PSBudWxsKTsKKyAgICBpZiAoQGdldEFzeW5j
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVl
dWVGaXJzdCkgPT09IG51bGwpIHsKKyAgICAgICAgQGFzc2VydChAZ2V0QXN5bmNHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QpID09
PSBudWxsKTsKIAotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5
bmNHZW5lcmF0b3JRdWV1ZUZpcnN0IiwgaXRlbSk7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0pOworICAgICAg
ICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJh
dG9yRmllbGRRdWV1ZUZpcnN0LCBpdGVtKTsKKyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50
ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0LCBpdGVt
KTsKICAgICB9IGVsc2UgewotICAgICAgICB2YXIgbGFzdCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIpOworICAgICAgICB2YXIgbGFz
dCA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5l
cmF0b3JGaWVsZFF1ZXVlTGFzdCk7CiAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShsYXN0
LCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IiwgaXRlbSk7Ci0gICAgICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0p
OworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFz
eW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QsIGl0ZW0pOwogICAgIH0KIH0KIApAQCAtNTgsMTMg
KzU4LDEzIEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikK
IAogICAgIEBhc3NlcnQoIUBhc3luY0dlbmVyYXRvclF1ZXVlSXNFbXB0eShnZW5lcmF0b3IpLCAi
QXN5bmMgZ2VuZXRhdG9yJ3MgUXVldWUgaXMgYW4gZW1wdHkgTGlzdC4iKTsKIAotICAgIHZhciBy
ZXN1bHQgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JR
dWV1ZUZpcnN0Iik7CisgICAgdmFyIHJlc3VsdCA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlRmlyc3QpOwogCiAgICAg
dmFyIHVwZGF0ZWRGaXJzdCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShyZXN1bHQsICJhc3luY0dl
bmVyYXRvclF1ZXVlSXRlbU5leHQiKTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJh
dG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0IiwgdXBkYXRlZEZpcnN0KTsKKyAgICBAcHV0
QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmll
bGRRdWV1ZUZpcnN0LCB1cGRhdGVkRmlyc3QpOwogCiAgICAgaWYgKHVwZGF0ZWRGaXJzdCA9PT0g
bnVsbCkKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2Vu
ZXJhdG9yUXVldWVMYXN0IiwgbnVsbCk7CisgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVy
bmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCwgbnVsbCk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzQsOCArNzQsOCBAQCBmdW5jdGlvbiBpc0V4
ZWN1dGlvblN0YXRlKGdlbmVyYXRvcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIg
c3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUi
KTsKLSAgICB2YXIgcmVhc29uID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFz
eW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpOworICAgIHZhciBzdGF0ZSA9IEBnZXRBc3luY0dl
bmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7Cisg
ICAgdmFyIHJlYXNvbiA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9y
LCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pOwogICAgIHJldHVybiAoc3RhdGUg
PiAwICYmIHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpCiAgICAg
ICAgIHx8IHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZwogICAgICAgICB8
fCByZWFzb24gPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdDsKQEAgLTg2LDgg
Kzg2LDggQEAgZnVuY3Rpb24gaXNTdXNwZW5kWWllbGRTdGF0ZShnZW5lcmF0b3IpCiB7CiAgICAg
InVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgcmV0dXJuIChzdGF0ZSA+IDAgJiYgQGdl
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
biIpID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQpCisgICAgdmFyIHN0YXRl
ID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlKTsKKyAgICByZXR1cm4gKHN0YXRlID4gMCAmJiBAZ2V0QXN5bmNHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29u
KSA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbllpZWxkKQogICAgICAgICB8fCBzdGF0
ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRZaWVsZDsKIH0KIApAQCAtOTYsNyAr
OTYsNyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclJlamVjdChnZW5lcmF0b3IsIGV4Y2VwdGlv
bikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBAYXNzZXJ0KHR5cGVvZiBAZ2V0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIikgPT09
ICJudW1iZXIiLCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3luY0dlbmVyYXRvciBpbnN0YW5jZS4i
KTsKKyAgICBAYXNzZXJ0KEBpc0FzeW5jR2VuZXJhdG9yKGdlbmVyYXRvciksICJHZW5lcmF0b3Ig
aXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOwogCiAgICAgdmFyIHByb21pc2Ug
PSBAYXN5bmNHZW5lcmF0b3JRdWV1ZURlcXVldWUoZ2VuZXJhdG9yKS5wcm9taXNlOwogICAgIEBh
c3NlcnQoQGlzUHJvbWlzZShwcm9taXNlKSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgZnVuY3Rpb24g
YXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgdmFsdWUsIGRvbmUpCiB7CiAgICAgInVz
ZSBzdHJpY3QiOwogCi0gICAgQGFzc2VydCh0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSAibnVtYmVyIiwgIkdl
bmVyYXRvciBpcyBub3QgYW4gQXN5bmNHZW5lcmF0b3IgaW5zdGFuY2UuIik7CisgICAgQGFzc2Vy
dChAaXNBc3luY0dlbmVyYXRvcihnZW5lcmF0b3IpLCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3lu
Y0dlbmVyYXRvciBpbnN0YW5jZS4iKTsKIAogICAgIHZhciBwcm9taXNlID0gQGFzeW5jR2VuZXJh
dG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikucHJvbWlzZTsKICAgICBAYXNzZXJ0KEBpc1Byb21p
c2UocHJvbWlzZSkpOwpAQCAtMTI2LDExICsxMjYsMTEgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0
b3JZaWVsZChnZW5lcmF0b3IsIHZhbHVlLCByZXN1bWVNb2RlKQogCiAgICAgZnVuY3Rpb24gYXN5
bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQocmVzdWx0KQogICAgIHsKLSAgICAgICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIsIEBB
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CisgICAgICAgIEBwdXRBc3luY0dlbmVy
YXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRS
ZWFzb24sIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CiAgICAgICAgIEBhc3lu
Y0dlbmVyYXRvclJlc29sdmUoZ2VuZXJhdG9yLCByZXN1bHQsIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uIiwgQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0KTsKKyAgICBAcHV0QXN5
bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRT
dXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpOwogCiAgICAg
QGF3YWl0VmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSwgYXN5bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQp
OwogfQpAQCAtMTUwLDM0ICsxNTAsMzkgQEAgZnVuY3Rpb24gZG9Bc3luY0dlbmVyYXRvckJvZHlD
YWxsKGdlbmVyYXRvciwgcmVzdW1lVmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgInVzZSBzdHJpY3Qi
OwogCiAgICAgdmFyIHZhbHVlID0gQHVuZGVmaW5lZDsKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3Rh
dGUgPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRv
ckZpZWxkU3RhdGUpOwogCi0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdl
bmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwotICAgIEBwdXRC
eUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24i
LCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZSk7CisgICAgQHB1dEFzeW5jR2VuZXJh
dG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNH
ZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxG
aWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbiwgQEFzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpOwogCiAgICAgdHJ5IHsKLSAgICAgICAgdmFsdWUg
PSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yTmV4dCIpLkBjYWxs
KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JUaGlzIiksIGdlbmVy
YXRvciwgc3RhdGUsIHJlc3VtZVZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVjdFByaXZh
dGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgIGlmIChAZ2V0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEFzeW5jR2VuZXJh
dG9yU3RhdGVFeGVjdXRpbmcpCi0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2Vu
ZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7
CisgICAgICAgIHZhbHVlID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKEBnZXRBc3luY0dlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgZ2VuZXJhdG9yLCBzdGF0ZSwg
cmVzdW1lVmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFtZSkpOworICAgICAgICBzdGF0ZSA9IEBnZXRB
c3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0
ZSk7CisgICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcp
IHsKKyAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwor
ICAgICAgICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAg
ICAgfQogICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKTsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbiIsIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKTsK
KyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5l
cmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAg
IEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0
b3JGaWVsZFN1c3BlbmRSZWFzb24sIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKTsK
IAogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9yUmVqZWN0KGdlbmVyYXRvciwgZXJyb3Ip
OwogICAgIH0KIAotICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIikgPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b25Bd2FpdCkgeworICAgIHZhciByZWFzb24gPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZp
ZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKTsKKyAgICBp
ZiAocmVhc29uID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpIHsKICAgICAg
ICAgdmFyIG9uRnVsZmlsbGVkID0gZnVuY3Rpb24ocmVzdWx0KSB7IEBkb0FzeW5jR2VuZXJhdG9y
Qm9keUNhbGwoZ2VuZXJhdG9yLCByZXN1bHQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsg
fTsKIAogICAgICAgICBAYXdhaXRWYWx1ZShnZW5lcmF0b3IsIHZhbHVlLCBvbkZ1bGZpbGxlZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRl
KGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSBAQXN5bmNHZW5l
cmF0b3JTdXNwZW5kUmVhc29uWWllbGQpCisgICAgaWYgKHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJh
dG9yU3VzcGVuZFJlYXNvbllpZWxkKQogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9yWWll
bGQoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSk7CiAKLSAgICBpZiAoQGdldEJ5SWREaXJl
Y3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBBc3luY0dlbmVyYXRv
clN0YXRlQ29tcGxldGVkKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0
b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uTm9uZSk7CisgICAgaWYgKHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBs
ZXRlZCkgeworICAgICAgICBAYXNzZXJ0KEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVD
b21wbGV0ZWQpOworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVy
YXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uTm9uZSk7CiAgICAgICAgIHJldHVybiBAYXN5bmNHZW5lcmF0b3JSZXNvbHZl
KGdlbmVyYXRvciwgdmFsdWUsIHRydWUpOwogICAgIH0KIH0KQEAgLTE4Nyw5ICsxOTIsOSBAQCBm
dW5jdGlvbiBhc3luY0dlbmVyYXRvclJlc3VtZU5leHQoZ2VuZXJhdG9yKQogewogICAgICJ1c2Ug
c3RyaWN0IjsKIAotICAgIEBhc3NlcnQodHlwZW9mIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKSA9PT0gIm51bWJlciIsICJHZW5l
cmF0b3IgaXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOworICAgIEBhc3NlcnQo
QGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSwgIkdlbmVyYXRvciBpcyBub3QgYW4gQXN5bmNH
ZW5lcmF0b3IgaW5zdGFuY2UuIik7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFBy
aXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3RhdGUgPSBAZ2V0
QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3Rh
dGUpOwogCiAgICAgQGFzc2VydChzdGF0ZSAhPT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcsICJBc3luYyBnZW5lcmF0b3Igc2hvdWxkIG5vdCBiZSBpbiBleGVjdXRpbmcgc3RhdGUiKTsK
IApAQCAtMTk5LDI0ICsyMDQsMjQgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JSZXN1bWVOZXh0
KGdlbmVyYXRvcikKICAgICBpZiAoQGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdlbmVyYXRv
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZhciBuZXh0ID0gQGdldEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpOworICAgIHZhciBuZXh0
ID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVy
YXRvckZpZWxkUXVldWVGaXJzdCk7CiAKICAgICBpZiAobmV4dC5yZXN1bWVNb2RlICE9PSBAR2Vu
ZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCkgewogICAgICAgICBpZiAoc3RhdGUgPT09IEBBc3luY0dl
bmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQpIHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRl
Q29tcGxldGVkKTsKKyAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQpOwogICAgICAgICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQpIHsKICAgICAgICAgICAgIGlmIChuZXh0LnJlc3VtZU1vZGUgPT09IEBHZW5l
cmF0b3JSZXN1bWVNb2RlUmV0dXJuKSB7Ci0gICAgICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVB
d2FpdGluZ1JldHVybik7CisgICAgICAgICAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJu
YWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0b3JT
dGF0ZUF3YWl0aW5nUmV0dXJuKTsKICAgICAgICAgICAgICAgICBAcmVzb2x2ZVdpdGhvdXRQcm9t
aXNlKG5leHQudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZXN1bHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3Is
ICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQGFzeW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0
b3IsIHJlc3VsdCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgQHB1dEJ5
SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJh
dG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgQHB1dEFzeW5jR2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5
bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBAYXN5
bmNHZW5lcmF0b3JSZWplY3QoZ2VuZXJhdG9yLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0MCw3ICsyNDUsNyBAQCBmdW5jdGlv
biBhc3luY0dlbmVyYXRvckVucXVldWUoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSkKICAg
ICAidXNlIHN0cmljdCI7CiAKICAgICB2YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7Ci0gICAg
aWYgKCFAaXNPYmplY3QoZ2VuZXJhdG9yKSB8fCB0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRl
KGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpICE9PSAnbnVtYmVyJykg
eworICAgIGlmICghQGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSkgewogICAgICAgICBAcmVq
ZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIEBt
YWtlVHlwZUVycm9yKCd8dGhpc3wgc2hvdWxkIGJlIGFuIGFzeW5jIGdlbmVyYXRvcicpKTsKICAg
ICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDM1YzEwNDBhZDQ1NTc0NzgxNWUxMTZmYmM3ZDEy
NjViM2ZjNzQyNDIuLjQ4ODA2NTkyNjYwZGYxYWVjNDkyNWQwODk2ODZlZWE1YzVjNzFhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTEw
OCwxNSArMTA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdlbmVyYXRvckZyYW1l
KSBcCiAgICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKICAgICBtYWNybyhnZW5lcmF0b3JUaGlz
KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogICAgIG1hY3JvKHN5bmNJdGVy
YXRvcikgXAogICAgIG1hY3JvKG5leHRNZXRob2QpIFwKLSAgICBtYWNybyhhc3luY0dlbmVyYXRv
clN0YXRlKSBcCi0gICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uKSBcCi0gICAg
bWFjcm8oYXN5bmNHZW5lcmF0b3JRdWV1ZSkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVl
dWVGaXJzdCkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVMYXN0KSBcCiAgICAgbWFj
cm8oYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0KSBcCi0gICAgbWFjcm8oZ2VuZXJhdG9yUmVz
dW1lTW9kZSkgXAogICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oaW50bFN1
YnN0aXR1dGVWYWx1ZSkgXAogICAgIG1hY3JvKHRoaXNUaW1lVmFsdWUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAppbmRleCAwNmZjNTgxOTIxMmIzMWIwNTU5ZWVmZjYxMTlkNzVhYTUxMGM5NzI1
Li5kNDE2MzNjNTViNjA5Y2Q1N2UyNDNiMmIxYTRjNDQwOTIxNGM1YWRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJdGVyYXRpb25LaW5k
LmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNB
c3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC04NSwxNCArODUsMTcg
QEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShW
TSYgdm0pCiAgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6
UmV0dXJuTW9kZSkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6
OkNvbXBsZXRlZCkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6
OkV4ZWN1dGluZykpKTsKLSAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1f
dm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcp
KSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5
bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRv
clN0YXRlU3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVu
ZGVkWWllbGQpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQXdhaXRpbmdSZXR1cm4uc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6QXdhaXRpbmdSZXR1cm4pKSk7Ci0gICAgbV9Bc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb246OllpZWxkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdh
aXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCkpKTsKLSAgICBt
X0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uOjpOb25lKSkpOworICAgIG1fYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRS
ZWFzb24uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbikpKTsKKyAgICBtX2FzeW5jR2VuZXJhdG9yRmll
bGRRdWV1ZUZpcnN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlRmlyc3QpKSk7CisgICAgbV9hc3luY0dlbmVyYXRv
ckZpZWxkUXVldWVMYXN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdCkpKTsKKyAgICBtX0FzeW5jR2VuZXJh
dG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKKyAg
ICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4
ZWN1dGluZykpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRTdGFydC5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5
bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRv
clN0YXRlU3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFlpZWxk
KSkpOworICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVy
YXRvclN0YXRlOjpBd2FpdGluZ1JldHVybikpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbllpZWxkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0Fz
eW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKSkpOworICAg
IG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6QXdhaXQpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25l
LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9y
OjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiB9CiAKIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3Vw
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXgg
MjgwYjdmOTA2ZDY1ZTUwZmZiNzY3NWUxMWVhMmUyOTNiN2Q1N2VhOS4uZmFlYjIzODliOGZkNzBl
ZTVmOTQ5MzVmMzhhNzRhNjE1Njc4NjliZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC00Mywx
MiArNDMsMTQgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhnZXRCeUlkRGlyZWN0UHJp
dmF0ZSkgXAogICAgIG1hY3JvKGdldFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8o
Z2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEFzeW5jR2VuZXJhdG9y
SW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGlkV2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhp
c09iamVjdCkgXAogICAgIG1hY3JvKGlzSlNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJveHlPYmpl
Y3QpIFwKICAgICBtYWNybyhpc0Rlcml2ZWRBcnJheSkgXAogICAgIG1hY3JvKGlzR2VuZXJhdG9y
KSBcCisgICAgbWFjcm8oaXNBc3luY0dlbmVyYXRvcikgXAogICAgIG1hY3JvKGlzUHJvbWlzZSkg
XAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBcCiAgICAgbWFjcm8oaXNNYXApIFwKQEAgLTY0
LDYgKzY2LDcgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkg
XAogICAgIG1hY3JvKHB1dFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8ocHV0R2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJu
YWxGaWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwK
ICAgICBtYWNybyh0b09iamVjdCkgXApAQCAtMTEwLDYgKzExMyw5IEBAIGNsYXNzIFJlZ2lzdGVy
SUQ7CiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybikgXAogICAgIG1hY3JvKEdl
bmVyYXRvclN0YXRlQ29tcGxldGVkKSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcpIFwKKyAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikgXAorICAg
IG1hY3JvKGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KSBcCisgICAgbWFjcm8oYXN5bmNH
ZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkgXAogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9yU3RhdGVD
b21wbGV0ZWQpIFwKICAgICBtYWNybyhBc3luY0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSBcCiAg
ICAgbWFjcm8oQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAxYmE0MWYxMDZi
N2ExMTUxMjU1NzEyZjZhM2Q5MzM3NzBmMmQ3M2YxLi4xNzI5OTZjY2NkN2ZjMWM1MTA4OWFhMjJi
MzI2MmIxYWQwOGI4MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKQEAgLTEzNCwxOCArMTM0LDIyIEBACiAgICAgICAgIGlzSW50ZXJuYWxQ
cm9taXNlOiBib29sLAogICAgIH0KIAotb3AgOmNyZWF0ZV9nZW5lcmF0b3IsCitvcCA6bmV3X2dl
bmVyYXRvciwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAg
ICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIGNhY2hlZENhbGxlZTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0KICAgICB9CiAKLW9wIDpu
ZXdfZ2VuZXJhdG9yLAorb3BfZ3JvdXAgOkNyZWF0ZUludGVybmFsRmllbGRPYmplY3RPcCwKKyAg
ICBbCisgICAgICAgIDpjcmVhdGVfZ2VuZXJhdG9yLAorICAgICAgICA6Y3JlYXRlX2FzeW5jX2dl
bmVyYXRvciwKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRh
dGE6IHsKKyAgICAgICAgY2FjaGVkQ2FsbGVlOiBXcml0ZUJhcnJpZXJbSlNDZWxsXQogICAgIH0K
IAogb3AgOmdldF9hcmd1bWVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNDA3OTI0OTk2NWQ1NjE4ZTkzZjk4NjcyNDcyNGVjYzM3
MzIwMTVjNy4uMDIyZjNiZmViODY4NDQxY2NhZGRhZmQ3ZjgzNGZhOGY5ODg3M2JjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE5
Niw2ICsxOTYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNv
ZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIFVTRVMoT3BDcmVhdGVU
aGlzLCBjYWxsZWUpCiAgICAgVVNFUyhPcENyZWF0ZVByb21pc2UsIGNhbGxlZSkKICAgICBVU0VT
KE9wQ3JlYXRlR2VuZXJhdG9yLCBjYWxsZWUpCisgICAgVVNFUyhPcENyZWF0ZUFzeW5jR2VuZXJh
dG9yLCBjYWxsZWUpCiAgICAgVVNFUyhPcERlbEJ5SWQsIGJhc2UpCiAgICAgVVNFUyhPcE5ld0Z1
bmMsIHNjb3BlKQogICAgIFVTRVMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmMsIHNjb3BlKQpAQCAt
Mzg4LDYgKzM4OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayog
Y29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhPcENyZWF0
ZVRoaXMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlUHJvbWlzZSwgZHN0KQogICAgIERFRlMoT3BD
cmVhdGVHZW5lcmF0b3IsIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlQXN5bmNHZW5lcmF0b3IsIGRz
dCkKICAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXlXaXRoU3By
ZWFkLCBkc3QpCiAgICAgREVGUyhPcFNwcmVhZCwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNzkwOTQ3MGY1ZGViNjVlM2U0ZmRmMTI3
NWM3ODViMmYyYjBkOGNlLi40MjQ3NGZlMjhhZTNhNTJhZTY3YWJlMzg2Y2E1NDBmOGJlZjRlYmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
MTI3OCw2ICsxMjc4LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMoKQogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ3JlYXRlR2VuZXJhdG9yPihbJl0g
KGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRh
ZGF0YSwgIm9wX2NyZWF0ZV9nZW5lcmF0b3IiX3MpOwogICAgICAgICB9KTsKKyAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcENyZWF0ZUFzeW5jR2VuZXJhdG9yPihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7CisgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRhZGF0YSwgIm9wX2Ny
ZWF0ZV9hc3luY19nZW5lcmF0b3IiX3MpOworICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wUmVzb2x2ZVNjb3BlPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAg
ICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkuIEFueSBz
eW1ib2wgdGFibGVzIHRoYXQgdGhpcyB3aWxsIHJlZmVyIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDMyZTQwODZmNWNmYTAwZmUyNmNmODFhYzg4MjYzZTRiMDg1OGZjMjYuLmU3OTE0YWE0N2M1ZWU5
YTk4M2Q3NTlmZGQ2ZmFhYjZjY2EwYjNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MSw3ICs0
MSw3IEBACiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCi0jaW5jbHVkZSAiSlNBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Rml4ZWRBcnJheS5oIgpAQCAtNzAyLDggKzcwMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKICAgICAgICAgZW1pdFRvVGhpcygpOwogCi0gICAgICAgIG1vdmUobV9nZW5lcmF0b3JSZWdp
c3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOwotICAgICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVy
YXRvclJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CkBAIC04NzYsMTAgKzg3NSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAg
ICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhpY2FsIGVudmlyb25tZW50IGNyZWF0
aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252ZXJ0IGl0IHRvIG9wX21vdiBmcmFt
ZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0ZUdlbmVyYXRvckZyYW1lRW52aXJv
bm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBzY29wZVJlZ2lzdGVy
KCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9LCBhZGRDb25z
dGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAgfQotICAgICAgICBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAg
ICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxk
KGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6
RmllbGQ6OkZyYW1lKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkp
OworICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSksIGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tT
Y29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9u
IGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCkBAIC0yNzIzLDE4ICsyNzIwLDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEFzeW5jR2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVy
SUQqIG5leHRGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQ
YXJzZU1vZGUocGFyc2VNb2RlKCkpKTsKIAotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JOZXh0
UHJpdmF0ZU5hbWUoKSwgbmV4dEZ1bmN0aW9uLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsK
LSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAm
bV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotICAgICAgICAKLSAg
ICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKLSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0
b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0
ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVyYXRvclN1c3BlbmRS
ZWFzb25Qcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6Tm9uZSkpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAgICBlbWl0
RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0UHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKLSAgICBlbWl0
RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3RQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVtaXRQ
dXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCksIG5leHRGdW5jdGlvbik7CisgICAgZW1p
dFB1dEludGVybmFsRmllbGQobV9nZW5lcmF0b3JSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSwgJm1fdGhpc1JlZ2lzdGVyKTsKIH0K
IAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeUlkKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCkBA
IC0yODc1LDYgKzI4NjIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BDcmVhdGVBc3luY0dl
bmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QsIG5ld1RhcmdldCk7CisgICAgcmV0dXJuIGRzdDsKK30K
Kwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdl
dCkKIHsKICAgICBPcENoZWNrVGR6OjplbWl0KHRoaXMsIHRhcmdldCk7CkBAIC00NTE1LDcgKzQ1
MDgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJs
ZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogICAgIGVtaXRMYWJlbCh0YXJnZXQuZ2V0
KCkpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1
c3BlbmRSZWFzb24gcmVzdWx0KQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9p
bnQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbiByZXN1bHQpCiB7CiAgICAgUmVmPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3
TGFiZWwoKTsKICAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7
CkBAIC00NTIzLDcgKzQ1MTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQ
b2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bgogCiAgICAgaWYg
KHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkg
ewogICAgICAgICBpbnQgc3VzcGVuZFJlYXNvbiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc3Vs
dCk7Ci0gICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Qcml2YXRlTmFt
ZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29uKSkpOworICAgICAg
ICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb24pLCBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29uKSkpOwogICAgIH0KIAogICAgIC8vIFNw
bGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KQEAgLTQ1NTUsNyArNDU0OCw3IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5j
R2VuZXJhdG9yRnVuCiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQuZ2V0KCkpOwogfQogCi1SZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50
LCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiBy
ZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b24gcmVzdWx0KQogewogICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50LCByZXN1bHQpOwogCkBA
IC00NTk1LDcgKzQ1ODgsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGxJdGVyYXRvcihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgZW1pdFlp
ZWxkKHZhbHVlLCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6QXdhaXQpOworICAgIGVtaXRZaWVsZCh2YWx1ZSwgSlNBc3luY0dlbmVyYXRvcjo6
QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7CiAgICAgbW92ZSh2YWx1ZSwgZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIApAQCAtNDY2Nyw3ICs0NjYwLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGUKIAogICAgICAgICAgICAgUmVmPExhYmVsPiBicmFuY2hPblJlc3Vs
dCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZW1pdFlpZWxk
UG9pbnQodmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0
b3JTdXNwZW5kUmVhc29uOjpZaWVsZCk7CisgICAgICAgICAgICAgICAgZW1pdFlpZWxkUG9pbnQo
dmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOwogCiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJlbCA9IG5l
d0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xh
YmVsKCk7CkBAIC00Nzc4LDEwICs0NzcxLDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0
YXRlKQogewogICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGUpKTsKLSAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwotICAgIGVsc2UK
LSAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0
ZSk7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6
OkZpZWxkOjpTdGF0ZSkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6
OkZpZWxkOjpTdGF0ZSkpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lz
dGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSwg
Y29tcGxldGVkU3RhdGUpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcFZp
YUZpbmFsbHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBMYWJlbCYganVtcFRh
cmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyNjk0YjIyNmFiOTVjMmQ4NzBjY2MwZmFjNDIxZGYxMTYx
NDVjNzNlLi40MTk3YWJjMTJlNTIyNTg5MTRmZTUwMGVjMWVlN2I1YWNiMzRiZGU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgotI2luY2x1ZGUgIkpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKQEAgLTcyNSw2ICs3MjUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJ
RCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVByb21pc2UoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wgaXNJbnRlcm5hbFByb21pc2UpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFz
eW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAg
ICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9v
bCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIHZvaWQgZW1pdFREWkNo
ZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0YXJnZXQsIFJlZ2lz
dGVySUQqIHNjb3BlKTsKQEAgLTg2OSw2ICs4NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzcmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0dlbmVyYXRv
cihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdp
dGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc0FzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7
IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXN5bmNHZW5lcmF0b3JUeXBl
KTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEFy
cmF5VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwg
c3JjLCBKU1Byb21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm94eU9i
amVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2Vs
bFdpdGhUeXBlKGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05ODUsMTEgKzk4Nywx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklE
KiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQz
Ml90IGNsYXVzZUNvdW50LCBjb25zdCBWZWN0b3I8UmVmPExhYmVsPiwgOD4mLCBFeHByZXNzaW9u
Tm9kZSoqLCBMYWJlbCYgZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7
CiAKLSAgICAgICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiwgSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24pOworICAgICAgICB2b2lk
IGVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVy
YXRvclN1c3BlbmRSZWFzb24pOwogCiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlTGFi
ZWwoKTsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0
ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gPSBK
U0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWll
bGQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA9IEpTQXN5bmNH
ZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCmluZGV4IDY1Mjc2NmFiZjljNTQxNDg0MzAwOWFkZTY4Zjc5ODQzNzI0NGU2ODMuLjY1
OTM3ZjMxOWJlOTI1NDkzZGVlZTI1Nzg0ZTExMmJhN2E1OGQ5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yLmgiCkBAIC0xMDM0LDYgKzEwMzUsMjYgQEAgc3RhdGljIEpTR2VuZXJh
dG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKiBub2QKICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKIH0KIAorc3Rh
dGljIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZElu
ZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+ZW1pdHRl
cigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZp
ZWxkU3RhdGUpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7
CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKKyAgICAg
ICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOworICAgIGlmIChub2RlLT5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJh
dG9yRmllbGRGcmFtZSkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpG
cmFtZTsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQorICAgICAg
ICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb247CisgICAgaWYg
KG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNH
ZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUZpcnN0OworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVs
ZFF1ZXVlTGFzdCkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1
ZUxhc3Q7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTA2MCw2ICsxMDgxLDE5
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0
SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBpbmRleCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBu
b2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAg
UkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsK
KyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihu
b2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6bnVt
YmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJndW1lbnQoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUq
IG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMTYxLDYgKzExOTUsMjIgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKEJ5dGUKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0
b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
cHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9h
cmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9B
U1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNp
Z25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3luY0dlbmVyYXRvckludGVybmFs
RmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4
cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6bnVtYmVyT2ZJbnRl
cm5hbEZpZWxkcyk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAgICBBU1NFUlQoIW5v
ZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3Iu
ZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7Cit9
CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGFp
bENhbGxGb3J3YXJkQXJndW1lbnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xp
c3ROb2RlOwpAQCAtMTI4Myw3ICsxMzMzLDE2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNHZW5lcmF0b3IoSlNDOjpCeXRlY29kZUdlbmVyCiAK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdElzR2VuZXJhdG9y
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpKSk7CiB9Ci0gICAgCisK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNBc3lu
Y0dlbmVyYXRvcihKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEpTQzo6UmVnaXN0
ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShu
b2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdElzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pc0pTQXJyYXkoSlNDOjpCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtNDE1OCw3ICs0MjE3LDcgQEAg
UmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShh
cmcuZ2V0KCksIGFyZ3VtZW50KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFyZyA9
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVs
ZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWll
bGQoYXJnLmdldCgpLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b246OllpZWxkKTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
bW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CkBAIC00
MTc3LDcgKzQyMzYsNyBAQCBSZWdpc3RlcklEKiBBd2FpdEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogewogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpTQXN5
bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdhaXQpOwogICAgIGlm
IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIHZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5YjYzN2ZkN2RlZjUx
YTYxODUzOGFiMDQ2ODJiMDQ1ZDI2YTFlZjdhLi5lOTE5OTlkZmU1NzFiZDFiNWE3YTI0Y2IzN2Rj
ZWI1ZjRkZjY5MGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNp
bmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMjY4NiwyOCArMjY4Nyw0NyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENy
ZWF0ZUdlbmVyYXRvcjogewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAg
aWYgKEpTVmFsdWUgYmFzZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJl
RGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3Rp
bGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6OmluZm8oKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkg
PT0gZ2xvYmFsT2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFy
ZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgY2Fz
ZSBDcmVhdGVBc3luY0dlbmVyYXRvcjogeworICAgICAgICBhdXRvIGZpbmRDb25zdGFudCA9IFsm
XSAoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIC0+IGJvb2wgeworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBm
dW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3JhcGgubV92bSwgYmFzZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0g
ZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXJl
RGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVE
YXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBjbGFzc0luZm8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9i
YWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemls
eShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvck5vZGUobm9kZSwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9OworCisgICAgICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgorICAgICAgICAgICAgZm91bmQgPSBmaW5kQ29uc3RhbnQoSlNHZW5lcmF0b3I6
OmluZm8oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dl
bmVyYXRvcjoKKyAgICAgICAgICAgIGZvdW5kID0gZmluZENvbnN0YW50KEpTQXN5bmNHZW5lcmF0
b3I6OmluZm8oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNPYmpl
Y3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwpAQCAtMjcxOSw2ICsyNzM5LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoK
KyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBBU1NFUlQoISFub2RlLT5zdHJ1
Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbm9kZS0+c3RydWN0dXJl
KCkpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDdmNjllNjZkMzA0YjcyYmJiYTY2N2U5Y2U3MTZkNTBi
NjJiNmFhNy4uOTllMzZjOTllYjg1NjE1OTcxZDRiYzNmMjM1Y2U5NDU5NDVmNzhhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ5
OTAsNiArNDk5MCw1MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2dlbmVyYXRvcik7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hc3luY19nZW5lcmF0b3I6IHsKKyAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlQXN5bmNHZW5lcmF0b3I+
KCk7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fY2FsbGVlKSk7CisKKyAgICAgICAgICAgIGJvb2wgYWxyZWFkeUVtaXR0ZWQgPSBmYWxz
ZTsKKworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWND
YXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KCptX3ZtKTsKKyAgICAgICAgICAgIGlmICghZnVuY3Rp
b24pIHsKKyAgICAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKS5tX2NhY2hlZENhbGxlZS51bnZhbGlkYXRlZEdldCgpOworICAg
ICAgICAgICAgICAgIGlmIChjYWNoZWRGdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAmJiBj
YWNoZWRGdW5jdGlvbiAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKQorICAg
ICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0czxKU0Z1bmN0aW9uPigqbV92bSkpOworCisg
ICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShj
YWNoZWRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxs
LCBPcEluZm8oZnJvemVuKSwgY2FsbGVlKTsKKworICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
biA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjYWNoZWRGdW5jdGlvbik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+
cmFyZURhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCkgPT0gSlNBc3luY0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50U2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoTmV3QXN5bmNHZW5lcmF0
b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRv
IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsZWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYWxy
ZWFkeUVtaXR0ZWQpCisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdCksIGFkZFRvR3JhcGgoQ3JlYXRlQXN5bmNHZW5lcmF0b3IsIGNhbGxlZSkpOworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3T2JqZWN0PigpOwogICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IDcxZWM3ZjE2Mjg0OTVlYjJjODQwNDU5NTE3ODU3MTAyZjFk
OGU0MGEuLmQzMzc2YmQyMWNhZTg5M2ZlZWY3MTgwOGEwMGU4MWU3N2M1NzVkYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTExOCw2ICsx
MTgsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6
CiAgICAgY2FzZSBvcF9jcmVhdGVfcHJvbWlzZToKICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0
b3I6CisgICAgY2FzZSBvcF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yOgogICAgIGNhc2Ugb3BfYml0
bm90OgogICAgIGNhc2Ugb3BfYml0YW5kOgogICAgIGNhc2Ugb3BfYml0b3I6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDlhOGFkMDdiMzFhODhiZWE2Zjli
NGQ3YTlhOTJlMWRkYmY4ZWQ1NDcuLmM3YmEwMzFlYjUxNWFkNjRmOWMzNzQwZTNkZjQ3OWExM2M4
NTdmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02
NjksNiArNjY5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgor
ICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAg
IGNhc2UgU3RyaW5nVmFsdWVPZjoKICAgICBjYXNlIE9iamVjdEtleXM6CkBAIC0xNTY4LDYgKzE1
NjksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
IGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0Fz
eW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgog
ICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBkMmY3YmE0NzhkOGVjODM0Y2QyNTA4
ZDUzYmQ5ZmExNGQyODAwOTBlLi5lZjY4ZmQ1NGY0ZTRkN2FhZDU2ODU4MTBjMzM0ODQxMmUwYTA5
OGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTksNiArNTksNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1By
b21pc2U6CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRv
cjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5l
d1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZjNmNWNiNjBkODhhYzVjNjQ1MmRkZjE1YmU0
YzQ1ZGZlMTA4ZDlhNy4uNTljY2M4MTA3NWZhMDMwMmIyMjYwZmE0YmUxM2I1MDRkNzM5OTNjNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTc3OCwyNiArNzc4LDQxIEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1Bo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsKLSAgICAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNl
ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGdW5j
dGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblN0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFs
T2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld0dl
bmVyYXRvcihtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlR2Vu
ZXJhdG9yOgorICAgICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjogeworICAgICAg
ICAgICAgICAgIGF1dG8gZm9sZENvbnN0YW50ID0gWyZdIChOb2RlVHlwZSBuZXdPcCwgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3Jh
cGgubV92bSwgYmFzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRnVuY3Rp
b25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gY2xhc3NJbmZvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9
PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlk
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZy
ZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb05ld0ludGVybmFsRmllbGRPYmplY3QobmV3T3AsIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgICAg
ICAgICAgICAgICAgICBmb2xkQ29uc3RhbnQoTmV3R2VuZXJhdG9yLCBKU0dlbmVyYXRvcjo6aW5m
bygpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBD
cmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgICAgICAgICAgICAgZm9sZENvbnN0YW50KE5l
d0FzeW5jR2VuZXJhdG9yLCBKU0FzeW5jR2VuZXJhdG9yOjppbmZvKCkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggYzk3MzNk
MDA5NmQ2MmVmMmQ1ZGVjMTc4M2VjNzY5YmVmMjAyNzU2Ny4uYzI2MTBiNmM3OGFlMzA3ZmI3M2Y2
N2I3MDRjY2E3NWZmNDQyOTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcApAQCAtMzM0LDYgKzMzNCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAg
IGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0zNDMsNiArMzQ0LDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3
UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJh
dG9yOgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAg
ICAgY2FzZSBTcHJlYWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCBkMDY0MzIyNWFjYmZiNDRkNmYwMWYxZjQ3ZmYxYWM1OTc4OTNlNWU1Li5iZjM4
NjY3YWFiN2Q5NGQ2MDJjZjgyZTI4MmU2Y2RkYTFhMzA1ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2NDgsNiArMTY0OCw3IEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6
CisgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgR2V0QnV0
dGVyZmx5OiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQwNiw2ICsyNDA3LDcgQEAgY2xhc3MgRml4dXBQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNl
IE5ld1Byb21pc2U6CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICBjYXNlIE5l
d0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgY2FzZSBE
ZWxldGVCeUlkOgogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAppbmRleCAyZDU1MjRhNmJjOThiMDI0ODNmY2FhZWZmNmJmOTUwNWNhZDU1YTVh
Li40MGRkZGE4MTE1Njg5ZjcwZmM0N2Q5MjViNjE4YWVhNDYwMWJkZTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtNzY3LDEwICs3NjcsMTAgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICBtX29wSW5mbzIgPSBpbnRlcm5hbDsKICAgICB9CiAKLSAgICB2b2lkIGNvbnZlcnRU
b05ld0dlbmVyYXRvcihSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICB2b2lkIGNv
bnZlcnRUb05ld0ludGVybmFsRmllbGRPYmplY3QoTm9kZVR5cGUgbmV3T3AsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRl
R2VuZXJhdG9yKTsKLSAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3R2VuZXJhdG9yKTsK
KyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRlQXN5bmNHZW5lcmF0b3IgfHwgbV9vcCA9PSBD
cmVhdGVHZW5lcmF0b3IpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhuZXdPcCk7CiAg
ICAgICAgIGNoaWxkcmVuLnJlc2V0KCk7CiAgICAgICAgIG1fb3BJbmZvID0gc3RydWN0dXJlOwog
ICAgICAgICBtX29wSW5mbzIgPSBPcEluZm9XcmFwcGVyKCk7CkBAIC0xOTE5LDYgKzE5MTksNyBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5l
d1Byb21pc2U6CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICBjYXNlIE5ld0Fz
eW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCmluZGV4IDFlYmRmZDEzYTk1YjU1NDI0YmM2MWMzM2M5NjRiNWQ3NTJlNGE0
MzIuLjU2ZGE2NzI0NmRkNzM4Yzg5YmEzYWMxZmFjZDBjYzcyNmUyNzU0NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRK
UykgLyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5n
IGl0IGFueXdheS4gKi8gXAogICAgIG1hY3JvKENyZWF0ZVByb21pc2UsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDcmVhdGVHZW5lcmF0b3IsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDcmVhdGVBc3luY0dlbmVyYXRv
ciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldENhbGxl
ZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0Q2FsbGVlLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJ
bnQzMikgXApAQCAtMzQzLDYgKzM0NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhOZXdPYmplY3QsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1By
b21pc2UsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvciwgTm9kZVJlc3Vs
dEpTKSBcCisgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0b3IsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKE5ld0FycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1h
Y3JvKE5ld0FycmF5V2l0aFNwcmVhZCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhOZXdBcnJheVdpdGhTaXplLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCBjMzE1YzI2NTI3Yzc2MmIxM2MwZTZlMzNjMzQ5YzJiY2I2NDQ0OWFiLi5mYTk0NTlkYjY5MGU1
NThiYzJiYzk5Y2VhNjg0YzM4MzA3NzFlN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQwOCw2ICs0MDgsMTYgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBjb25zdHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTR2VuZXJhdG9yOjpjcmVh
dGUodm0sIHN0cnVjdHVyZSkpOwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlQXN5bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0
b3IsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBu
dWxscHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5hc3luY0dlbmVyYXRvclN0cnVjdHVy
ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDc0NGE1MGRi
ZmVmODI3NWUyOWFmNzI5NjljNjg2NGEzNjYyYzU3MDIuLmU5ZWZlMDhlMjE1NzRhZWJlNjU2NTc5
ZDQ0M2M5NDc4YjAxMjdhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCkBAIC01MSw2ICs1MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVUaGlzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWluCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZShFeGVjU3RhdGUqLCBKU09iamVj
dCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZShFeGVjU3RhdGUqLCBK
U09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBK
U09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggYzNkOTIxY2Q3MWE1ODM2NDc5MGExY2NlYTk5NDQ4Y2VmMjRmN2Y0
Ny4uYjhjYjI4Y2Q0NmFhMDMzYmJmOWUzOWU5MTM4MWZlYWVlNmM2ODM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKQEAgLTEwMTgsNiArMTAxOCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRv
cjoKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNH
ZW5lcmF0b3I6CisgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCA3ZDhlZWU4NGRmYTc3Y2M0N2ZlYjE5NTBhZWUxZDYzYmRhNzg1YzE2Li45M2IxNDgyMWZk
MjAxNTE4YTU0MDBlOTU0NGQ2Y2I5MGRjMWVkMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTgwLDYgKzE4MCw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlz
ZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJh
dG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBj
YXNlIEdldENhbGxlZToKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5l
d0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJy
YXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDUxYmEzNDgyNTE0ZWFjNGFlNzc4ZGYyNjM0NjQ3MmM3ZDljNzIyNzQuLjhhZjdkODU5ZjJh
MjYzY2Y0ODg3Y2QxMTFkNmUzZDdmMzRkZTUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMjc0Myw3ICsxMjc0Myw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUqIG5vZGUpCisKK3RlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4KK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24p
CiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCkBAIC0xMjc2OSwyNSArMTI3NzEsMzMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcihOb2RlKiBub2RlKQog
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgcmFyZURhdGFHUFIpKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rp
b25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIp
KTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlNHZW5lcmF0b3I6OmluZm8oKSksIHNj
cmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlNDbGFzczo6aW5mbygp
KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKEND
YWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOwogICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2Jq
ZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRy
KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwotICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBzdHJ1Y3R1
cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNp
emVvZihKU0dlbmVyYXRvcikpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVsbCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pKSkpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVl
KGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0
ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVk
VmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCkpKSk7Ci0gICAgbV9qaXQuc3Rv
cmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcykpKSk7Ci0gICAg
bV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVy
bmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUp
KSkpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0NsYXNzPihyZXN1
bHRHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIs
IHNsb3dDYXNlcywgc2l6ZW9mKEpTQ2xhc3MpKTsKKyAgICBhdXRvIGluaXRpYWxWYWx1ZXMgPSBK
U0NsYXNzOjppbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgSlNDbGFzczo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAgICAg
bV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoaW5pdGlhbFZhbHVlc1tpbmRleF0sIENDYWxsSGVscGVy
czo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0
T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2ppdC52
bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkpKTsK
KyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb24sIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVHZW5l
cmF0b3IoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVj
dDxKU0dlbmVyYXRvcj4obm9kZSwgb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKTsKK30KKwordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKE5vZGUqIG5vZGUp
Cit7CisgICAgY29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVyYXRv
cj4obm9kZSwgb3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOworfQorCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3T2JqZWN0KE5vZGUqIG5vZGUpCiB7CiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTEyODQ0LDcgKzEyODU0LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1Byb21pc2UoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0
b3IoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJh
dGlvbj4KK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24pCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CkBAIC0xMjg1OCwx
OSArMTI4NjksMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihO
b2RlKiBub2RlKQogCiAgICAgRnJvemVuVmFsdWUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRy
dXN0ZWRJbW1QdHIobnVsbHB0cik7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPEpTR2VuZXJhdG9yPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0
dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2Vu
ZXJhdG9yKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdWxsKCksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zm
c2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6OlBvbHlQcm90bykpKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdElt
cGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVy
YXRvcjo6RmllbGQ6OlN0YXRlKSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1Vu
ZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRW
YWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkpKTsKLSAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0
R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTQ2xhc3M+KHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQ
Uiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNDbGFzcykpOworICAgIGF1dG8gaW5pdGlhbFZhbHVlcyA9
IEpTQ2xhc3M6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBKU0NsYXNzOjpudW1iZXJPZkludGVybmFsRmllbGRzOyArK2luZGV4KQorICAgICAg
ICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShpbml0aWFsVmFsdWVzW2luZGV4XSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZz
ZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0
LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIGNvbXBp
bGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTR2VuZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdH
ZW5lcmF0b3IpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXN5bmNHZW5l
cmF0b3IoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxK
U0FzeW5jR2VuZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdBc3luY0dlbmVyYXRvcik7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1ByaW1pdGl2ZShOb2RlKiBub2RlKQogewog
ICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggM2VlN2FjZWVkNjdl
YmQyMWQ5ZTE2ZTZiYmQzNzAyODhhZTIxNTgyYS4uZTA5NDA2Y2ZiZWJlOTcxZWYzOGYwODgwNTMz
ZTZlM2QzOWQ5YmEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtMTQ3NSw5ICsxNDc1LDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVh
dGVQcm9taXNlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSop
OworICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1Byb21pc2UoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlTmV3QXN5bmNHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvUHJpbWl0aXZl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWUoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWlsKE5vZGUqKTsKQEAgLTE0ODcs
NiArMTQ4OSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHJv
ZmlsZVR5cGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KE5vZGUq
KTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4K
KyAgICB2b2lkIGNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqLCBPcGVyYXRp
b24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4K
KyAgICB2b2lkIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqLCBPcGVyYXRpb24p
OworCiAgICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhH
UFJSZWcpOwogICAgIHZvaWQgYmxlc3NCb29sZWFuKEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4NDMw
NTcwOGVmMmIyNzczZGIyZTUyYWY2M2UwMjMzMzgxYWE5ZGU2Li4wMWI2ZjVhZjY0NzE5ODZkOWQx
OWRhNzU0NjdhMTU5ZDA1NTY4YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMxNjIsNiArMzE2MiwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGls
ZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBjb21waWxlTmV3T2JqZWN0KG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTMxNzcsNiArMzE4MiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgTmV3
QXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAg
ICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGJkOWMzYmJm
ODM0YTdkY2QzMDIwZjRhMjU5ZTZlZmU4MjYzZWZlODcuLjE1NjBjNjg4ZGFiYTQxMmZkZjZmMTdl
OGRkZjYyNzdhZTI2YTcwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzQ4OCw2ICszNDg4LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVy
YXRvcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBDcmVhdGVBc3lu
Y0dlbmVyYXRvcjogeworICAgICAgICBjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3Iobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6IHsK
ICAgICAgICAgY29tcGlsZU5ld09iamVjdChub2RlKTsKQEAgLTM1MDQsNiArMzUwOSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5l
d0FzeW5jR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IEdldENhbGxlZTogewogICAgICAgICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNTQ5MTdkYjM0OTFlMmQ3YTkyOWI1NzFj
YzczNjEyYmFkMTc3NzU4NC4uNzU4NjdiZjc3NWY5NTJkZTA5ZTU1ZTI5MzM0NTJhOTZmYjQyNDk2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMyMyw2ICszMjMsNyBAQCBjbGFzcyBTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNl
IE5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICAgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yOgorICAgICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAg
ICAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNp
emU6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGVhZDI1OWEwMTQ3NTJlMmMzNjky
NmQ4ZDE2YzM1OGFmMTY0ZjBiMzkuLmZhNjA5OTEwMDU0YzdiMmE5YjJmYzMzNGRlODMxOWIxODBl
OWM0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTc2LDYgKzc2LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAg
IGNhc2UgTmV3R2VuZXJhdG9yOgorICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgY2Fz
ZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJh
eToKQEAgLTM4Miw2ICszODMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNl
OgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0
b3I6CiAgICAgY2FzZSBEYXRhVmlld0dldEludDoKICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6
CiAgICAgY2FzZSBEYXRhVmlld1NldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBhMTQwYjBiNDQ5MjcyZjZjMGQzNDI5NzVjNjdmMWUwYWI1
ZjE5YjYxLi44ZDcyMzVkMjg1NjNhZWJjYWI4MmYzNjhmYmUxZGMzZjRlMTY1MzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03Niw2ICs3
Niw3IEBACiAjaW5jbHVkZSAiSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJ
VFN1YkdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKQEAg
LTEwNTIsNiArMTA1Myw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yOgogICAgICAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcigpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CisgICAgICAgICAgICBj
b21waWxlTmV3QXN5bmNHZW5lcmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdTdHJpbmdPYmplY3Qo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3Myw2ICsxMDc3LDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgICAgICBjb21w
aWxlQ3JlYXRlR2VuZXJhdG9yKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
cmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVBc3luY0dlbmVy
YXRvcigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3ByZWFkOgogICAgICAg
ICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01OTE5LDMxICs1
OTI2LDQwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4KKyAgICB2b2lkIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0KE9wZXJhdGlvbiBvcGVyYXRpb24pCiAgICAgewogICAgICAgICBMQmFzaWNCbG9jayBz
bG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd0Nhc2UpOwogCi0gICAgICAgIExWYWx1
ZSBnZW5lcmF0b3IgPSBhbGxvY2F0ZU9iamVjdDxKU0dlbmVyYXRvcj4obV9ub2RlLT5zdHJ1Y3R1
cmUoKSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICBtX291dC5zdG9yZTY0
KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSksIGdlbmVyYXRvciwg
bV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90byldKTsKLSAgICAgICAg
bV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkp
LCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZp
ZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsK
LSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6Ok5leHQpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNH
ZW5lcmF0b3I6OkZpZWxkOjpUaGlzKV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hl
YXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIExWYWx1ZSBv
YmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0NsYXNzPihtX25vZGUtPnN0cnVjdHVyZSgpLCBtX291
dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIGF1dG8gaW5pdGlhbFZhbHVlcyA9IEpT
Q2xhc3M6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgSlNDbGFzczo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAg
ICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoaW5p
dGlhbFZhbHVlc1tpbmRleF0pKSwgb2JqZWN0LCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxfaW50ZXJuYWxGaWVsZHNbaW5kZXhdKTsKICAgICAgICAgbXV0YXRvckZlbmNlKCk7Ci0g
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2VuZXJhdG9y
KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihvYmpl
Y3QpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRl
cihtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX25vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9p
bnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbiksIG1fY2FsbEZyYW1lLCBmcm96
ZW5Qb2ludGVyKG1fZ3JhcGguZnJlZXplU3Ryb25nKG1fbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkp
KSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEpTVmFsdWUobV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAK
KyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgY29tcGlsZU5l
d0ludGVybmFsRmllbGRPYmplY3Q8SlNHZW5lcmF0b3I+KG9wZXJhdGlvbk5ld0dlbmVyYXRvcik7
CisgICAgfQorCisgICAgdm9pZCBjb21waWxlTmV3QXN5bmNHZW5lcmF0b3IoKQorICAgIHsKKyAg
ICAgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVyYXRvcj4ob3Bl
cmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU5ld1N0
cmluZ09iamVjdCgpCiAgICAgewogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fbm9kZS0+c3RydWN0dXJlKCk7CkBAIC02MzYwLDcgKzYzNzYsOCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9p
ZCBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNz
LCB0eXBlbmFtZSBPcGVyYXRpb24+CisgICAgdm9pZCBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVs
ZE9iamVjdChPcGVyYXRpb24gb3BlcmF0aW9uKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKIApAQCAtNjM4NSwyNCArNjQwMiwyMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQoc3RydWN0dXJlKSwgcmFyZWx5
KHNsb3dDYXNlKSwgdXN1YWxseShoYXNTdHJ1Y3R1cmUpKTsKIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhoYXNTdHJ1Y3R1cmUsIGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSk7Ci0gICAgICAgIG1fb3V0
LmJyYW5jaChtX291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1
Y3R1cmVfY2xhc3NJbmZvKSwgbV9vdXQuY29uc3RJbnRQdHIoSlNHZW5lcmF0b3I6OmluZm8oKSkp
LCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1f
aGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksIG1fb3V0LmNvbnN0SW50UHRyKEpTQ2xhc3M6Omlu
Zm8oKSkpLCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2FzZSkp
OwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSwgZmFzdEFs
bG9jYXRpb25DYXNlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0Lmxv
YWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3QpLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpKSwgdXN1YWxseShmYXN0QWxsb2NhdGlvbkNhc2UpLCByYXJlbHko
c2xvd0Nhc2UpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhmYXN0QWxsb2NhdGlvbkNhc2Us
IHNsb3dDYXNlKTsKLSAgICAgICAgTFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0PEpT
R2VuZXJhdG9yPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAg
ICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5h
bEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJv
dG8pXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRv
clN0YXRlOjpJbml0KSkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6U3RhdGUpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBt
X2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcyldKTsKLSAgICAgICAgbV9vdXQu
c3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSks
IGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmll
bGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKV0pOwor
ICAgICAgICBMVmFsdWUgb2JqZWN0ID0gYWxsb2NhdGVPYmplY3Q8SlNDbGFzcz4oc3RydWN0dXJl
LCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIGF1dG8gaW5pdGlhbFZhbHVl
cyA9IEpTQ2xhc3M6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgSlNDbGFzczo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkK
KyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNv
ZGUoaW5pdGlhbFZhbHVlc1tpbmRleF0pKSwgb2JqZWN0LCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbaW5kZXhdKTsKICAgICAgICAgbXV0YXRvckZlbmNl
KCk7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2Vu
ZXJhdG9yKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hv
cihvYmplY3QpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSkpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
biksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCkpKTsKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNjQxMSw2ICs2NDI2LDE2IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKKyAgICB2
b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgY29tcGlsZUNyZWF0
ZUludGVybmFsRmllbGRPYmplY3Q8SlNHZW5lcmF0b3I+KG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRv
cik7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IoKQorICAg
IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVy
YXRvcj4ob3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOworICAgIH0KKwogICAgIHZvaWQg
Y29tcGlsZVNwcmVhZCgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS0+b3Ao
KSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCBiYmZjZmUzMGZhMzYwZmRmNTNkODM3YTdiOTdhNTQyMzY3ZTI5NWFmLi5lZmFkNTVjMWU0
MjAyM2MwYTBhNjNiMzE1ODNlOGFhZmJmZDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0zMTMsNiArMzEzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAgREVGSU5F
X1NMT1dfT1AobmV3X3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9nZW5l
cmF0b3IpCisgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9hc3luY19nZW5lcmF0b3IpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKG5ld19nZW5lcmF0b3IpCiAgICAgICAgIERFRklORV9TTE9X
X09QKHBvdykKIApAQCAtNTgzLDYgKzU4NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV90aGlzKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX2dlbmVyYXRvcikKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX2FzeW5jX2dlbmVyYXRvcikKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AodG9fdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1df
T1AodG9fcHJpbWl0aXZlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19udW1i
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAz
YzNlMzYyZTU3NTIzOTdjOTdmMTZjZDM5ZjEwMzc0MTA2NzFiY2Y1Li42NTZlN2RkODZhYjIzYzk2
OGZlOWI3ODFlZGFhYzRhNWE1ZmJiZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTE0MDIsNiArMTQwMiwxNCBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cgogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwog
fQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisg
ICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKK30KKwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogcmVnZXhwUHRyKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggMWI3NDliMjMwZjgwMmQzZmM0MmZjZmExNjA0NmJhODlmMzBjOGM1Yi4uZDI1MzIzMTRh
ZjczZDkyNTgwODQxMjBmNmE1ZTQ5NDE3ZmVjZWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTQyMiw2ICs0MjIsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdQcm9taXNlKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVS
TkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvcihFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVS
TkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUq
LCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBVbnVzZWRQdHIgSklUX09QRVJBVElPTiBvcGVyYXRp
b25IYW5kbGVUcmFwcyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3coRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCAwZmVhMDk2MDFkMjcxYjZlZjIxYzVlOWI0YjBlNDJjNGM1NmI0MGQ0Li4y
ZDlhMTcyNDYyYWNlOWZlM2E2MWE5ZjBjZTBjYzI2YjQ5NmZlNDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDk2
LDYgKzE0OTYsNyBAQCBzbG93UGF0aE9wKGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogc2xvd1Bh
dGhPcChjcmVhdGVfdGhpcykKIHNsb3dQYXRoT3AoY3JlYXRlX3Byb21pc2UpCiBzbG93UGF0aE9w
KGNyZWF0ZV9nZW5lcmF0b3IpCitzbG93UGF0aE9wKGNyZWF0ZV9hc3luY19nZW5lcmF0b3IpCiBz
bG93UGF0aE9wKGRlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZGVmaW5lX2Rh
dGFfcHJvcGVydHkpCiBzbG93UGF0aE9wKGVudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4
IDExMjNkMTc5ZjYzOTA2MjMxNWU1NDI0MDRhMWU1MjViNDg3ZTZmNWYuLjUyNjFmMzIzMDBiYzFj
NmJkNmQzOTliN2ExZWVlNDNhM2QxZGNhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzMxLDYgKzMzMSwyOCBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVyYXRvcikKICAgICBSRVRVUk4ocmVzdWx0
KTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3Ip
Cit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlQXN5
bmNHZW5lcmF0b3I+KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3JBc09iamVj
dCA9IGFzT2JqZWN0KEdFVChieXRlY29kZS5tX2NhbGxlZSkuanNWYWx1ZSgpKTsKKworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgbnVsbHB0ciwgY29uc3RydWN0b3JBc09iamVjdCwgZ2xvYmFsT2JqZWN0LT5h
c3luY0dlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBK
U0FzeW5jR2VuZXJhdG9yKiByZXN1bHQgPSBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0
cnVjdHVyZSk7CisKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8
SlNGdW5jdGlvbio+KHZtLCBjb25zdHJ1Y3RvckFzT2JqZWN0KTsKKyAgICBpZiAoY29uc3RydWN0
b3IgJiYgY29uc3RydWN0b3ItPmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKKyAgICAgICAg
V3JpdGVCYXJyaWVyPEpTQ2VsbD4mIGNhY2hlZENhbGxlZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4
ZWMpLm1fY2FjaGVkQ2FsbGVlOworICAgICAgICBpZiAoIWNhY2hlZENhbGxlZSkKKyAgICAgICAg
ICAgIGNhY2hlZENhbGxlZS5zZXQodm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBjb25zdHJ1Y3Rvcik7
CisgICAgICAgIGVsc2UgaWYgKGNhY2hlZENhbGxlZS51bnZhbGlkYXRlZEdldCgpICE9IEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpICYmIGNhY2hlZENhbGxlZS5nZXQoKSAhPSBj
b25zdHJ1Y3RvcikKKyAgICAgICAgICAgIGNhY2hlZENhbGxlZS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKTsKKyAgICB9CisgICAgUkVU
VVJOKHJlc3VsdCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCmluZGV4IDdmOTBiMTQwYjg5NzkwZmUxNGM0MzA3ZjFhMjBmNzRmZDlk
M2ZiYjEuLmQ1ZDZmN2UyNDAwZGI3YzkwZWQxZjM2OWViZjgzMjc4MjZkOTRhMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0zODUs
NiArMzg1LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc192YXJfc2NvcGUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lz
dGluZ19mdW5jX2RlY2xfaW5fZXZhbCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9wcm9taXNlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRl
X2dlbmVyYXRvcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3lu
Y19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVz
dCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE3Y2NjNmMzNTg1YmI4YWM3YzM4ZTgzNTBmMDljNWM3YzUyZDUwOWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5j
R2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNHZW5lcmF0b3I6OnNf
aW5mbyA9IHsgIkFzeW5jR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FzeW5jR2VuZXJhdG9yKSB9OworCitKU0FzeW5jR2Vu
ZXJhdG9yKiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBKU0FzeW5jR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0FzeW5jR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNBc3luY0dlbmVyYXRv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBnZW5lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTQXN5bmNHZW5lcmF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQXN5bmNHZW5lcmF0b3JUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTQXN5bmNHZW5lcmF0b3I6OkpTQXN5bmNHZW5lcmF0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBKU0FzeW5jR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGF1dG8gdmFsdWVzID0gaW5p
dGlhbFZhbHVlcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bWJl
ck9mSW50ZXJuYWxGaWVsZHM7ICsraW5kZXgpCisgICAgICAgIGludGVybmFsRmllbGQoaW5kZXgp
LnNldCh2bSwgdGhpcywgdmFsdWVzW2luZGV4XSk7Cit9CisKK3ZvaWQgSlNBc3luY0dlbmVyYXRv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBc3luY0dlbmVyYXRvcio+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5l
cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZTU4MDRhMzk3MzA3MjdkOTg5MGFjYjg3MDU0YTdlZTRlYTk5
ZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
c3luY0dlbmVyYXRvci5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNBc3luY0dlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDg+IHsKK3B1YmxpYzoK
KyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw4PjsKKworICAgIC8v
IEpTQXN5bmNHZW5lcmF0b3IgaGFzIG9uZSBpbmxpbmUgc3RvcmFnZSBzbG90LCB3aGljaCBpcyBw
b2ludGluZyBpbnRlcm5hbEZpZWxkKDApLgorICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNp
emUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5lQ2FwYWNpdHkgPT0gMFUpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEpTQXN5bmNHZW5lcmF0b3IpOworICAgIH0KKworICAgIGVudW0gY2xhc3Mg
QXN5bmNHZW5lcmF0b3JTdGF0ZSA6IGludDMyX3QgeworICAgICAgICBDb21wbGV0ZWQgPSAtMSwK
KyAgICAgICAgRXhlY3V0aW5nID0gLTIsCisgICAgICAgIFN1c3BlbmRlZFN0YXJ0ID0gLTMsCisg
ICAgICAgIFN1c3BlbmRlZFlpZWxkID0gLTQsCisgICAgICAgIEF3YWl0aW5nUmV0dXJuID0gLTUs
CisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2Vu
ZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykgPT0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKTsK
KworICAgIGVudW0gY2xhc3MgQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIDogaW50MzJfdCB7
CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBZaWVsZCA9IC0xLAorICAgICAgICBBd2FpdCA9
IC0yCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50MzJfdCB7CisgICAgICAg
IC8vIEZJWE1FOiBKU0FzeW5jR2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IFBvbHlQcm90bywgc2lu
Y2UgZ2VuZXJhdG9yIHRlbmRzIHRvIGJlIGNyZWF0ZWQgd2l0aCBwb2x5IHByb3RvIG1vZGUuCisg
ICAgICAgIC8vIFdlIHJlc2VydmUgdGhlIGZpcnN0IGludGVybmFsIGZpZWxkIGZvciBQb2x5UHJv
dG8gcHJvcGVydHkuIFRoaXMgb2Zmc2V0IGlzIGlkZW50aWNhbCB0byBKU0ZpbmFsT2JqZWN0J3Mg
Zmlyc3QgaW5saW5lIHN0b3JhZ2Ugc2xvdCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIFBvbHlQcm90
by4KKyAgICAgICAgUG9seVByb3RvID0gMCwKKyAgICAgICAgU3RhdGUsCisgICAgICAgIE5leHQs
CisgICAgICAgIFRoaXMsCisgICAgICAgIEZyYW1lLAorICAgICAgICBTdXNwZW5kUmVhc29uLAor
ICAgICAgICBRdWV1ZUZpcnN0LAorICAgICAgICBRdWV1ZUxhc3QsCisgICAgfTsKKyAgICBzdGF0
aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gOCk7CisgICAgc3RhdGljIHN0ZDo6
YXJyYXk8SlNWYWx1ZSwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz4gaW5pdGlhbFZhbHVlcygpCisg
ICAgeworICAgICAgICByZXR1cm4geyB7CisgICAgICAgICAgICBqc051bGwoKSwKKyAgICAgICAg
ICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1
c3BlbmRlZFN0YXJ0KSksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAgICAgICAg
anNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246
Ok5vbmUpKSwKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICAgICAganNOdWxsKCksCisg
ICAgICAgIH0gfTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNBc3luY0dlbmVyYXRvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKK3Byb3RlY3RlZDoKKyAgICBKU0FzeW5jR2VuZXJhdG9yKFZNJiwgU3RydWN0dXJlKik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbi5oCmluZGV4IDg2YmEzNzFiMGQxMWM2MGQ3OGEyMTg5MjIyMGM2ZDJiM2Qy
OWE5MGYuLjBlYmYwNzZjMTkyNGJjOWMxNDRkYzJkYzNhYTA5Nzc0Yzc1YjgxMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oCkBAIC01NiwxOSArNTYsNiBAQCBjbGFzcyBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25U
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBB
c3luY0dlbmVyYXRvclN0YXRlIDogaW50MzJfdCB7Ci0gICAgICAgIENvbXBsZXRlZCA9IC0xLAot
ICAgICAgICBFeGVjdXRpbmcgPSAtMiwKLSAgICAgICAgU3VzcGVuZGVkU3RhcnQgPSAtMywKLSAg
ICAgICAgU3VzcGVuZGVkWWllbGQgPSAtNCwKLSAgICAgICAgQXdhaXRpbmdSZXR1cm4gPSAtNQot
ICAgIH07Ci0gICAgCi0gICAgZW51bSBjbGFzcyBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24g
OiBpbnQzMl90IHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIFlpZWxkID0gLTEsCi0gICAg
ICAgIEF3YWl0ID0gLTIKLSAgICB9OwogcHJpdmF0ZToKICAgICBKU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcAppbmRleCA3
NThiNzA3ZTQ1YjhlYWIzMjk2NmViNGM4YTVkNTA3YTBhODk3OWFjLi41MTQyZDdmODdiZWYwYmNi
M2VlOWI1NmI1M2Q1ZTk2NjgxY2MzZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3IuY3BwCkBAIC01MywxMSArNTMsOSBAQCBKU0dlbmVyYXRvcjo6SlNH
ZW5lcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHZvaWQgSlNHZW5lcmF0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlBvbHlQcm90
bykpLnNldCh2bSwgdGhpcywganNOdWxsKCkpOwotICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEZpZWxkOjpTdGF0ZSkpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oR2VuZXJhdG9yU3RhdGU6OkluaXQpKSk7Ci0gICAgaW50ZXJuYWxGaWVs
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6Ok5leHQpKS5zZXQodm0sIHRoaXMsIGpzVW5k
ZWZpbmVkKCkpOwotICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxk
OjpUaGlzKSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBpbnRlcm5hbEZpZWxk
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6RnJhbWUpKS5zZXQodm0sIHRoaXMsIGpzVW5k
ZWZpbmVkKCkpOworICAgIGF1dG8gdmFsdWVzID0gaW5pdGlhbFZhbHVlcygpOworICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9mSW50ZXJuYWxGaWVsZHM7ICsraW5k
ZXgpCisgICAgICAgIGludGVybmFsRmllbGQoaW5kZXgpLnNldCh2bSwgdGhpcywgdmFsdWVzW2lu
ZGV4XSk7CiB9CiAKIHZvaWQgSlNHZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvci5oCmluZGV4IDdiNDRlNzc2YWQwMGE5NDA1NjViNmQwNzdmZGQ2N2QzMWQ1YmQy
MmMuLjkwODFjM2M4Zjg0YTNhMzY2M2NhMjllYWQxNDRiN2ZiNjFiMjY2MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApAQCAtNzIsNiArNzIsMTYgQEAg
Y2xhc3MgSlNHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bDw1PiB7CiAgICAgICAgIEZyYW1lLAogICAgIH07CiAgICAgc3RhdGljX2Fzc2VydChudW1iZXJP
ZkludGVybmFsRmllbGRzID09IDUpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51
bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgICAgICBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLAorICAgICAgICAgICAganNV
bmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1Vu
ZGVmaW5lZCgpLAorICAgICAgICB9IH07CisgICAgfQogCiAgICAgc3RhdGljIEpTR2VuZXJhdG9y
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDBkNTk4OTRkZjZi
NmVlZDNhZTFmMzgzNGQyZDliOTcyY2ZkYzRjNWUuLmEyMGIxNjM4NGZkNDljOTc0OWY5NzYyNDQ3
NTdlOGNjN2NjYTllZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTgzMyw2ICs4MzMsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25z
dHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFs
TmFtZQogCiAgICAgbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2FzeW5jR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgbV9hc3luY0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAg
IG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0FzeW5jR2VuZXJhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fYXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuZ2V0
KCkpKTsKICAgICAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3Rv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3Rvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtMTc2OSw2
ICsxNzcwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZSk7CiAgICAgdGhpc09iamVjdC0+
bV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlXaXRoR3Jv
dXBzU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDFkMmJjMmRhMjE0MTZjYmVlNWY5MTA4MDJmN2Y0M2M4YmIwMGYyMWMu
LmJlMWJkMjUyNzY5NjBiNDBhMzgwMjZjMmQwYjlkNTY4YzU0YmJmOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzc1LDYgKzM3NSw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yU3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5bmNHZW5lcmF0b3JTdHJ1
Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1faXRl
cmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlXaXRoR3JvdXBzU3RydWN0dXJlOwpAQCAtNzU0LDYgKzc1
NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9t
YXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBn
ZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IGRhYzVlNjlkYTIwNDUx
YjkwZmQ0OGIwN2E3MGMxMTIyM2Y1NzA3NmEuLmU5MDg1M2QwNzcxN2Y5MTI0MjNjNDY5YTA5YmU3
M2FlYjQ0NWQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApA
QCAtOTcsNiArOTcsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlND
OjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFJlZ0V4cE9iamVjdFR5cGUpCiAgICAgQ0FTRShQcm94
eU9iamVjdFR5cGUpCiAgICAgQ0FTRShKU0dlbmVyYXRvclR5cGUpCisgICAgQ0FTRShKU0FzeW5j
R2VuZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTUHJvbWlzZVR5cGUpCiAgICAgQ0FTRShKU01hcFR5
cGUpCiAgICAgQ0FTRShKU1NldFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oCmluZGV4IDAxZTcwMjI3MzQ3NjRiMThkOWUzMWE5MWVlOGNkNjBhOTk1OTI1ZWEuLjBlODE5
MDVkYmQzNmM5Mzk4OGNmYWVkYWZlOTkyYmM2OTM1NmQyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0xMDksNiArMTA5LDcgQEAgZW51bSBKU1R5cGUgOiB1aW50
OF90IHsKICAgICBSZWdFeHBPYmplY3RUeXBlLAogICAgIFByb3h5T2JqZWN0VHlwZSwKICAgICBK
U0dlbmVyYXRvclR5cGUsCisgICAgSlNBc3luY0dlbmVyYXRvclR5cGUsCiAgICAgSlNQcm9taXNl
VHlwZSwKICAgICBKU01hcFR5cGUsCiAgICAgSlNTZXRUeXBlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379527</attachid>
            <date>2019-09-24 23:56:27 -0700</date>
            <delta_ts>2019-09-25 17:47:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201498-20190924235626.patch</filename>
            <type>text/plain</type>
            <size>123772</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YWFiZDIzNzY2NmEyNjZhOTQzNTMxNmM2NzQ4YzNkMjdmMTUwZmIwLi5jYjg1OTE3Yjc1NTM5NmE3
NWE0ZmVkOWVmNDNiNjYwN2NkYTlmN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMTktMDktMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBc3luY0dlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5hbCBm
aWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MTQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW50cm9kdWNlcyBKU0FzeW5jR2VuZXJhdG9yLiBXZSBkbyB0aGUgc2FtZSB0aGlu
ZyB0byBKU0dlbmVyYXRvciB0byBpbXByb3ZlIGFzeW5jIGdlbmVyYXRvciBwZXJmb3JtYW5jZS4K
KyAgICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgSlNHZW5lcmF0b3IncyBjb2RlIHRvIHNoYXJl
IGl0IHdpdGggSlNBc3luY0dlbmVyYXRvciwgZS5nLiBKU0dlbmVyYXRvcjo6aW5pdGlhbFZhbHVl
cyBldGMuCisgICAgICAgIEl0IGltcHJvdmVzIEpldFN0cmVhbTIvYXN5bmMtZnMgYnkgfjEwJS4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUXVldWVJ
c0VtcHR5KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0b3JRdWV1ZUVucXVl
dWUpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvclF1ZXVlRGVxdWV1ZSk6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmlzRXhlY3V0aW9uU3RhdGUpOgorICAgICAgICAoZ2xv
YmFsUHJpdmF0ZS5pc1N1c3BlbmRZaWVsZFN0YXRlKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUu
YXN5bmNHZW5lcmF0b3JSZWplY3QpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVy
YXRvclJlc29sdmUpOgorICAgICAgICAoYXN5bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQpOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvcllpZWxkKToKKyAgICAgICAgKGdsb2Jh
bFByaXZhdGUuZG9Bc3luY0dlbmVyYXRvckJvZHlDYWxsKToKKyAgICAgICAgKGdsb2JhbFByaXZh
dGUuYXN5bmNHZW5lcmF0b3JSZXN1bWVOZXh0KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5
bmNHZW5lcmF0b3JFbnF1ZXVlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpm
aW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEFz
eW5jR2VuZXJhdG9yRmllbGRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDcmVhdGVBc3luY0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNBc3luY0dlbmVyYXRvcik6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmFzeW5jR2VuZXJhdG9y
SW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19nZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dEFzeW5jR2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfaXNBc3luY0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OllpZWxk
RXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkF3YWl0RXhwck5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ3JlYXRlSW50ZXJuYWxGaWVs
ZE9iamVjdCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUp
OgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9OZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZl
cnRUb05ld0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZp
ZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVBc3luY0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcik6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVO
b2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0lu
dGVybmFsRmllbGRPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFzeW5j
R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpjcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6U0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICog
cnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwLgorICAgICAgICAoSlNDOjpKU0FzeW5jR2Vu
ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjpKU0FzeW5jR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU0FzeW5jR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaC4KKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNHZW5lcmF0b3JT
dHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAx
OS0wOS0yNCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CiAKICAgICAg
ICAgW1dpbkNhaXJvXSBTdGFydCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMGZmZmE2OWJjZWMxZTgzYzVjNzUwY2YyMzM3ZWU3OWJhZjkxNDM0
Yy4uMjVmYjA3YTIxZGZmOWRhMjZlMjljZjIxMmNkNTM1MzUyMjM5MTQzOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MjYsNiArMTgyNiw3IEBACiAJCUUzOUQ4QjJFMjMwMjFF
MjYwMDI2NTg1MiAvKiBXYXNtT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDhCMkQyMzAyMUUxRTAwMjY1ODUyIC8qIFdhc21PcGVy
YXRpb25zLmggKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5RUVBRjMyMjgxMjQ1MDAwODQ3
NEY0IC8qIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlFRUFGMjIyODEyNDRD
MDA4NDc0RjQgLyogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAq
LzsgfTsKKwkJRTM5RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMz
OUM1RDQwMEI0MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi87IH07CiAJCUUzQTA1MzFBMjEz
NDJCNjgwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyog
V2FzbVN0cmVhbWluZ1BhcnNlci5oICovOyB9OwogCQlFM0EwNTMxQzIxMzQyQjY4MDAyMkVDMTQg
LyogV2FzbVNlY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQTA1MzE4MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNl
ci5oICovOyB9OwogCQlFM0EzMkJDNzFGQzgzMTQ3MDA3RDdFNzYgLyogV2Vha01hcEltcGwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMyQkM2MUZD
ODMxMkUwMDdEN0U3NiAvKiBXZWFrTWFwSW1wbC5oICovOyB9OwpAQCAtNDk1MCw2ICs0OTUxLDgg
QEAKIAkJRTM5RTAzMEQyMkQ5RUEzRTAwNDA4QzE4IC8qIFdlYkFzc2VtYmx5LmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gV2ViQXNzZW1ibHkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOUVFQUYxMjI4MTI0NEMwMDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPYmplY3RUb1N0cmluZ0Fk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOUVFQUYyMjI4MTI0NEMwMDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RUb1N0cmluZ0FkYXB0aXZl
U3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlG
RUJFMTIzMzlDNUQ0MDBCNDBBQjAgLyogSlNBc3luY0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0FzeW5jR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM5RkVCRTIyMzM5QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNBc3luY0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU3RyZWFtaW5nUGFyc2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTA1MzE3MjEzNDJCNjYwMDIyRUMxNCAvKiBXYXNt
U2VjdGlvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
YXNtU2VjdGlvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTA1
MzE4MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU2VjdGlvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzE1MCwxNyArNzE1MywxOSBAQAogCQkJCTUzOUZCOEI5MUM5OURBN0Mw
MDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICovLAogCQkJCTVCNzBDRkQ5MURCNjlFNUMwMEVD
MjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwICovLAogCQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVD
MjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAqLywKKwkJCQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBB
QjAgLyogSlNBc3luY0dlbmVyYXRvci5jcHAgKi8sCisJCQkJRTM5RkVCRTIyMzM5QzVENDAwQjQw
QUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCAqLywKIAkJCQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4
Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4QkMwNjQ4ODFFMUE1
ODQwMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJODY4OTIx
QzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmlnSW50LmNwcCAqLywKIAkJCQk4Njg5MjFDMTFGOUMw
Q0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8sCi0JCQkJRkU0OEJENDMyMzI0NUU4NzAwRjEzNkQw
IC8qIEpTQ0NvbmZpZy5jcHAgKi8sCi0JCQkJRkU0OEJENDIyMzI0NUU4NzAwRjEzNkQwIC8qIEpT
Q0NvbmZpZy5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5j
cHAgKi8sCiAJCQkJNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi8sCiAJ
CQkJNTNCNjAxRUIyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oICovLAorCQkJCUZFNDhCRDQz
MjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcuY3BwICovLAorCQkJCUZFNDhCRDQyMjMyNDVF
ODcwMEYxMzZEMCAvKiBKU0NDb25maWcuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVGMDA4NjMy
QzAgLyogSlNDZWxsLmNwcCAqLywKIAkJCQlCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlND
ZWxsLmggKi8sCiAJCQkJMEY5NzQ5NkYxNjg3QURFMjAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMu
aCAqLywKQEAgLTkwMTMsNyArOTAxOCw2IEBACiAJCQkJMEZFQzNDNjAxRjM3OUY1MzAwRjU5QjZD
IC8qIENhZ2VkQmFycmllclB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRUQwRTE2RjVD
RDAwQjM0NDYwIC8qIENhbGxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY0QjI3QTFBNzk1
N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFQzU3OTc4MjMx
MDk1NEMwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
OTZEQUEyQjFFODlDQ0Q2MDA1REYyNEEgLyogQ2FsbGVlQml0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQyOUQ4REUwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkVBM0JCQTgyMTJCNjU1OTAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTAzMCw5ICs5MDM0LDkgQEAKIAkJCQkwRjA3MEE0ODFENTQzQTkwMDA2
RTcyMzIgLyogQ2VsbENvbnRhaW5lcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMUJE
MDFFMUU3MjAwMkEwMDEzNEJDOSAvKiBDZWxsTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUx
QkQwMjExRTcyMDI3OTAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRUMxNjAzMjIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMUMzRERBMUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNkFBQUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJz
ICovLAotCQkJCUZFQzE2MDMyMjMzOUU5RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFMDUwMjYxQUE5MDk1NjAwRDMzQjMzIC8qIENsb25lZEFyZ3VtZW50cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIENMb29wU3Rh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5ODdBQjYwMDI5OURCMiAvKiBDTG9v
cFN0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzY5LDcgKzkzNzMsNiBAQAogCQkJ
CTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvQjMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGOTE5RDBCQUMxMDBCMUQxQjUgLyogRlRMT3Bl
cmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUzODQyMzIyMzI0RDUxQjAwOURENDQ1IC8q
IE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJD
NDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFMDE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTk1
MDgsNyArOTUxMSw2IEBACiAJCQkJNzkwNUJCNjkxRDEyMDUwRTAwMTlGRTU3IC8qIElubGluZUFj
Y2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4QTdCRjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElu
bGluZUNhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTYxN0YwQjcxQzAwQUJC
MjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVDNTc5NzYy
MzEwNUY0RTAwQkNBODNGIC8qIEludGVncml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAz
MjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTkzQ0Y3RjE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTQwLDYgKzk1NDIsOCBAQAogCQkJCUE3QThB
RjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkVDNTc5NzYyMzEwNUY0RTAwQkNBODNGIC8qIEludGVncml0eS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyog
SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDI5RDc3QzBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtOTU2MCw3ICs5NTY0LDYgQEAKIAkJCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkYxQjQ1
QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTJCQkZGMjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRkU0OEJENDQyMzI0NUU5MzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzA4RUJFMjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIEludGxPYmplY3RJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyog
SW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRFMDM1NDFFNTNCRDI5MDAyMTNGNjQg
LyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjE4LDYg
Kzk2MjEsNyBAQAogCQkJCTBGMkI2NkVBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUZCOEJBMUM5OURBN0MwMDk0MEZB
MSAvKiBKU0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUI3MENGREUxREI2OUU2
NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RkVC
RTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCThCQzA2NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTc5ODcyQzQ4MjIxQkJBRjMwMDhDNjk2OSAvKiBKU0Jhc2VJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjMxLDYgKzk2MzUsNyBAQAogCQkJCTY1N0NG
NDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNC
NjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTQ4QkQ0NDIzMjQ1RTkzMDBGMTM2RDAgLyogSlNDQ29uZmlnLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTkwOCw3ICs5OTEzLDkgQEAKIAkJCQkwRjJCREMyQzE1MUZERTkxMDBD
RDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VBMTdBMEJENDYw
MEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ4
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTM4
NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjlEQUEwQTFGRDFDM0QzMDA3OUM1QjIgLyogUGFyYWxsZWxTb3VyY2VB
ZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFNjU3NTIwNjY4RUFBMDBGQjgxQUMgLyog
UGFyc2VIYXNoLmggaW4gSGVhZGVycyAqLywKQEAgLTk5NDEsNyArOTk0OCw2IEBACiAJCQkJMEZG
NzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYxOTBDQUQxODlEODJGNjAwMEFFNUYwIC8qIFByb2ZpbGVySmV0dGlz
b25SZWFzb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJGMTY2QUQzNjAwMDBGNUJBMyAv
KiBQcm9maWxlck9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVDNTc5NzMyMzEwNUI1MTAw
QkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5
QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjEwNThDMTY3NTQ4MzMwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjEwNThFMTY3NTQ4M0EwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4
aXRTaXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDE2LDcgKzEwMDIyLDYgQEAKIAkJCQkwRkUw
NTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNl
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlv
bnNMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyog
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4
OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDE2OSw2ICsxMDE3NCw3IEBACiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0ND
IC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QUUyQzQxREY0RjI4MDAw
NjZFRkUxIC8qIFZNSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDcxRTQyODU3
MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUM1Nzk3MzIz
MTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTI4NDdBREMyMUZGQjg2OTAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBiYTg2
Njc2ZTY0MWFiMTM0MDk1ODFiYjhiMzhkN2UzNjE4NzY4NzgzLi5hMmU4OGIxZDAwODY0YTgxYTAx
MTM3MDI5Njk5MDI2MjQyZTUwMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04
MDksNiArODA5LDcgQEAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiBydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcAogcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQXN5bmNHZW5lcmF0
b3IuY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNC
aWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcwpp
bmRleCA5MGRlOTIwZDlkNmUzMDRhNmRkYmJhZTk0ODkxYmIyNzM4NDJmNzQ5Li5iMGFjNDAzODFk
ZmYwNTY3N2JjZWM5NDAwYzEzMTAzOGViNDJjOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0y
OSw3ICsyOSw3IEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdlbmVyYXRv
cikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICByZXR1cm4gQGdldEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpID09PSBudWxsOworICAg
IHJldHVybiBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5j
R2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KSA9PT0gbnVsbDsKIH0KIAogQGdsb2JhbFByaXZhdGUK
QEAgLTM5LDE1ICszOSwxNSBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZShn
ZW5lcmF0b3IsIGl0ZW0pCiAKICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShpdGVt
LCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IikgPT09IG51bGwpOwogCi0gICAgaWYgKEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3Qi
KSA9PT0gbnVsbCkgewotICAgICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIpID09PSBudWxsKTsKKyAgICBpZiAoQGdl
dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZp
ZWxkUXVldWVGaXJzdCkgPT09IG51bGwpIHsKKyAgICAgICAgQGFzc2VydChAZ2V0QXN5bmNHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxh
c3QpID09PSBudWxsKTsKIAotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9y
LCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0IiwgaXRlbSk7Ci0gICAgICAgIEBwdXRCeUlkRGly
ZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0pOwor
ICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5j
R2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0LCBpdGVtKTsKKyAgICAgICAgQHB1dEFzeW5jR2VuZXJh
dG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0
LCBpdGVtKTsKICAgICB9IGVsc2UgewotICAgICAgICB2YXIgbGFzdCA9IEBnZXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIpOworICAgICAgICB2
YXIgbGFzdCA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5
bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCk7CiAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShsYXN0LCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IiwgaXRlbSk7Ci0gICAgICAgIEBw
dXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIs
IGl0ZW0pOworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRv
ciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QsIGl0ZW0pOwogICAgIH0KIH0KIApAQCAt
NTgsMTMgKzU4LDEzIEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKGdlbmVy
YXRvcikKIAogICAgIEBhc3NlcnQoIUBhc3luY0dlbmVyYXRvclF1ZXVlSXNFbXB0eShnZW5lcmF0
b3IpLCAiQXN5bmMgZ2VuZXRhdG9yJ3MgUXVldWUgaXMgYW4gZW1wdHkgTGlzdC4iKTsKIAotICAg
IHZhciByZXN1bHQgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5l
cmF0b3JRdWV1ZUZpcnN0Iik7CisgICAgdmFyIHJlc3VsdCA9IEBnZXRBc3luY0dlbmVyYXRvcklu
dGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlRmlyc3QpOwog
CiAgICAgdmFyIHVwZGF0ZWRGaXJzdCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShyZXN1bHQsICJh
c3luY0dlbmVyYXRvclF1ZXVlSXRlbU5leHQiKTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0IiwgdXBkYXRlZEZpcnN0KTsKKyAg
ICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJh
dG9yRmllbGRRdWV1ZUZpcnN0LCB1cGRhdGVkRmlyc3QpOwogCiAgICAgaWYgKHVwZGF0ZWRGaXJz
dCA9PT0gbnVsbCkKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFz
eW5jR2VuZXJhdG9yUXVldWVMYXN0IiwgbnVsbCk7CisgICAgICAgIEBwdXRBc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCwg
bnVsbCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzQsOCArNzQsOCBAQCBmdW5jdGlv
biBpc0V4ZWN1dGlvblN0YXRlKGdlbmVyYXRvcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAg
ICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9y
U3RhdGUiKTsKLSAgICB2YXIgcmVhc29uID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRv
ciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpOworICAgIHZhciBzdGF0ZSA9IEBnZXRB
c3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0
ZSk7CisgICAgdmFyIHJlYXNvbiA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pOwogICAgIHJldHVybiAo
c3RhdGUgPiAwICYmIHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUp
CiAgICAgICAgIHx8IHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZwogICAg
ICAgICB8fCByZWFzb24gPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdDsKQEAg
LTg2LDggKzg2LDggQEAgZnVuY3Rpb24gaXNTdXNwZW5kWWllbGRTdGF0ZShnZW5lcmF0b3IpCiB7
CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgcmV0dXJuIChzdGF0ZSA+IDAg
JiYgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbiIpID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQpCisgICAgdmFy
IHN0YXRlID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5l
cmF0b3JGaWVsZFN0YXRlKTsKKyAgICByZXR1cm4gKHN0YXRlID4gMCAmJiBAZ2V0QXN5bmNHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5k
UmVhc29uKSA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbllpZWxkKQogICAgICAgICB8
fCBzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRZaWVsZDsKIH0KIApAQCAt
OTYsNyArOTYsNyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclJlamVjdChnZW5lcmF0b3IsIGV4
Y2VwdGlvbikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBAYXNzZXJ0KHR5cGVvZiBAZ2V0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29u
IikgPT09ICJudW1iZXIiLCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3luY0dlbmVyYXRvciBpbnN0
YW5jZS4iKTsKKyAgICBAYXNzZXJ0KEBpc0FzeW5jR2VuZXJhdG9yKGdlbmVyYXRvciksICJHZW5l
cmF0b3IgaXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOwogCiAgICAgdmFyIHBy
b21pc2UgPSBAYXN5bmNHZW5lcmF0b3JRdWV1ZURlcXVldWUoZ2VuZXJhdG9yKS5wcm9taXNlOwog
ICAgIEBhc3NlcnQoQGlzUHJvbWlzZShwcm9taXNlKSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgZnVu
Y3Rpb24gYXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgdmFsdWUsIGRvbmUpCiB7CiAg
ICAgInVzZSBzdHJpY3QiOwogCi0gICAgQGFzc2VydCh0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSAibnVtYmVy
IiwgIkdlbmVyYXRvciBpcyBub3QgYW4gQXN5bmNHZW5lcmF0b3IgaW5zdGFuY2UuIik7CisgICAg
QGFzc2VydChAaXNBc3luY0dlbmVyYXRvcihnZW5lcmF0b3IpLCAiR2VuZXJhdG9yIGlzIG5vdCBh
biBBc3luY0dlbmVyYXRvciBpbnN0YW5jZS4iKTsKIAogICAgIHZhciBwcm9taXNlID0gQGFzeW5j
R2VuZXJhdG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikucHJvbWlzZTsKICAgICBAYXNzZXJ0KEBp
c1Byb21pc2UocHJvbWlzZSkpOwpAQCAtMTI2LDExICsxMjYsMTEgQEAgZnVuY3Rpb24gYXN5bmNH
ZW5lcmF0b3JZaWVsZChnZW5lcmF0b3IsIHZhbHVlLCByZXN1bWVNb2RlKQogCiAgICAgZnVuY3Rp
b24gYXN5bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQocmVzdWx0KQogICAgIHsKLSAgICAgICAgQHB1
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
biIsIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CisgICAgICAgIEBwdXRBc3lu
Y0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1
c3BlbmRSZWFzb24sIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCk7CiAgICAgICAg
IEBhc3luY0dlbmVyYXRvclJlc29sdmUoZ2VuZXJhdG9yLCByZXN1bHQsIGZhbHNlKTsKICAgICB9
CiAKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uIiwgQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0KTsKKyAgICBA
cHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9y
RmllbGRTdXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpOwog
CiAgICAgQGF3YWl0VmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSwgYXN5bmNHZW5lcmF0b3JZaWVsZEF3
YWl0ZWQpOwogfQpAQCAtMTUwLDM0ICsxNTAsMzkgQEAgZnVuY3Rpb24gZG9Bc3luY0dlbmVyYXRv
ckJvZHlDYWxsKGdlbmVyYXRvciwgcmVzdW1lVmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgInVzZSBz
dHJpY3QiOwogCiAgICAgdmFyIHZhbHVlID0gQHVuZGVmaW5lZDsKLSAgICB2YXIgc3RhdGUgPSBA
Z2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2
YXIgc3RhdGUgPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUpOwogCi0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRv
ciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwotICAg
IEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRS
ZWFzb24iLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZSk7CisgICAgQHB1dEFzeW5j
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBA
QXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50
ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbiwg
QEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpOwogCiAgICAgdHJ5IHsKLSAgICAgICAg
dmFsdWUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yTmV4dCIp
LkBjYWxsKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JUaGlzIiks
IGdlbmVyYXRvciwgc3RhdGUsIHJlc3VtZVZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVj
dFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgIGlmIChAZ2V0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEFzeW5j
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCi0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZh
dGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBs
ZXRlZCk7CisgICAgICAgIHZhbHVlID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKEBnZXRBc3luY0dlbmVyYXRvcklu
dGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgZ2VuZXJhdG9yLCBz
dGF0ZSwgcmVzdW1lVmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRBc3luY0dlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFtZSkpOworICAgICAgICBzdGF0ZSA9
IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmll
bGRTdGF0ZSk7CisgICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVj
dXRpbmcpIHsKKyAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0
ZWQpOworICAgICAgICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsK
KyAgICAgICAgfQogICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRl
Q29tcGxldGVkKTsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFz
eW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIsIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25O
b25lKTsKKyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3Is
IEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7Cisg
ICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNH
ZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24sIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25O
b25lKTsKIAogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9yUmVqZWN0KGdlbmVyYXRvciwg
ZXJyb3IpOwogICAgIH0KIAotICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9y
LCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIikgPT09IEBBc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb25Bd2FpdCkgeworICAgIHZhciByZWFzb24gPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRl
cm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKTsK
KyAgICBpZiAocmVhc29uID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpIHsK
ICAgICAgICAgdmFyIG9uRnVsZmlsbGVkID0gZnVuY3Rpb24ocmVzdWx0KSB7IEBkb0FzeW5jR2Vu
ZXJhdG9yQm9keUNhbGwoZ2VuZXJhdG9yLCByZXN1bHQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9y
bWFsKTsgfTsKIAogICAgICAgICBAYXdhaXRWYWx1ZShnZW5lcmF0b3IsIHZhbHVlLCBvbkZ1bGZp
bGxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoQGdldEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSBAQXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQpCisgICAgaWYgKHJlYXNvbiA9PT0gQEFzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbllpZWxkKQogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJh
dG9yWWllbGQoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSk7CiAKLSAgICBpZiAoQGdldEJ5
SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBBc3luY0dl
bmVyYXRvclN0YXRlQ29tcGxldGVkKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBAQXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uTm9uZSk7CisgICAgaWYgKHN0YXRlID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0
ZUNvbXBsZXRlZCkgeworICAgICAgICBAYXNzZXJ0KEBnZXRBc3luY0dlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT0gQEFzeW5jR2VuZXJhdG9y
U3RhdGVDb21wbGV0ZWQpOworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
KGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uLCBAQXN5bmNHZW5l
cmF0b3JTdXNwZW5kUmVhc29uTm9uZSk7CiAgICAgICAgIHJldHVybiBAYXN5bmNHZW5lcmF0b3JS
ZXNvbHZlKGdlbmVyYXRvciwgdmFsdWUsIHRydWUpOwogICAgIH0KIH0KQEAgLTE4Nyw5ICsxOTIs
OSBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclJlc3VtZU5leHQoZ2VuZXJhdG9yKQogewogICAg
ICJ1c2Ugc3RyaWN0IjsKIAotICAgIEBhc3NlcnQodHlwZW9mIEBnZXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKSA9PT0gIm51bWJlciIs
ICJHZW5lcmF0b3IgaXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOworICAgIEBh
c3NlcnQoQGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSwgIkdlbmVyYXRvciBpcyBub3QgYW4g
QXN5bmNHZW5lcmF0b3IgaW5zdGFuY2UuIik7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3RhdGUg
PSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUpOwogCiAgICAgQGFzc2VydChzdGF0ZSAhPT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVF
eGVjdXRpbmcsICJBc3luYyBnZW5lcmF0b3Igc2hvdWxkIG5vdCBiZSBpbiBleGVjdXRpbmcgc3Rh
dGUiKTsKIApAQCAtMTk5LDI0ICsyMDQsMjQgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JSZXN1
bWVOZXh0KGdlbmVyYXRvcikKICAgICBpZiAoQGFzeW5jR2VuZXJhdG9yUXVldWVJc0VtcHR5KGdl
bmVyYXRvcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZhciBuZXh0ID0gQGdldEJ5SWREaXJl
Y3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIpOworICAgIHZh
ciBuZXh0ID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3lu
Y0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCk7CiAKICAgICBpZiAobmV4dC5yZXN1bWVNb2RlICE9
PSBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCkgewogICAgICAgICBpZiAoc3RhdGUgPT09IEBB
c3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQpIHsKLSAgICAgICAgICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRv
clN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQpOwogICAgICAgICAgICAgc3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNv
bXBsZXRlZDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJh
dG9yU3RhdGVDb21wbGV0ZWQpIHsKICAgICAgICAgICAgIGlmIChuZXh0LnJlc3VtZU1vZGUgPT09
IEBHZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuKSB7Ci0gICAgICAgICAgICAgICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9y
U3RhdGVBd2FpdGluZ1JldHVybik7CisgICAgICAgICAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9y
SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAQXN5bmNHZW5l
cmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuKTsKICAgICAgICAgICAgICAgICBAcmVzb2x2ZVdpdGhv
dXRQcm9taXNlKG5leHQudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZXN1
bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQGFzeW5jR2VuZXJhdG9yUmVzb2x2ZShn
ZW5lcmF0b3IsIHJlc3VsdCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICAgICAg
QHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5j
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgQHB1dEFz
eW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRl
LCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBAYXN5bmNHZW5lcmF0b3JSZWplY3QoZ2VuZXJhdG9yLCBlcnJvcik7CiAgICAgICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0MCw3ICsyNDUsNyBAQCBm
dW5jdGlvbiBhc3luY0dlbmVyYXRvckVucXVldWUoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9k
ZSkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICB2YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7
Ci0gICAgaWYgKCFAaXNPYmplY3QoZ2VuZXJhdG9yKSB8fCB0eXBlb2YgQGdldEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpICE9PSAnbnVt
YmVyJykgeworICAgIGlmICghQGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSkgewogICAgICAg
ICBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21p
c2UsIEBtYWtlVHlwZUVycm9yKCd8dGhpc3wgc2hvdWxkIGJlIGFuIGFzeW5jIGdlbmVyYXRvcicp
KTsKICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDM1YzEwNDBhZDQ1NTc0NzgxNWUxMTZm
YmM3ZDEyNjViM2ZjNzQyNDIuLjQ4ODA2NTkyNjYwZGYxYWVjNDkyNWQwODk2ODZlZWE1YzVjNzFh
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
QEAgLTEwOCwxNSArMTA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdlbmVyYXRv
ckZyYW1lKSBcCiAgICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKICAgICBtYWNybyhnZW5lcmF0
b3JUaGlzKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogICAgIG1hY3JvKHN5
bmNJdGVyYXRvcikgXAogICAgIG1hY3JvKG5leHRNZXRob2QpIFwKLSAgICBtYWNybyhhc3luY0dl
bmVyYXRvclN0YXRlKSBcCi0gICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uKSBc
Ci0gICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JRdWV1ZSkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJh
dG9yUXVldWVGaXJzdCkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVMYXN0KSBcCiAg
ICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0KSBcCi0gICAgbWFjcm8oZ2VuZXJh
dG9yUmVzdW1lTW9kZSkgXAogICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8o
aW50bFN1YnN0aXR1dGVWYWx1ZSkgXAogICAgIG1hY3JvKHRoaXNUaW1lVmFsdWUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmNwcAppbmRleCAwNmZjNTgxOTIxMmIzMWIwNTU5ZWVmZjYxMTlkNzVhYTUx
MGM5NzI1Li5kNDE2MzNjNTViNjA5Y2Q1N2UyNDNiMmIxYTRjNDQwOTIxNGM1YWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5h
bWVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJdGVyYXRp
b25LaW5kLmgiCi0jaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC04NSwxNCAr
ODUsMTcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeShWTSYgdm0pCiAgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6UmV0dXJuTW9kZSkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9y
U3RhdGU6OkNvbXBsZXRlZCkpKTsKICAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9y
U3RhdGU6OkV4ZWN1dGluZykpKTsKLSAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQu
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwotICAgIG1fQXN5bmNH
ZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN0YXRlOjpFeGVj
dXRpbmcpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQuc2V0KG1f
dm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7Ci0gICAgbV9Bc3luY0dl
bmVyYXRvclN0YXRlU3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6
U3VzcGVuZGVkWWllbGQpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQXdhaXRpbmdSZXR1
cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6QXdhaXRpbmdSZXR1cm4pKSk7Ci0gICAg
bV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZC5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb246OllpZWxkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVh
c29uQXdhaXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCkpKTsK
LSAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5l
cmF0b3JTdXNwZW5kUmVhc29uOjpOb25lKSkpOworICAgIG1fYXN5bmNHZW5lcmF0b3JGaWVsZFN1
c3BlbmRSZWFzb24uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0Fz
eW5jR2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbikpKTsKKyAgICBtX2FzeW5jR2VuZXJh
dG9yRmllbGRRdWV1ZUZpcnN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlRmlyc3QpKSk7CisgICAgbV9hc3luY0dl
bmVyYXRvckZpZWxkUXVldWVMYXN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdCkpKTsKKyAgICBtX0FzeW5j
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkp
KTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3Rh
dGU6OkV4ZWN1dGluZykpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRTdGFy
dC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRv
cjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7CisgICAgbV9Bc3luY0dl
bmVyYXRvclN0YXRlU3VzcGVuZGVkWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRl
ZFlpZWxkKSkpOworICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuLnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3lu
Y0dlbmVyYXRvclN0YXRlOjpBd2FpdGluZ1JldHVybikpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbllpZWxkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKSkp
OworICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQuc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbjo6QXdhaXQpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b25Ob25lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2Vu
ZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiB9CiAKIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgK
aW5kZXggMjgwYjdmOTA2ZDY1ZTUwZmZiNzY3NWUxMWVhMmUyOTNiN2Q1N2VhOS4uZmFlYjIzODli
OGZkNzBlZTVmOTQ5MzVmMzhhNzRhNjE1Njc4NjliZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBA
IC00MywxMiArNDMsMTQgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhnZXRCeUlkRGly
ZWN0UHJpdmF0ZSkgXAogICAgIG1hY3JvKGdldFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAg
bWFjcm8oZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEFzeW5jR2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGlkV2l0aFByb2ZpbGUpIFwKICAgICBt
YWNybyhpc09iamVjdCkgXAogICAgIG1hY3JvKGlzSlNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJv
eHlPYmplY3QpIFwKICAgICBtYWNybyhpc0Rlcml2ZWRBcnJheSkgXAogICAgIG1hY3JvKGlzR2Vu
ZXJhdG9yKSBcCisgICAgbWFjcm8oaXNBc3luY0dlbmVyYXRvcikgXAogICAgIG1hY3JvKGlzUHJv
bWlzZSkgXAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBcCiAgICAgbWFjcm8oaXNNYXApIFwK
QEAgLTY0LDYgKzY2LDcgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhwdXRCeVZhbERp
cmVjdCkgXAogICAgIG1hY3JvKHB1dFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8o
cHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dEFzeW5jR2VuZXJhdG9y
SW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9TdHJp
bmcpIFwKICAgICBtYWNybyh0b09iamVjdCkgXApAQCAtMTEwLDYgKzExMyw5IEBAIGNsYXNzIFJl
Z2lzdGVySUQ7CiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybikgXAogICAgIG1h
Y3JvKEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yU3RhdGVF
eGVjdXRpbmcpIFwKKyAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikg
XAorICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KSBcCisgICAgbWFjcm8o
YXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkgXAogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9y
U3RhdGVDb21wbGV0ZWQpIFwKICAgICBtYWNybyhBc3luY0dlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KSBcCiAgICAgbWFjcm8oQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCA4YmMw
MTgyMjY3ZTY5YTljNjJlMWVhMzhkOTFmYzI2MDY2MjRkZjJlLi4xZTdlOTZhNTgwMzhmMGQ3NWJi
N2YxMGZhOTgxNTE5YmM1YzQzOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTEzNCwxOCArMTM0LDIyIEBACiAgICAgICAgIGlzSW50
ZXJuYWxQcm9taXNlOiBib29sLAogICAgIH0KIAotb3AgOmNyZWF0ZV9nZW5lcmF0b3IsCitvcCA6
bmV3X2dlbmVyYXRvciwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVy
LAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9LAotICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIGNhY2hlZENhbGxlZTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0KICAgICB9CiAK
LW9wIDpuZXdfZ2VuZXJhdG9yLAorb3BfZ3JvdXAgOkNyZWF0ZUludGVybmFsRmllbGRPYmplY3RP
cCwKKyAgICBbCisgICAgICAgIDpjcmVhdGVfZ2VuZXJhdG9yLAorICAgICAgICA6Y3JlYXRlX2Fz
eW5jX2dlbmVyYXRvciwKKyAgICBdLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAg
bWV0YWRhdGE6IHsKKyAgICAgICAgY2FjaGVkQ2FsbGVlOiBXcml0ZUJhcnJpZXJbSlNDZWxsXQog
ICAgIH0KIAogb3AgOmdldF9hcmd1bWVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNDA3OTI0OTk2NWQ1NjE4ZTkzZjk4NjcyNDcy
NGVjYzM3MzIwMTVjNy4uMDIyZjNiZmViODY4NDQxY2NhZGRhZmQ3ZjgzNGZhOGY5ODg3M2JjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
QEAgLTE5Niw2ICsxOTYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIFVTRVMoT3BD
cmVhdGVUaGlzLCBjYWxsZWUpCiAgICAgVVNFUyhPcENyZWF0ZVByb21pc2UsIGNhbGxlZSkKICAg
ICBVU0VTKE9wQ3JlYXRlR2VuZXJhdG9yLCBjYWxsZWUpCisgICAgVVNFUyhPcENyZWF0ZUFzeW5j
R2VuZXJhdG9yLCBjYWxsZWUpCiAgICAgVVNFUyhPcERlbEJ5SWQsIGJhc2UpCiAgICAgVVNFUyhP
cE5ld0Z1bmMsIHNjb3BlKQogICAgIFVTRVMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmMsIHNjb3Bl
KQpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhP
cENyZWF0ZVRoaXMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlUHJvbWlzZSwgZHN0KQogICAgIERF
RlMoT3BDcmVhdGVHZW5lcmF0b3IsIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlQXN5bmNHZW5lcmF0
b3IsIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXlX
aXRoU3ByZWFkLCBkc3QpCiAgICAgREVGUyhPcFNwcmVhZCwgZHN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmYWQ5NWUyOWFmY2MwODk0OWFi
MjEzOGViZTUzY2QxYTE0NjMwOGNmLi5lNzhkMzE4ZDkwMWFhZjE5M2Y4Yjg5ZTJhYWMzM2EzZWY5
ZjljZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMTI3OSw2ICsxMjc5LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ3JlYXRlR2VuZXJhdG9y
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29k
ZShtZXRhZGF0YSwgIm9wX2NyZWF0ZV9nZW5lcmF0b3IiX3MpOwogICAgICAgICB9KTsKKyAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENyZWF0ZUFzeW5jR2VuZXJhdG9yPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CisgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRhZGF0YSwg
Im9wX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IiX3MpOworICAgICAgICB9KTsKIAogICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wUmVzb2x2ZVNjb3BlPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CiAgICAgICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3Nhcnku
IEFueSBzeW1ib2wgdGFibGVzIHRoYXQgdGhpcyB3aWxsIHJlZmVyIHRvCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDMyZTQwODZmNWNmYTAwZmUyNmNmODFhYzg4MjYzZTRiMDg1OGZjMjYuLmU3OTE0YWE0
N2M1ZWU5YTk4M2Q3NTlmZGQ2ZmFhYjZjY2EwYjNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00
MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkRlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCi0jaW5jbHVkZSAi
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRml4ZWRBcnJheS5oIgpAQCAtNzAyLDggKzcwMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTE1ODYKICAgICAgICAgZW1pdFRvVGhpcygpOwogCi0gICAgICAgIG1vdmUobV9nZW5lcmF0
b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOwotICAgICAgICBlbWl0Q3JlYXRlVGhpcyht
X2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKG1f
Z2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC04NzYsMTAgKzg3NSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
ICAgICAgICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhpY2FsIGVudmlyb25tZW50
IGNyZWF0aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252ZXJ0IGl0IHRvIG9wX21v
diBmcmFtZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0ZUdlbmVyYXRvckZyYW1l
RW52aXJvbm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBzY29wZVJl
Z2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9LCBh
ZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKLSAg
ICAgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVtaXRQdXRJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVy
YXRvcjo6RmllbGQ6OkZyYW1lKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpG
cmFtZSkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpG
cmFtZSkpOworICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3Rlcigp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSksIGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXpl
QmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1
bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCkBAIC0yNzIzLDE4ICsyNzIwLDgg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEFzeW5jR2VuZXJhdG9yRmllbGRzKFJl
Z2lzdGVySUQqIG5leHRGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNBc3luY0dlbmVyYXRvcldy
YXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKCkpKTsKIAotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1f
Z2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dEZ1bmN0aW9uLCBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0KTsKLSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFt
ZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotICAgICAg
ICAKLSAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKLSAgICAgICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9n
ZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9y
UmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVyYXRvclN1
c3BlbmRSZWFzb25Qcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbjo6Tm9uZSkpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAg
ICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0UHJpdmF0ZU5hbWUoKSwgZW1p
dExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKLSAg
ICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3RQcml2YXRlTmFtZSgpLCBlbWl0
TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAg
IGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCksIG5leHRGdW5jdGlvbik7Cisg
ICAgZW1pdFB1dEludGVybmFsRmllbGQobV9nZW5lcmF0b3JSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSwgJm1fdGhpc1JlZ2lzdGVy
KTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeUlkKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHkpCkBAIC0yODc1LDYgKzI4NjIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KQogICAgIHJldHVybiBkc3Q7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3Io
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BDcmVhdGVB
c3luY0dlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QsIG5ld1RhcmdldCk7CisgICAgcmV0dXJuIGRz
dDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQq
IHRhcmdldCkKIHsKICAgICBPcENoZWNrVGR6OjplbWl0KHRoaXMsIHRhcmdldCk7CkBAIC00NTE1
LDcgKzQ1MDgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENv
ZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogICAgIGVtaXRMYWJlbCh0YXJn
ZXQuZ2V0KCkpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChS
ZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVy
YXRvclN1c3BlbmRSZWFzb24gcmVzdWx0KQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlp
ZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbiByZXN1bHQpCiB7CiAgICAgUmVmPExhYmVsPiBtZXJnZVBvaW50
ID0gbmV3TGFiZWwoKTsKICAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxkUG9p
bnRzKys7CkBAIC00NTIzLDcgKzQ1MTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bgogCiAg
ICAgaWYgKHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5
TW9kZSkgewogICAgICAgICBpbnQgc3VzcGVuZFJlYXNvbiA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KHJlc3VsdCk7Ci0gICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Qcml2
YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29uKSkpOwor
ICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb24pLCBl
bWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdXNwZW5kUmVhc29uKSkpOwogICAgIH0KIAogICAg
IC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KQEAgLTQ1NTUsNyArNDU0OCw3IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBK
U0FzeW5jR2VuZXJhdG9yRnVuCiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQuZ2V0KCkpOwogfQog
Ci1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJl
YXNvbiByZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJl
Z2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb24gcmVzdWx0KQogewogICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50LCByZXN1bHQp
OwogCkBAIC00NTk1LDcgKzQ1ODgsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhbGxJdGVyYXRvcihSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXdhaXQoUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAg
ZW1pdFlpZWxkKHZhbHVlLCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbjo6QXdhaXQpOworICAgIGVtaXRZaWVsZCh2YWx1ZSwgSlNBc3luY0dlbmVy
YXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7CiAgICAgbW92ZSh2YWx1
ZSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKIH0KIApAQCAtNDY2Nyw3ICs0NjYwLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIAogICAgICAgICAgICAgUmVmPExhYmVsPiBicmFuY2hP
blJlc3VsdCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZW1p
dFlpZWxkUG9pbnQodmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNH
ZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVsZCk7CisgICAgICAgICAgICAgICAgZW1pdFlpZWxk
UG9pbnQodmFsdWUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbjo6WWllbGQpOwogCiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJl
bCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9
IG5ld0xhYmVsKCk7CkBAIC00Nzc4LDEwICs0NzcxLDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGUKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQz
Ml90IHN0YXRlKQogewogICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGUpKTsKLSAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAg
ZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwotICAg
IGVsc2UKLSAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0
ZWRTdGF0ZSk7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpTdGF0ZSkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5l
cmF0b3I6OkZpZWxkOjpTdGF0ZSkpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRv
clJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0
YXRlKSwgY29tcGxldGVkU3RhdGUpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcFZpYUZpbmFsbHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBMYWJlbCYg
anVtcFRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyNjk0YjIyNmFiOTVjMmQ4NzBjY2MwZmFjNDIx
ZGYxMTYxNDVjNzNlLi40MTk3YWJjMTJlNTIyNTg5MTRmZTUwMGVjMWVlN2I1YWNiMzRiZGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgotI2luY2x1
ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKQEAgLTcyNSw2ICs3MjUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRoaXMoUmVn
aXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVByb21pc2UoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wgaXNJbnRlcm5hbFByb21p
c2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJhdG9yKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZUFzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0
KTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsKICAgICAg
ICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIHZvaWQgZW1p
dFREWkNoZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0YXJnZXQs
IFJlZ2lzdGVySUQqIHNjb3BlKTsKQEAgLTg2OSw2ICs4NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0dl
bmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElz
Q2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJc0FzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXN5bmNHZW5lcmF0
b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIEFycmF5VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBKU1Byb21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQ
cm94eU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1p
dElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05ODUsMTEg
Kzk4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdp
c3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNo
KHVpbnQzMl90IGNsYXVzZUNvdW50LCBjb25zdCBWZWN0b3I8UmVmPExhYmVsPiwgOD4mLCBFeHBy
ZXNzaW9uTm9kZSoqLCBMYWJlbCYgZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCBy
YW5nZSk7CiAKLSAgICAgICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiwgSlNBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24pOworICAgICAg
ICB2b2lkIGVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb24pOwogCiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJf
dCBzdGF0ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b24gPSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA9IEpT
QXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
U3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
W3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFs
dWUpXTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDY1Mjc2NmFiZjljNTQxNDg0MzAwOWFkZTY4Zjc5ODQzNzI0NGU2
ODMuLjY1OTM3ZjMxOWJlOTI1NDkzZGVlZTI1Nzg0ZTExMmJhN2E1OGQ5YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCkBAIC0xMDM0LDYgKzEwMzUsMjYgQEAgc3RhdGljIEpT
R2VuZXJhdG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlKiBub2QKICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKIH0K
IAorc3RhdGljIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5jR2VuZXJhdG9ySW50ZXJuYWxG
aWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkU3RhdGUpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6
U3RhdGU7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgICAgIHJldHVybiBKU0Fz
eW5jR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykK
KyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOworICAgIGlmIChu
b2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2VuZXJhdG9yRmllbGRGcmFtZSkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZp
ZWxkOjpGcmFtZTsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQor
ICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb247Cisg
ICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkKKyAgICAgICAgcmV0dXJuIEpT
QXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUZpcnN0OworICAgIGlmIChub2RlLT5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0
b3JGaWVsZFF1ZXVlTGFzdCkKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxk
OjpRdWV1ZUxhc3Q7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOworfQorCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxk
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
cmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTA2MCw2ICsx
MDgxLDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpLCBpbmRleCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3RO
b2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7
CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9k
ZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3luY0dl
bmVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05v
ZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dlbmVyYXRv
cjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwor
CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJndW1lbnQoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlz
dE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMTYxLDYgKzExOTUsMjIgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGUKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBn
ZW5lcmF0b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdl
dCgpKSk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2Rl
ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVM
RUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3luY0dlbmVyYXRvcklu
dGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2Rl
LT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNBc3luY0dlbmVyYXRvcjo6bnVtYmVy
T2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAgICBBU1NF
UlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5l
cmF0b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgp
KSk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfdGFpbENhbGxGb3J3YXJkQXJndW1lbnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlOwpAQCAtMTI4Myw3ICsxMzMzLDE2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNHZW5lcmF0b3IoSlNDOjpCeXRlY29kZUdl
bmVyCiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdElzR2Vu
ZXJhdG9yKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpKSk7CiB9Ci0g
ICAgCisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
aXNBc3luY0dlbmVyYXRvcihKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEpTQzo6
UmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9IGdlbmVyYXRvci5lbWl0
Tm9kZShub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdElzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pc0pTQXJyYXkoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1
bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtNDE1OCw3ICs0MjE3
LDcgQEAgUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGFyZyA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0
KCksIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29u
OjpZaWVsZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0WWllbGQoYXJnLmdldCgpLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb246OllpZWxkKTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7
CkBAIC00MTc3LDcgKzQyMzYsNyBAQCBSZWdpc3RlcklEKiBBd2FpdEV4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCksIEpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCk7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCks
IEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdhaXQpOwog
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAxZTY0YWJj
NTEyNTI4MGQwY2Y5ZWVjYzQ5NzRkMThlZmZiNTk0MWJmLi5iYzhlMGMyZTEyNmY5MzIwNmExMjdl
NmI5ZTQxNmY4MjRmZTQ1NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNp
bmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHku
aCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMjY4OCwyOCArMjY4OSw0NyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBj
YXNlIENyZWF0ZUdlbmVyYXRvcjogewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAg
ICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5j
dGlvbio+KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoRnVuY3Rp
b25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgp
LmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6Omlu
Zm8oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkgPT0gZ2xvYmFsT2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFy
ZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXpp
bHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIHN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6Cisg
ICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjogeworICAgICAgICBhdXRvIGZpbmRDb25zdGFu
dCA9IFsmXSAoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIC0+IGJvb2wgeworICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3JhcGgubV92bSwg
YmFzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVE
YXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlk
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBjbGFzc0luZm8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9
PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURh
dGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFk
ZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxk
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvck5vZGUobm9kZSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9OworCisgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2Ug
Q3JlYXRlR2VuZXJhdG9yOgorICAgICAgICAgICAgZm91bmQgPSBmaW5kQ29uc3RhbnQoSlNHZW5l
cmF0b3I6OmluZm8oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVB
c3luY0dlbmVyYXRvcjoKKyAgICAgICAgICAgIGZvdW5kID0gZmluZENvbnN0YW50KEpTQXN5bmNH
ZW5lcmF0b3I6OmluZm8oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwpAQCAtMjcyMSw2ICsyNzQxLDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE5ld0dlbmVy
YXRvcjoKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBBU1NFUlQoISFub2Rl
LT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbm9kZS0+c3Ry
dWN0dXJlKCkpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZDZkMjcwMTcwMThjYjg1NzNhMThkZWQ2YTI4
MmQ3YWY4MzVlNTlmYy4uZDdkYzA5OTg3ODJlMjIyODNmNGFiYzQ4YzI5MTMwYjZlNGYxNTM4MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTIwMyw2ICsyMDMsOCBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgdm9pZCBoYW5k
bGVOZXdGdW5jKE5vZGVUeXBlLCBCeXRlY29kZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ5
dGVjb2RlPgogICAgIHZvaWQgaGFuZGxlTmV3RnVuY0V4cChOb2RlVHlwZSwgQnl0ZWNvZGUpOwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KKyAgICB2b2lkIGhhbmRsZUNyZWF0ZUlu
dGVybmFsRmllbGRPYmplY3QoY29uc3QgQ2xhc3NJbmZvKiwgTm9kZVR5cGUgY3JlYXRlT3AsIE5v
ZGVUeXBlIG5ld09wLCBCeXRlY29kZSk7CiAKICAgICAvLyBDcmVhdGUgYSBwcmVzZW5jZSBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBiYXNlZCBvbiBzb21lIGtub3duIG9mZnNldCBhbmQgc3RydWN0
dXJlIHNldC4gRG9lcyBub3QKICAgICAvLyBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvbmRp
dGlvbiwgYnV0IGl0IG1heSByZXR1cm4gYSBudWxsIG9uZSBpZiBpdCBlbmNvdW50ZXJzIGEgY29u
dHJhZGljdGlvbi4KQEAgLTQ5NDUsNTEgKzQ5NDcsMTUgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bf
Y3JlYXRlX2dlbmVyYXRvcjogewotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50
aWMpOwotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BDcmVhdGVHZW5lcmF0b3I+KCk7Ci0gICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY2FsbGVlKSk7Ci0KLSAgICAgICAgICAgIGJvb2wgYWxy
ZWFkeUVtaXR0ZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KCptX3ZtKTsKLSAgICAg
ICAgICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1
bmN0aW9uID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2NhY2hlZENhbGxlZS51bnZh
bGlkYXRlZEdldCgpOwotICAgICAgICAgICAgICAgIGlmIChjYWNoZWRGdW5jdGlvbgotICAgICAg
ICAgICAgICAgICAgICAmJiBjYWNoZWRGdW5jdGlvbiAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNh
bGxlZU9iamVjdHMoKQotICAgICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0czxKU0Z1bmN0
aW9uPigqbV92bSkpOwotCi0gICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4g
PSBtX2dyYXBoLmZyZWV6ZShjYWNoZWRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgY2FsbGVlKTsKLQotICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjYWNoZWRGdW5j
dGlvbik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAoZnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFy
ZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
cmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVE
YXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6OmluZm8oKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFs
T2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKE5l
d0dlbmVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0aWxsIGxp
dmUgdXAgdG8gdGhpcyBwb2ludC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFBoYW50b20sIGNhbGxlZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFk
eUVtaXR0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCFhbHJlYWR5RW1pdHRlZCkKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChDcmVhdGVHZW5lcmF0b3IsIGNhbGxlZSkpOwor
ICAgICAgICAgICAgaGFuZGxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChKU0dlbmVyYXRvcjo6
aW5mbygpLCBDcmVhdGVHZW5lcmF0b3IsIE5ld0dlbmVyYXRvciwgY3VycmVudEluc3RydWN0aW9u
LT5hczxPcENyZWF0ZUdlbmVyYXRvcj4oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
cmVhdGVfZ2VuZXJhdG9yKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2Fz
eW5jX2dlbmVyYXRvcjogeworICAgICAgICAgICAgaGFuZGxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9i
amVjdChKU0FzeW5jR2VuZXJhdG9yOjppbmZvKCksIENyZWF0ZUFzeW5jR2VuZXJhdG9yLCBOZXdB
c3luY0dlbmVyYXRvciwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFzeW5jR2VuZXJh
dG9yPigpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hc3luY19nZW5lcmF0
b3IpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld09iamVjdD4o
KTsKICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwKQEAgLTc1MDEsNiArNzQ2Nyw1MSBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVOZXdGdW5jRXhwKE5vZGVUeXBlIG9wLCBCeXRl
Y29kZSBieXRlY29kZSkKICAgICBhZGRUb0dyYXBoKFBoYW50b20sIHNjb3BlKTsKIH0KIAordGVt
cGxhdGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ3Jl
YXRlSW50ZXJuYWxGaWVsZE9iamVjdChjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgTm9kZVR5
cGUgY3JlYXRlT3AsIE5vZGVUeXBlIG5ld09wLCBCeXRlY29kZSBieXRlY29kZSkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
dXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY2FsbGVlKSk7CisKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4oKm1fdm0pOwor
ICAgIGlmICghZnVuY3Rpb24pIHsKKyAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9jYWNoZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQo
KTsKKyAgICAgICAgaWYgKGNhY2hlZEZ1bmN0aW9uCisgICAgICAgICAgICAmJiBjYWNoZWRGdW5j
dGlvbiAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKQorICAgICAgICAgICAg
JiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZENlbGwpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24tPmlu
aGVyaXRzPEpTRnVuY3Rpb24+KCptX3ZtKSk7CisKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiBm
cm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShjYWNoZWRGdW5jdGlvbik7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGNhbGxlZSk7CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNhY2hlZEZ1bmN0aW9uKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChmdW5jdGlvbikgeworICAgICAgICBpZiAoRnVuY3Rp
b25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgeworICAgICAgICAg
ICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxs
VmFsaWQoKSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURh
dGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpID09IGNsYXNzSW5mbworICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmds
b2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAgICAgICAgICAmJiByYXJl
RGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOworICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxv
Y2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgobmV3T3AsIE9wSW5m
byhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKSk7CisgICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSBjYWxsZWUgaXMgc3RpbGwgbGl2ZSB1cCB0byB0aGlzIHBvaW50LgorICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxlZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwg
YWRkVG9HcmFwaChjcmVhdGVPcCwgY2FsbGVlKSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlKCkKIHsKICAgICAvLyBTZXQgZHVyaW5nIGNvbnN0cnVjdGlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3MWVjN2YxNjI4NDk1
ZWIyYzg0MDQ1OTUxNzg1NzEwMmYxZDhlNDBhLi5kMzM3NmJkMjFjYWU4OTNmZWVmNzE4MDhhMDBl
ODFlNzdjNTc1ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAg
ICBjYXNlIG9wX2NyZWF0ZV90aGlzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Byb21pc2U6CiAgICAg
Y2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOgorICAgIGNhc2Ugb3BfY3JlYXRlX2FzeW5jX2dlbmVy
YXRvcjoKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICBjYXNlIG9wX2JpdGFuZDoKICAgICBjYXNl
IG9wX2JpdG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCAwODI4ZmQ4MTI4NzMyMDA2NWI2YjNiNTA0MTI2NDA5MjVmNzg0NDhlLi4wYzIzNTUyZmY5MTlh
ZTk5MDZhNWM1YTcwZmIxZmNlM2VjNGQxM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtNjY5LDYgKzY2OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBj
YXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAg
IGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CiAgICAgY2FzZSBPYmpl
Y3RLZXlzOgpAQCAtMTU2OSw2ICsxNTcwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgY2FzZSBOZXdHZW5l
cmF0b3I6CisgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoK
ICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXgg
ZDJmN2JhNDc4ZDhlYzgzNGNkMjUwOGQ1M2JkOWZhMTRkMjgwMDkwZS4uZWY2OGZkNTRmNGU0ZDdh
YWQ1Njg1ODEwYzMzNDg0MTJlMGEwOThhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgYm9vbCBj
bG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdP
YmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAg
IGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBO
ZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGYzZjVj
YjYwZDg4YWM1YzY0NTJkZGYxNWJlNGM0NWRmZTEwOGQ5YTcuLjU5Y2NjODEwNzVmYTAzMDJiMjI2
MGZhNGJlMTNiNTA0ZDczOTkzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NzgsMjYgKzc3OCw0MSBAQCBj
bGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJh
dG9yOiB7Ci0gICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAg
ICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV92YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2dyYXBoLm1fdm0sIGJhc2UpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+
cmFyZURhdGEoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByYXJlRGF0
YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6aW5m
bygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmds
b2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlz
U3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmZyZWV6ZShyYXJlRGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9OZXdHZW5lcmF0b3IobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShz
dHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXN5
bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGZvbGRDb25zdGFudCA9IFsmXSAo
Tm9kZVR5cGUgbmV3T3AsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSB7CisgICAgICAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBpZiAo
SlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPihtX2dyYXBoLm1fdm0sIGJhc2UpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJh
cmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRh
LT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBy
YXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IGNs
YXNzSW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVj
dHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFy
ZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9OZXdJbnRlcm5hbEZpZWxk
T2JqZWN0KG5ld09wLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENy
ZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgICAgICAgICAgICAgZm9sZENvbnN0YW50KE5ld0dlbmVy
YXRvciwgSlNHZW5lcmF0b3I6OmluZm8oKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgICAgICAg
ICAgICAgIGZvbGRDb25zdGFudChOZXdBc3luY0dlbmVyYXRvciwgSlNBc3luY0dlbmVyYXRvcjo6
aW5mbygpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IGE5OGY3OTVhODhmODc2MWYyMjdjNjRmMDViY2YyMDdlMzg2YTE1MGUu
LjVkMmIwNWQzZmQxOWIzOGMxYzdiODUyNmIyYzRjNTc5M2EzZDE0YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMzNCw2ICszMzQsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNh
c2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICBjYXNlIENy
ZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgIGNhc2UgT2Jq
ZWN0S2V5czoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtMzQzLDYgKzM0
NCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6Cisg
ICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU3ByZWFkOgogICAgIGNhc2UgU3ByZWFkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzdkNzQxODY5N2MyZGMyMDA5ZjAzYWU1
YzM0NGUzODMwYjI5MjM4Ny4uM2YxYzg5MTUzMjVjMjQzODE0NjI4MzgzNTFhNzQwYWM2OWU2MmJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0x
NjUyLDYgKzE2NTIsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgICAg
IGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9y
OgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0MTAsNiArMjQx
MSw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5l
d09iamVjdDoKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvcjoKKyAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdS
ZWdleHA6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZh
bDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggZDY4YmE2ZWQ0YzY3Zjc3NmZi
NmVlYjA0MGY1N2NhMDBjNmU5NjI5MS4uMTFkOGI0MGZhNjMyNmZkOTVjMmRkNjJkZjdmNzZhZDdi
NjViMmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTc2NywxMCArNzY3
LDEwIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcEluZm8yID0gaW50ZXJuYWw7CiAgICAg
fQogCi0gICAgdm9pZCBjb252ZXJ0VG9OZXdHZW5lcmF0b3IoUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUpCisgICAgdm9pZCBjb252ZXJ0VG9OZXdJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGVU
eXBlIG5ld09wLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX29wID09IENyZWF0ZUdlbmVyYXRvcik7Ci0gICAgICAgIHNldE9wQW5kRGVmYXVs
dEZsYWdzKE5ld0dlbmVyYXRvcik7CisgICAgICAgIEFTU0VSVChtX29wID09IENyZWF0ZUFzeW5j
R2VuZXJhdG9yIHx8IG1fb3AgPT0gQ3JlYXRlR2VuZXJhdG9yKTsKKyAgICAgICAgc2V0T3BBbmRE
ZWZhdWx0RmxhZ3MobmV3T3ApOwogICAgICAgICBjaGlsZHJlbi5yZXNldCgpOwogICAgICAgICBt
X29wSW5mbyA9IHN0cnVjdHVyZTsKICAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigp
OwpAQCAtMTkyMyw2ICsxOTIzLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIE5ld09i
amVjdDoKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
cjoKKyAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdTdHJp
bmdPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA0MTAxZjVjY2I2ZTQ4MzQ1
OTRjOWM5ODI2YTNlNDYyZmM4MTA4NTc2Li44Y2EzYjc5MjlmNzYxYTAxNjBjNmUzODRlYTM4Mjc1
YzM0NmZkZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC01
NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhD
cmVhdGVUaGlzLCBOb2RlUmVzdWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRl
IHNpbmNlIHdlJ3JlIHJldHVybmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhDcmVhdGVQ
cm9taXNlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ3Jl
YXRlR2VuZXJhdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oQ3JlYXRlQXN5bmNHZW5lcmF0b3IsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNldENh
bGxlZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBOb2RlUmVzdWx0SW50MzIpIFwKQEAgLTM0NCw2ICszNDUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTmV3T2JqZWN0LCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhOZXdQcm9taXNlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhO
ZXdHZW5lcmF0b3IsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5ld0FzeW5jR2VuZXJhdG9y
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9k
ZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOZXdBcnJheVdpdGhTcHJlYWQsIE5vZGVSZXN1bHRK
UyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU2l6ZSwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTBmNzA4MjA5NjYzZjk1MzNhNDZmZDIxYjExMTNmZTMz
ZTNhY2Q0OS4uNTMzY2JmMTgxYTI4OTBmMWZlNjg0NzVmM2QxNzQxYzhhYmZkM2JjZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00MDgsNiArNDA4
LDE2IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RyCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpKTsKIH0KIAorSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgbnVsbHB0ciwgY29uc3RydWN0b3IsIGdsb2JhbE9iamVjdC0+
YXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0FzeW5jR2VuZXJh
dG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSkpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCAyOTQzOTJlYzk3ZDA2N2U5ZDJkM2MwNDA3OTU0MTM4OTk4MDczMmVhLi5h
ZGQwY2FlMjZlYjBmYTMxNWM3MmE3NTcyMzUyMjIzMzBlYjEzNmRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNTEsNiArNTEsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqLCBKU09iamVjdCogY29u
c3RydWN0b3IsIHVpbgogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVByb21p
c2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbnRlcm5h
bFByb21pc2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVj
dCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVH
ZW5lcmF0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVj
dCopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVB
c3luY0dlbmVyYXRvcihFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFs
T2JqZWN0KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub1RoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJp
Y3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQxZjZjMzdjNGEwMGNlZDc0
MzQ0ZGFjODY4MDZjZDQxNjZjMzBkNDUuLmU3MmFhNWRkMjU3ZjMyNDZlMWJkYjZjYzZjODU5NTlm
Mjg5ZTk1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDE5LDYgKzEwMTksOCBAQCBj
bGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAKICAgICAg
ICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAg
ICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgorICAgICAgICBjYXNlIE5ld0FzeW5jR2Vu
ZXJhdG9yOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggNTg4Yjk4ZGY1YzRkZGRkYmM0M2YyNGE0MDVhYjY0
MTA4ZWQ4N2MzYi4uNDYwNjFjODZjZjk1YzA3ODE2MWY0YTU5MjRjZDNhNTI0NmNkYzAyMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTE4MCw2
ICsxODAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQ3JlYXRlVGhpczoK
ICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAg
Y2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBj
YXNlIE9iamVjdEtleXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CkBAIC0zMjQsNiArMzI1LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5l
d1Byb21pc2U6CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgY2FzZSBOZXdBc3luY0dlbmVy
YXRvcjoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAg
ICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBjZWRlOTAyOWE4YjllMTQyYjliOTgwYTM0ODQ2ZmJi
NTJmMmQ2ZmVjLi5iNjlhYzAzMjgxMzNkMWYyYzdhMTA3NWM5M2M0ZjA5Njg2M2MyYzM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
MTI3NjYsNyArMTI3NjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJv
bWlzZShOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcihOb2RlKiBub2RlKQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVyYXRpb24+Cit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2Rl
LCBPcGVyYXRpb24gb3BlcmF0aW9uKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIApAQCAt
MTI3OTIsMjUgKzEyNzk0LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVH
ZW5lcmF0b3IoTm9kZSogbm9kZSkKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CiAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSArIEludGVybmFsRnVu
Y3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQ
Uik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVy
czo6WmVybywgc3RydWN0dXJlR1BSKSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKEpT
R2VuZXJhdG9yOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyKEpTQ2xhc3M6OmluZm8oKSksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9P
ZmZzZXQoKSkpKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
aml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSkpKTsKIAogICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1c3RlZEltbVB0cihu
dWxscHRyKTsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8SlNHZW5lcmF0
b3I+KHJlc3VsdEdQUiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3Jh
dGNoMkdQUiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNHZW5lcmF0b3IpKTsKLSAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc051bGwoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6UG9seVByb3RvKSkpKTsKLSAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmll
bGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSkpOwot
ICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJ
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5l
eHQpKSkpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6
b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6
RmllbGQ6OlRoaXMpKSkpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVk
KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dl
bmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhL
bm93blNpemU8SlNDbGFzcz4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1dHRlcmZseSwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0NsYXNzKSk7CisgICAg
YXV0byBpbml0aWFsVmFsdWVzID0gSlNDbGFzczo6aW5pdGlhbFZhbHVlcygpOworICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IEpTQ2xhc3M6Om51bWJlck9mSW50ZXJuYWxGaWVs
ZHM7ICsraW5kZXgpCisgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGluaXRpYWxWYWx1
ZXNbaW5kZXhdLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChpbmRleCkpKTsKICAgICBtX2pp
dC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IsIHJl
c3VsdEdQUiwgY2FsbGVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBnbG9iYWxPYmplY3QpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSkpOwog
CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUqIG5vZGUpCit7CisgICAgY29tcGlsZUNy
ZWF0ZUludGVybmFsRmllbGRPYmplY3Q8SlNHZW5lcmF0b3I+KG5vZGUsIG9wZXJhdGlvbkNyZWF0
ZUdlbmVyYXRvcik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBc3lu
Y0dlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxk
T2JqZWN0PEpTQXN5bmNHZW5lcmF0b3I+KG5vZGUsIG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJh
dG9yKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld09iamVjdChOb2RlKiBu
b2RlKQogewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0xMjg2Nyw3ICsxMjg3
Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdQcm9taXNlKE5vZGUqIG5vZGUp
CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBK
U0NsYXNzLCB0eXBlbmFtZSBPcGVyYXRpb24+Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3SW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcmF0aW9uKQog
ewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2gxKHRoaXMpOwpAQCAtMTI4ODEsMTkgKzEyODkyLDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdHZW5lcmF0b3IoTm9kZSogbm9kZSkKIAogICAgIEZyb3plblZhbHVlKiBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwotICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBz
bG93Q2FzZXMsIHNpemVvZihKU0dlbmVyYXRvcikpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZh
bHVlKGpzTnVsbCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pKSkpOwotICAgIG1faml0LnN0b3Jl
VHJ1c3RlZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKSk7Ci0gICAgbV9qaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmll
bGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCkpKSk7Ci0g
ICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZklu
dGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhp
cykpKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+Ojpv
ZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6RnJhbWUpKSkpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxK
U0NsYXNzPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBz
Y3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTQ2xhc3MpKTsKKyAg
ICBhdXRvIGluaXRpYWxWYWx1ZXMgPSBKU0NsYXNzOjppbml0aWFsVmFsdWVzKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgSlNDbGFzczo6bnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkczsgKytpbmRleCkKKyAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoaW5pdGlhbFZh
bHVlc1tpbmRleF0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSkpOwogICAgIG1f
aml0Lm11dGF0b3JGZW5jZShtX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVyYXRvciwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb24sIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3IoTm9k
ZSogbm9kZSkKK3sKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU0dlbmVyYXRv
cj4obm9kZSwgb3BlcmF0aW9uTmV3R2VuZXJhdG9yKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKE5vZGUqIG5vZGUpCit7CisgICAgY29tcGlsZU5l
d0ludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVyYXRvcj4obm9kZSwgb3BlcmF0aW9uTmV3
QXN5bmNHZW5lcmF0b3IpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Qcmlt
aXRpdmUoTm9kZSogbm9kZSkKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUs
IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCmluZGV4IGUzNzJlOTEyNzA2YTNmNWMzYTg3MmRjMTQ3MTJkYjViNDE5Nzk2Y2YuLmFkNWRi
ZmU3OWRkMjc2NDRkNmJjMzZmZWZjZmE1OWVlNDQxOWIwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0NzYsOSArMTQ3NiwxMSBAQCBj
bGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcyhOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
Q3JlYXRlR2VuZXJhdG9yKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBc3luY0dlbmVy
YXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3T2JqZWN0KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdQcm9taXNlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3Io
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVUb1ByaW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93
Q2hpY2tlblByb2xvZ3VlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlja2Vu
VGFpbChOb2RlKik7CkBAIC0xNDg4LDYgKzE0OTAsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgIHZvaWQgY29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVT
dHJpbmdDb2RlUG9pbnRBdChOb2RlKik7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNz
LCB0eXBlbmFtZSBPcGVyYXRpb24+CisgICAgdm9pZCBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVs
ZE9iamVjdChOb2RlKiwgT3BlcmF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNz
LCB0eXBlbmFtZSBPcGVyYXRpb24+CisgICAgdm9pZCBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9i
amVjdChOb2RlKiwgT3BlcmF0aW9uKTsKKwogICAgIHZvaWQgbW92ZVRydWVUbyhHUFJSZWcpOwog
ICAgIHZvaWQgbW92ZUZhbHNlVG8oR1BSUmVnKTsKICAgICB2b2lkIGJsZXNzQm9vbGVhbihHUFJS
ZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggNDFjNDQ2NzkyMDZiZTY4YjQwMmM2YjA5YmIxYWIzNmQ0M2VjOGI3
Mi4uMDI4NDdiOTY2NTgxNTc5NjAwMGJiOTc0MzFiMTdjYjFhZjZiNGQ4YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBA
IC0zMTY2LDYgKzMxNjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJh
dG9yOiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVBc3luY0dlbmVyYXRvcihub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOZXdPYmplY3Q6IHsKICAgICAgICAgY29tcGls
ZU5ld09iamVjdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMTgxLDYgKzMxODYsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVO
ZXdBc3luY0dlbmVyYXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBHZXRDYWxsZWU6IHsKICAgICAgICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAppbmRleCBhMzViNGVkOTJmN2YwMjlkZDJjZmZjYzNmOGRjMDBjYTZkMGIwY2NlLi40
N2MxODJhNTg5NjlkZWNjMmQ1ZTlmMzg3YWE4Y2FhZDhmNGY0ZWIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM0OTIsNiAr
MzQ5MiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3Iobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0
ZUFzeW5jR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qobm9kZSk7CkBA
IC0zNTA4LDYgKzM1MTMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9y
OiB7CisgICAgICAgIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAgICAgY29tcGlsZUdldENh
bGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDU0
OTE3ZGIzNDkxZTJkN2E5MjliNTcxY2M3MzYxMmJhZDE3Nzc1ODQuLjc1ODY3YmY3NzVmOTUyZGUw
OWU1NWUyOTMzNDUyYTk2ZmI0MjQ5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0zMjMs
NiArMzIzLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE5ld1By
b21pc2U6CiAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICAgICAgICAgIGNhc2Ug
TmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5OgogICAgICAgICAg
ICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCBkNWI1NTI4ZTg0YjU5NzVmNjk3NDFjYTM1MGYzNzdkYTkwODRmZTE1Li5jNjFmOWU2NTgwYmYz
YjZlNDVjNjE1MGI5OWYwZjRiODNjMzFlNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC03Niw2ICs3Niw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
IGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICBjYXNlIE5ld0Fz
eW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTmV3U3lt
Ym9sOgogICAgIGNhc2UgTmV3QXJyYXk6CkBAIC0zODMsNiArMzg0LDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVUaGlzOgog
ICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICBj
YXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CiAgICAg
Y2FzZSBEYXRhVmlld0dldEZsb2F0OgogICAgIGNhc2UgRGF0YVZpZXdTZXQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODY3YmQ3N2I4NTg0
NjY2YWFkMjk5NzI0NDVkNDQ3YmY2ZTNmZWE5Zi4uMDg3MGE3ZmExYjZmM2Q2OWQ2NDIwZjcwZTQ2
OTE1YjJkMGIxYzQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIkpJVFJpZ2h0U2hpZnRHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJKSVRTdWJHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5j
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNB
c3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yLmgiCkBAIC0xMDU1LDYgKzEwNTYsOSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgICAgIGNvbXBpbGVOZXdH
ZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0FzeW5jR2Vu
ZXJhdG9yOgorICAgICAgICAgICAgY29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgICAgICAgICBj
b21waWxlTmV3U3RyaW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzYsNiAr
MTA4MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJh
dG9yOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcigpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CisgICAgICAgICAgICBj
b21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNTkzMiwzMSArNTkzOSw0MCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKCkKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVyYXRpb24+CisgICAgdm9pZCBj
b21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdChPcGVyYXRpb24gb3BlcmF0aW9uKQogICAgIHsK
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogCiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dD
YXNlKTsKIAotICAgICAgICBMVmFsdWUgZ2VuZXJhdG9yID0gYWxsb2NhdGVPYmplY3Q8SlNHZW5l
cmF0b3I+KG1fbm9kZS0+c3RydWN0dXJlKCksIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsK
LSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c051bGwoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9p
bnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQ
b2x5UHJvdG8pXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvclN0YXRlOjpJbml0KSkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJh
dG9yOjpGaWVsZDo6U3RhdGUpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJ
bnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMu
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KV0pOwotICAgICAgICBtX291dC5zdG9yZTY0
KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJh
dG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcyldKTsKLSAgICAgICAg
bV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVy
bmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1l
KV0pOworICAgICAgICBMVmFsdWUgb2JqZWN0ID0gYWxsb2NhdGVPYmplY3Q8SlNDbGFzcz4obV9u
b2RlLT5zdHJ1Y3R1cmUoKSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICBh
dXRvIGluaXRpYWxWYWx1ZXMgPSBKU0NsYXNzOjppbml0aWFsVmFsdWVzKCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IEpTQ2xhc3M6Om51bWJlck9mSW50ZXJuYWxG
aWVsZHM7ICsraW5kZXgpCisgICAgICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxWYWx1ZXNbaW5kZXhdKSksIG9iamVjdCwgbV9oZWFw
cy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW2luZGV4XSk7CiAgICAg
ICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKGdlbmVyYXRvcik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1
bHQgPSBtX291dC5hbmNob3Iob2JqZWN0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwot
ICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChw
b2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yKSwgbV9j
YWxsRnJhbWUsIGZyb3plblBvaW50ZXIobV9ncmFwaC5mcmVlemVTdHJvbmcobV9ub2RlLT5zdHJ1
Y3R1cmUoKS5nZXQoKSkpKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b24pLCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRlcihtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX25v
ZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKCkKKyAg
ICB7CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTR2VuZXJhdG9yPihv
cGVyYXRpb25OZXdHZW5lcmF0b3IpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZU5ld0FzeW5j
R2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
PEpTQXN5bmNHZW5lcmF0b3I+KG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yKTsKKyAgICB9CisK
ICAgICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoKQogICAgIHsKICAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX25vZGUtPnN0cnVjdHVyZSgpOwpAQCAtNjM3Myw3
ICs2Mzg5LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcigpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgorICAgIHZvaWQgY29t
cGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QoT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKQEAgLTYzOTgsMjQgKzY0MTUsMjIg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVy
bzY0KHN0cnVjdHVyZSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoaGFzU3RydWN0dXJlKSk7
CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzU3RydWN0dXJlLCBjaGVja0dsb2JhbE9iamVj
dENhc2UpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihz
dHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksIG1fb3V0LmNvbnN0SW50UHRy
KEpTR2VuZXJhdG9yOjppbmZvKCkpKSwgdXN1YWxseShjaGVja0dsb2JhbE9iamVjdENhc2UpLCBy
YXJlbHkoc2xvd0Nhc2UpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0
LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9jbGFzc0luZm8pLCBtX291dC5j
b25zdEludFB0cihKU0NsYXNzOjppbmZvKCkpKSwgdXN1YWxseShjaGVja0dsb2JhbE9iamVjdENh
c2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjaGVja0ds
b2JhbE9iamVjdENhc2UsIGZhc3RBbGxvY2F0aW9uQ2FzZSk7CiAgICAgICAgIG1fb3V0LmJyYW5j
aChtX291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVf
Z2xvYmFsT2JqZWN0KSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSksIHVzdWFsbHkoZmFzdEFs
bG9jYXRpb25DYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oZmFzdEFsbG9jYXRpb25DYXNlLCBzbG93Q2FzZSk7Ci0gICAgICAgIExWYWx1ZSBnZW5lcmF0
b3IgPSBhbGxvY2F0ZU9iamVjdDxKU0dlbmVyYXRvcj4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJa
ZXJvLCBzbG93Q2FzZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6UG9seVByb3RvKV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKSksIGdlbmVyYXRvciwgbV9oZWFw
cy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKV0pOwotICAgICAgICBtX291dC5zdG9y
ZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2Vu
ZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCldKTsKLSAgICAg
ICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2lu
dGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRo
aXMpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpGcmFtZSldKTsKKyAgICAgICAgTFZhbHVlIG9iamVjdCA9IGFsbG9jYXRlT2Jq
ZWN0PEpTQ2xhc3M+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAg
ICAgICBhdXRvIGluaXRpYWxWYWx1ZXMgPSBKU0NsYXNzOjppbml0aWFsVmFsdWVzKCk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IEpTQ2xhc3M6Om51bWJlck9mSW50
ZXJuYWxGaWVsZHM7ICsraW5kZXgpCisgICAgICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxWYWx1ZXNbaW5kZXhdKSksIG9iamVjdCwg
bV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW2luZGV4XSk7
CiAgICAgICAgIG11dGF0b3JGZW5jZSgpOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGdlbmVyYXRvcik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZh
c3RSZXN1bHQgPSBtX291dC5hbmNob3Iob2JqZWN0KTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRp
b24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZt
Q2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciksIG1f
Y2FsbEZyYW1lLCBjYWxsZWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCkpKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb24pLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTY0MjQs
NiArNjQzOSwxNiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKCkKKyAgICB7
CisgICAgICAgIGNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0PEpTR2VuZXJhdG9yPihv
cGVyYXRpb25DcmVhdGVHZW5lcmF0b3IpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNyZWF0
ZUFzeW5jR2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVJbnRlcm5hbEZp
ZWxkT2JqZWN0PEpTQXN5bmNHZW5lcmF0b3I+KG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9y
KTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVTcHJlYWQoKQogICAgIHsKICAgICAgICAgaWYg
KG1fbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRvbU5ld0FycmF5QnVmZmVyKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYmJmY2ZlMzBmYTM2MGZkZjUzZDgzN2E3Yjk3YTU0
MjM2N2UyOTVhZi4uZWZhZDU1YzFlNDIwMjNjMGEwYTYzYjMxNTgzZThhYWZiZmQyZDNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzEzLDYgKzMxMyw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX3By
b21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKG5ld19wcm9taXNlKQogICAgICAgICBERUZJ
TkVfU0xPV19PUChjcmVhdGVfZ2VuZXJhdG9yKQorICAgICAgICBERUZJTkVfU0xPV19PUChjcmVh
dGVfYXN5bmNfZ2VuZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV19PUChuZXdfZ2VuZXJhdG9y
KQogICAgICAgICBERUZJTkVfU0xPV19PUChwb3cpCiAKQEAgLTU4Myw2ICs1ODQsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
U0xPV19PUChjcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3Jl
YXRlX3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV9nZW5l
cmF0b3IpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV9hc3luY19nZW5l
cmF0b3IpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3RoaXMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3ByaW1pdGl2ZSkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX1NMT1dfT1AodG9fbnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKaW5kZXggM2MzZTM2MmU1NzUyMzk3Yzk3ZjE2Y2QzOWYxMDM3NDEwNjcx
YmNmNS4uNjU2ZTdkZDg2YWIyM2M5NjhmZTliNzgxZWRhYWM0YTVhNWZiYmQyYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNDAyLDYgKzE0MDIs
MTQgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvcihFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXIKICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OmNy
ZWF0ZSh2bSwgc3RydWN0dXJlKTsKIH0KIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FzeW5jR2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdS
ZWdleHAoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHJlZ2V4cFB0cikKIHsKICAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDFiNzQ5YjIzMGY4MDJkM2ZjNDJmY2ZhMTYwNDZi
YTg5ZjMwYzhjNWIuLmQyNTMyMzE0YWY3M2Q5MjU4MDg0MTIwZjZhNWU0OTQxN2ZlY2VlNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC00MjIsNiArNDIy
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3UHJvbWlzZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50ZXJuYWxQcm9taXNlKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdHZW5lcmF0b3IoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdSZWdleHAoRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogVW51c2VkUHRy
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlVHJhcHMoRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMGZlYTA5NjAxZDI3MWI2ZWYyMWM1
ZTliNGIwZTQyYzRjNTZiNDBkNC4uMmQ5YTE3MjQ2MmFjZTlmZTNhNjFhOWYwY2UwY2MyNmI0OTZm
ZTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMTQ5Niw2ICsxNDk2LDcgQEAgc2xvd1BhdGhPcChjcmVhdGVfc2Nv
cGVkX2FyZ3VtZW50cykKIHNsb3dQYXRoT3AoY3JlYXRlX3RoaXMpCiBzbG93UGF0aE9wKGNyZWF0
ZV9wcm9taXNlKQogc2xvd1BhdGhPcChjcmVhdGVfZ2VuZXJhdG9yKQorc2xvd1BhdGhPcChjcmVh
dGVfYXN5bmNfZ2VuZXJhdG9yKQogc2xvd1BhdGhPcChkZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkp
CiBzbG93UGF0aE9wKGRlZmluZV9kYXRhX3Byb3BlcnR5KQogc2xvd1BhdGhPcChlbnVtZXJhdG9y
X2dlbmVyaWNfcG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCBhOTA4ZTAzMGQ4ZGU5OTAxMDk0MmZjNjEyODBjMjgxYzMw
OGE0YTEwLi45MjRmN2U1YjM1MjUyYjQzODFhNmIyMjgyMTZiOGQ3NjA3OGQ4MTEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTMwOSwxNiArMzA5LDE2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcHJvbWlzZSkK
ICAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0
ZV9nZW5lcmF0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBCeXRlY29k
ZT4KK3N0YXRpYyBKU0NsYXNzKiBjcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtLCBjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIFN0cnVjdHVyZSogYmFzZVN0
cnVjdHVyZSkKIHsKLSAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BD
cmVhdGVHZW5lcmF0b3I+KCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU09iamVjdCogY29uc3RydWN0b3JBc09iamVjdCA9IGFzT2Jq
ZWN0KEdFVChieXRlY29kZS5tX2NhbGxlZSkuanNWYWx1ZSgpKTsKIAotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgbnVsbHB0ciwgY29uc3RydWN0b3JBc09iamVjdCwgZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JT
dHJ1Y3R1cmUoKSk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNHZW5lcmF0b3IqIHJl
c3VsdCA9IEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShl
eGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvckFzT2JqZWN0LCBiYXNlU3RydWN0dXJlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBKU0NsYXNzKiByZXN1bHQg
PSBKU0NsYXNzOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAKICAgICBKU0Z1bmN0aW9uKiBjb25z
dHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBjb25zdHJ1Y3RvckFzT2Jq
ZWN0KTsKICAgICBpZiAoY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3ItPmNhblVzZUFsbG9jYXRp
b25Qcm9maWxlKCkpIHsKQEAgLTMyOCw3ICszMjgsMjEgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9nZW5lcmF0b3IpCiAgICAgICAgIGVsc2UgaWYgKGNhY2hlZENhbGxlZS51bnZh
bGlkYXRlZEdldCgpICE9IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpICYmIGNh
Y2hlZENhbGxlZS5nZXQoKSAhPSBjb25zdHJ1Y3RvcikKICAgICAgICAgICAgIGNhY2hlZENhbGxl
ZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0
cygpKTsKICAgICB9Ci0gICAgUkVUVVJOKHJlc3VsdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCByZXN1bHQpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2dl
bmVyYXRvcikKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BD
cmVhdGVHZW5lcmF0b3I+KCk7CisgICAgUkVUVVJOKGNyZWF0ZUludGVybmFsRmllbGRPYmplY3Q8
SlNHZW5lcmF0b3I+KGV4ZWMsIHZtLCBieXRlY29kZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5nZW5lcmF0b3JTdHJ1Y3R1cmUoKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcikKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BDcmVhdGVBc3luY0dlbmVyYXRvcj4oKTsKKyAgICBSRVRVUk4oY3Jl
YXRlSW50ZXJuYWxGaWVsZE9iamVjdDxKU0FzeW5jR2VuZXJhdG9yPihleGVjLCB2bSwgYnl0ZWNv
ZGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUo
KSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggN2Y5
MGIxNDBiODk3OTBmZTE0YzQzMDdmMWEyMGY3NGZkOWQzZmJiMS4uZDVkNmY3ZTI0MDBkYjdjOTBl
ZDFmMzY5ZWJmODMyNzgyNmQ5NGExYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTM4NSw2ICszODUsNyBAQCBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2lzX3Zhcl9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Byb21pc2UpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfZ2VuZXJhdG9yKTsKK1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdjY2M2YzM1
ODViYjhhYzdjMzhlODM1MGYwOWM1YzdjNTJkNTA5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuY3BwCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBc3lu
Y0dlbmVyYXRvci5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gSlNBc3luY0dlbmVyYXRvcjo6c19pbmZvID0geyAiQXN5bmNHZW5lcmF0b3Ii
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
QXN5bmNHZW5lcmF0b3IpIH07CisKK0pTQXN5bmNHZW5lcmF0b3IqIEpTQXN5bmNHZW5lcmF0b3I6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTQXN5bmNHZW5l
cmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNHZW5l
cmF0b3I+KHZtLmhlYXApKSBKU0FzeW5jR2VuZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGdl
bmVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBnZW5lcmF0b3I7Cit9CisK
K1N0cnVjdHVyZSogSlNBc3luY0dlbmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSlNBc3luY0dlbmVyYXRvclR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwor
SlNBc3luY0dlbmVyYXRvcjo6SlNBc3luY0dlbmVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTQXN5bmNH
ZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRl
eCkKKyAgICAgICAgaW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNbaW5k
ZXhdKTsKK30KKwordm9pZCBKU0FzeW5jR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0FzeW5jR2VuZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNTgw
NGEzOTczMDcyN2Q5ODkwYWNiODcwNTRhN2VlNGVhOTlkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKQEAgLTAsMCAr
MSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNHZW5lcmF0
b3IuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBKU0FzeW5jR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGw8OD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsPDg+OworCisgICAgLy8gSlNBc3luY0dlbmVyYXRvciBoYXMgb25l
IGlubGluZSBzdG9yYWdlIHNsb3QsIHdoaWNoIGlzIHBvaW50aW5nIGludGVybmFsRmllbGQoMCku
CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5l
Q2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCBp
bmxpbmVDYXBhY2l0eSA9PSAwVSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNBc3luY0dlbmVy
YXRvcik7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBBc3luY0dlbmVyYXRvclN0YXRlIDogaW50
MzJfdCB7CisgICAgICAgIENvbXBsZXRlZCA9IC0xLAorICAgICAgICBFeGVjdXRpbmcgPSAtMiwK
KyAgICAgICAgU3VzcGVuZGVkU3RhcnQgPSAtMywKKyAgICAgICAgU3VzcGVuZGVkWWllbGQgPSAt
NCwKKyAgICAgICAgQXdhaXRpbmdSZXR1cm4gPSAtNSwKKyAgICB9OworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSA9
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBs
ZXRlZCkpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5l
cmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpOworCisgICAgZW51bSBjbGFzcyBBc3luY0dl
bmVyYXRvclN1c3BlbmRSZWFzb24gOiBpbnQzMl90IHsKKyAgICAgICAgTm9uZSA9IDAsCisgICAg
ICAgIFlpZWxkID0gLTEsCisgICAgICAgIEF3YWl0ID0gLTIKKyAgICB9OworCisgICAgZW51bSBj
bGFzcyBGaWVsZCA6IHVpbnQzMl90IHsKKyAgICAgICAgLy8gRklYTUU6IEpTQXN5bmNHZW5lcmF0
b3Igc2hvdWxkIHN1cHBvcnQgUG9seVByb3RvLCBzaW5jZSBnZW5lcmF0b3IgdGVuZHMgdG8gYmUg
Y3JlYXRlZCB3aXRoIHBvbHkgcHJvdG8gbW9kZS4KKyAgICAgICAgLy8gV2UgcmVzZXJ2ZSB0aGUg
Zmlyc3QgaW50ZXJuYWwgZmllbGQgZm9yIFBvbHlQcm90byBwcm9wZXJ0eS4gVGhpcyBvZmZzZXQg
aXMgaWRlbnRpY2FsIHRvIEpTRmluYWxPYmplY3QncyBmaXJzdCBpbmxpbmUgc3RvcmFnZSBzbG90
IHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgUG9seVByb3RvLgorICAgICAgICBQb2x5UHJvdG8gPSAw
LAorICAgICAgICBTdGF0ZSwKKyAgICAgICAgTmV4dCwKKyAgICAgICAgVGhpcywKKyAgICAgICAg
RnJhbWUsCisgICAgICAgIFN1c3BlbmRSZWFzb24sCisgICAgICAgIFF1ZXVlRmlyc3QsCisgICAg
ICAgIFF1ZXVlTGFzdCwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5h
bEZpZWxkcyA9PSA4KTsKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZklu
dGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsK
KyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSwKKyAgICAgICAg
ICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAgICAg
ICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6Tm9uZSkpLAorICAgICAgICAgICAganNO
dWxsKCksCisgICAgICAgICAgICBqc051bGwoKSwKKyAgICAgICAgfSB9OworICAgIH0KKworICAg
IHN0YXRpYyBKU0FzeW5jR2VuZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworcHJvdGVjdGVkOgorICAgIEpT
QXN5bmNHZW5lcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgKaW5kZXggODZi
YTM3MWIwZDExYzYwZDc4YTIxODkyMjIwYzZkMmIzZDI5YTkwZi4uMGViZjA3NmMxOTI0YmM5YzE0
NGRjMmRjM2FhMDk3NzRjNzViODEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU2LDE5ICs1Niw2
IEBAIGNsYXNzIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0
aW9uIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIEFzeW5jR2VuZXJhdG9yU3RhdGUgOiBpbnQz
Ml90IHsKLSAgICAgICAgQ29tcGxldGVkID0gLTEsCi0gICAgICAgIEV4ZWN1dGluZyA9IC0yLAot
ICAgICAgICBTdXNwZW5kZWRTdGFydCA9IC0zLAotICAgICAgICBTdXNwZW5kZWRZaWVsZCA9IC00
LAotICAgICAgICBBd2FpdGluZ1JldHVybiA9IC01Ci0gICAgfTsKLSAgICAKLSAgICBlbnVtIGNs
YXNzIEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA6IGludDMyX3QgewotICAgICAgICBOb25l
ID0gMCwKLSAgICAgICAgWWllbGQgPSAtMSwKLSAgICAgICAgQXdhaXQgPSAtMgotICAgIH07CiBw
cml2YXRlOgogICAgIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0
YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCmluZGV4IDc1OGI3MDdlNDViOGVhYjMyOTY2ZWI0Yzhh
NWQ1MDdhMGE4OTc5YWMuLjUxNDJkN2Y4N2JlZjBiY2IzZWU5YjU2YjUzZDVlOTY2ODFjYzNmZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKQEAg
LTUzLDExICs1Myw5IEBAIEpTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogdm9pZCBKU0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBpbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaWVsZDo6UG9seVByb3RvKSkuc2V0KHZtLCB0aGlzLCBqc051bGwo
KSk7Ci0gICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlN0YXRl
KSkuc2V0KHZtLCB0aGlzLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JT
dGF0ZTo6SW5pdCkpKTsKLSAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihG
aWVsZDo6TmV4dCkpLnNldCh2bSwgdGhpcywganNVbmRlZmluZWQoKSk7Ci0gICAgaW50ZXJuYWxG
aWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlRoaXMpKS5zZXQodm0sIHRoaXMsIGpz
VW5kZWZpbmVkKCkpOwotICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZp
ZWxkOjpGcmFtZSkpLnNldCh2bSwgdGhpcywganNVbmRlZmluZWQoKSk7CisgICAgYXV0byB2YWx1
ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsgKytpbmRleCkKKyAgICAgICAgaW50ZXJuYWxGaWVs
ZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNbaW5kZXhdKTsKIH0KIAogdm9pZCBKU0dlbmVy
YXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmgKaW5kZXggN2I0NGU3
NzZhZDAwYTk0MDU2NWI2ZDA3N2ZkZDY3ZDMxZDViZDIyYy4uOTA4MWMzYzhmODRhM2EzNjYzY2Ey
OWVhZDE0NGI3ZmI2MWIyNjYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvci5oCkBAIC03Miw2ICs3MiwxNiBAQCBjbGFzcyBKU0dlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDU+IHsKICAgICAgICAgRnJhbWUsCiAg
ICAgfTsKICAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gNSk7Cisg
ICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNWYWx1ZSwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz4gaW5p
dGlhbFZhbHVlcygpCisgICAgeworICAgICAgICByZXR1cm4geyB7CisgICAgICAgICAgICBqc051
bGwoKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEdlbmVyYXRv
clN0YXRlOjpJbml0KSksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAgICAgICAg
anNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgIH0gfTsK
KyAgICB9CiAKICAgICBzdGF0aWMgSlNHZW5lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSop
OwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMGQ1OTg5NGRmNmI2ZWVkM2FlMWYzODM0ZDJkOWI5NzJjZmRj
NGM1ZS4uYTIwYjE2Mzg0ZmQ0OWM5NzQ5Zjk3NjI0NDc1N2U4Y2M3Y2NhOWVkOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODMz
LDYgKzgzMyw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29u
c3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX2FzeW5jR2VuZXJh
dG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQo
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKICAgICBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fYXN5bmNH
ZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgbV9hc3luY0dlbmVyYXRvclN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC0xNzY5LDYgKzE3NzAsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9y
U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJh
dG9yU3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVdpdGhHcm91cHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMWQyYmMyZGEy
MTQxNmNiZWU1ZjkxMDgwMmY3ZjQzYzhiYjAwZjIxYy4uYmUxYmQyNTI3Njk2MGI0MGEzODAyNmMy
ZDBiOWQ1NjhjNTRiYmY5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0zNzUsNiArMzc1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVdp
dGhHcm91cHNTdHJ1Y3R1cmU7CkBAIC03NTQsNiArNzU1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBt
YXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBh
c3luY0dlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNH
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5jcHAKaW5kZXggNTAyYjQ2ZTIyNzFmZTBkNjAwZTAwZDQ0ZjkyMTc0NGM0ZTMxZjE0
MS4uZDFjNjczZTY1ZmE4ZjJhN2I4ZWJjZjRlNWYyMTRmZjk4YzI4YjdlNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCkBAIC05OCw2ICs5OCw3IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0Uo
UmVnRXhwT2JqZWN0VHlwZSkKICAgICBDQVNFKFByb3h5T2JqZWN0VHlwZSkKICAgICBDQVNFKEpT
R2VuZXJhdG9yVHlwZSkKKyAgICBDQVNFKEpTQXN5bmNHZW5lcmF0b3JUeXBlKQogICAgIENBU0Uo
SlNQcm9taXNlVHlwZSkKICAgICBDQVNFKEpTTWFwVHlwZSkKICAgICBDQVNFKEpTU2V0VHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggODE1MWVlZWQyYTdjNTky
YmVlY2E0YzhmZjc2NjVkNGE0YTJlMjE0Yi4uZTkzMGZkMzVhZDY0NmFjYjlmNmY3ZjdjNWQwMjlk
M2FiYTYwZjA2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTEx
MCw2ICsxMTAsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFJlZ0V4cE9iamVjdFR5
cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLAogICAgIEpTR2VuZXJhdG9yVHlwZSwKKyAgICBKU0Fz
eW5jR2VuZXJhdG9yVHlwZSwKICAgICBKU1Byb21pc2VUeXBlLAogICAgIEpTTWFwVHlwZSwKICAg
ICBKU1NldFR5cGUsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGQ3NmM1NTA5Y2ZlNDdmZDYxMzBlNGU5OWNiMjYxNjExYjlkMmJiOTIuLmFh
MzJkYmM3NGY3N2M4MTliMTNhYjZkZjEzMzBkY2NlYTBmNGZjYTggMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIw
MTktMDktMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBb
SlNDXSBBc3luY0dlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5hbCBmaWVsZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTQ5OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWdl
bmVyYXRvci1jb25zdHJ1Y3QtZmFpbHVyZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJv
dyk6CisgICAgICAgIChhc3luYy5nZW4pOgorICAgICAgICAoVHlwZUVycm9yKToKKyAgICAgICAg
KiBzdHJlc3MvYXN5bmMtZ2VuZXJhdG9yLXByb3RvdHlwZS1jaGFuZ2UuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoYXN5bmMuZ2VuKToKKyAgICAgICAgKiBzdHJlc3Mv
YXN5bmMtZ2VuZXJhdG9yLXByb3RvdHlwZS1jbG9zdXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRlc3QuYXN5bmMuZ2VuKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAqIHN0cmVzcy9jcmVhdGUtYXN5bmMtZ2VuZXJhdG9yLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QuYXN5bmMuZ2VuZXJhdG9yKToKKyAgICAgICAgKHRl
c3QpOgorCiAyMDE5LTA5LTI0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVM2XSBDb21lIHVwIHdpdGggYSB0ZXN0IGZvciBQcm94eS5bW0dldE93
blByb3BlcnR5XV0gdGhhdCB0ZXN0cyB0aGUgaXNFeHRlbnNpYmxlIGVycm9yIHdoZW4gdGhlICBy
ZXN1bHQgb2YgdGhlIHRyYXAgaXMgdW5kZWZpbmVkCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1nZW5lcmF0b3ItY29uc3RydWN0LWZhaWx1cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1nZW5lcmF0b3ItY29uc3RydWN0LWZhaWx1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM1M2U2ZTk5
OTkzYTU5Yjg2ZTRkMmI4MWE5YmNmMTM0YzBlM2ZhNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWdlbmVyYXRvci1jb25zdHJ1Y3QtZmFpbHVyZS5qcwpAQCAtMCwwICsx
LDI0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCithc3luYyBmdW5jdGlvbiogZ2VuKCkgeyB9
CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgZ2VuKCkKK30sIGBUeXBlRXJyb3I6IGZ1
bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgZ2VuKCknKWApOwor
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZ2VuLCBbXSwge30p
OworfSwgYFR5cGVFcnJvcjogUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGEgY29uc3RydWN0b3JgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWdlbmVyYXRvci1wcm90b3R5cGUtY2hhbmdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
Z2VuZXJhdG9yLXByb3RvdHlwZS1jaGFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU4OTllN2M3OGI3NmE2
M2M0NDc1NWM5N2RlMjIzMDE5Y2I0ZDBiZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2FzeW5jLWdlbmVyYXRvci1wcm90b3R5cGUtY2hhbmdlLmpzCkBAIC0wLDAgKzEsMTggQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCithc3luYyBmdW5jdGlvbiogZ2VuKCkKK3sKK30KK3ZhciBvcmlnaW5hbFByb3Rv
dHlwZSA9IGdlbi5wcm90b3R5cGU7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsK
KyAgICB2YXIgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcuX19wcm90b19fLCBnZW4ucHJvdG90
eXBlKTsKK30KK2dlbi5wcm90b3R5cGUgPSB7fTsKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShn
Ll9fcHJvdG9fXywgZ2VuLnByb3RvdHlwZSk7CitzaG91bGRCZShnLl9fcHJvdG9fXyAhPT0gb3Jp
Z2luYWxQcm90b3R5cGUsIHRydWUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
Z2VuZXJhdG9yLXByb3RvdHlwZS1jbG9zdXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZ2Vu
ZXJhdG9yLXByb3RvdHlwZS1jbG9zdXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYmQ1N2RlNGJiNzBlOTQ1
YmQ5YTA4YmE5OTBkMWIwNmVlMGYwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1nZW5lcmF0b3ItcHJvdG90eXBlLWNsb3N1cmUuanMKQEAgLTAsMCArMSwyMiBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgYXN5bmMgZnVuY3Rpb24qIGdlbigpCisg
ICAgeworICAgIH0KKyAgICB2YXIgb3JpZ2luYWxQcm90b3R5cGUgPSBnZW4ucHJvdG90eXBlOwor
CisgICAgdmFyIGcgPSBnZW4oKTsKKyAgICBzaG91bGRCZShnLl9fcHJvdG9fXywgZ2VuLnByb3Rv
dHlwZSk7CisgICAgZ2VuLnByb3RvdHlwZSA9IHt9OworICAgIHZhciBnID0gZ2VuKCk7CisgICAg
c2hvdWxkQmUoZy5fX3Byb3RvX18sIGdlbi5wcm90b3R5cGUpOworICAgIHNob3VsZEJlKGcuX19w
cm90b19fICE9PSBvcmlnaW5hbFByb3RvdHlwZSwgdHJ1ZSk7Cit9Citub0lubGluZSh0ZXN0KTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9jcmVhdGUtYXN5bmMtZ2VuZXJhdG9yLmpzIGIvSlNUZXN0cy9zdHJl
c3MvY3JlYXRlLWFzeW5jLWdlbmVyYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODhiMjZhODk5MDczODUz
ZjM4MWEwMzdkNzZlMDA1MjNiMTBjYTBhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvY3JlYXRlLWFzeW5jLWdlbmVyYXRvci5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBhc3luYyBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICB2YXIgZyA9IGdlbmVyYXRvcigpOworICAg
IHNob3VsZEJlKGcuX19wcm90b19fLCBnZW5lcmF0b3IucHJvdG90eXBlKTsKKyAgICByZXR1cm4g
ZzsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciBnMSA9IHRl
c3QoKTsKKyAgICB2YXIgZzIgPSB0ZXN0KCk7CisgICAgc2hvdWxkQmUoZzEuX19wcm90b19fICE9
IGcyLl9fcHJvdG9fXywgdHJ1ZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379600</attachid>
            <date>2019-09-25 17:47:46 -0700</date>
            <delta_ts>2019-10-02 13:08:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201498-20190925174745.patch</filename>
            <type>text/plain</type>
            <size>124848</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YTE5MDQ5YmQzMDAxZWE5YTdmZjhlMGExYzIwMjRkMzdiOTMwNzhlLi42ZDRlYTg1ZTY1ZGVlYmIw
ZjgxNGQ4YTZkYWY4MzI3N2E5MjU5YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTktMDktMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBc3luY0dlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5hbCBm
aWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MTQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW50cm9kdWNlcyBKU0FzeW5jR2VuZXJhdG9yLiBXZSBkbyB0aGUgc2FtZSB0aGlu
ZyB0byBKU0dlbmVyYXRvciB0byBpbXByb3ZlIGFzeW5jIGdlbmVyYXRvciBwZXJmb3JtYW5jZS4K
KyAgICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgSlNHZW5lcmF0b3IncyBjb2RlIHRvIHNoYXJl
IGl0IHdpdGggSlNBc3luY0dlbmVyYXRvciwgZS5nLiBKU0dlbmVyYXRvcjo6aW5pdGlhbFZhbHVl
cyBldGMuCisgICAgICAgIEl0IGltcHJvdmVzIEpldFN0cmVhbTIvYXN5bmMtZnMgYnkgfjEwJS4K
KworICAgICAgICBXZSBhbHNvIGFkanVzdCBBcml0aFByb2ZpbGUga2V5IGluIEpJVCBieSBhZGRp
bmcgKzEgdG8gb3Bjb2RlSUQgc2luY2UgYG9wX2FkZGAgY2FuIGJlIHplcm8sIGFuZCBga2V5YCBj
YW4gYmUgemVybyBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IGJ1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJp
dmF0ZS5hc3luY0dlbmVyYXRvclF1ZXVlSXNFbXB0eSk6CisgICAgICAgIChnbG9iYWxQcml2YXRl
LmFzeW5jR2VuZXJhdG9yUXVldWVFbnF1ZXVlKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5
bmNHZW5lcmF0b3JRdWV1ZURlcXVldWUpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5pc0V4ZWN1
dGlvblN0YXRlKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuaXNTdXNwZW5kWWllbGRTdGF0ZSk6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUmVqZWN0KToKKyAgICAgICAg
KGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0b3JSZXNvbHZlKToKKyAgICAgICAgKGFzeW5jR2Vu
ZXJhdG9yWWllbGRBd2FpdGVkKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0
b3JZaWVsZCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmRvQXN5bmNHZW5lcmF0b3JCb2R5Q2Fs
bCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yUmVzdW1lTmV4dCk6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yRW5xdWV1ZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRBc3luY0dlbmVyYXRvckZpZWxkcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRBd2FpdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQXN5bmNH
ZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjphc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0
b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19wdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2lzQXN5bmNHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpBd2FpdEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QpOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXpl
KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpm
b2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9OZXdHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXN5bmNH
ZW5lcmF0b3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVJbnRl
cm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDcmVhdGVBc3luY0dlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6Y29waWVkQXJpdGhQcm9maWxlKToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUludGVybmFs
RmllbGRPYmplY3QpOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNHZW5l
cmF0b3IuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvci5jcHAuCisgICAgICAgIChKU0M6OkpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTQXN5bmNHZW5lcmF0b3I6OkpTQXN5bmNHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKU0FzeW5jR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQXN5
bmNHZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dl
bmVyYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvci5oLgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTR2Vu
ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojphc3luY0dlbmVyYXRvclN0cnVjdHVyZSBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorCiAyMDE5LTA5LTI1ICBHdWlsbGF1bWUg
RW1vbnQgIDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KIAogICAgICAgICB0ZXN0YXBpOiBzbG93IGRl
dmljZXMgbmVlZCBtb3JlIHRpbWUgYmVmb3JlIHdhdGNoZG9nIGZpcmVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDBmZmZhNjliY2VjMWU4M2M1Yzc1MGNmMjMzN2VlNzliYWY5MTQz
NGMuLjI1ZmIwN2EyMWRmZjlkYTI2ZTI5Y2YyMTJjZDUzNTM1MjIzOTE0MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODI2LDYgKzE4MjYsNyBAQAogCQlFMzlEOEIyRTIzMDIx
RTI2MDAyNjU4NTIgLyogV2FzbU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ4QjJEMjMwMjFFMUUwMDI2NTg1MiAvKiBXYXNtT3Bl
cmF0aW9ucy5oICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOUVFQUYzMjI4MTI0NTAwMDg0
NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RUVBRjIyMjgxMjQ0
QzAwODQ3NEY0IC8qIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmgg
Ki87IH07CisJCUUzOUZFQkUzMjMzOUM1RDkwMEI0MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlGRUJFMjIz
MzlDNUQ0MDBCNDBBQjAgLyogSlNBc3luY0dlbmVyYXRvci5oICovOyB9OwogCQlFM0EwNTMxQTIx
MzQyQjY4MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMDUzMTYyMTM0MkI2NjAwMjJFQzE0IC8q
IFdhc21TdHJlYW1pbmdQYXJzZXIuaCAqLzsgfTsKIAkJRTNBMDUzMUMyMTM0MkI2ODAwMjJFQzE0
IC8qIFdhc21TZWN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0EwNTMxODIxMzQyQjY3MDAyMkVDMTQgLyogV2FzbVNlY3Rpb25QYXJz
ZXIuaCAqLzsgfTsKIAkJRTNBMzJCQzcxRkM4MzE0NzAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EzMkJDNjFG
QzgzMTJFMDA3RDdFNzYgLyogV2Vha01hcEltcGwuaCAqLzsgfTsKQEAgLTQ5NTAsNiArNDk1MSw4
IEBACiAJCUUzOUUwMzBEMjJEOUVBM0UwMDQwOEMxOCAvKiBXZWJBc3NlbWJseS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IFdlYkFzc2VtYmx5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzlFRUFGMTIyODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzlFRUFGMjIyODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0VG9TdHJpbmdBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5
RkVCRTEyMzM5QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNBc3luY0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOUZFQkUyMjMzOUM1RDQwMEI0MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQXN5bmNHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNBMDUzMTYyMTM0MkI2NjAwMjJFQzE0IC8qIFdhc21TdHJlYW1pbmdQYXJzZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVN0cmVhbWluZ1BhcnNlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EwNTMxNzIxMzQyQjY2MDAyMkVDMTQgLyogV2Fz
bVNlY3Rpb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0Ew
NTMxODIxMzQyQjY3MDAyMkVDMTQgLyogV2FzbVNlY3Rpb25QYXJzZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNlY3Rpb25QYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcxNTAsMTcgKzcxNTMsMTkgQEAKIAkJCQk1MzlGQjhCOTFDOTlEQTdD
MDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLywKIAkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBF
QzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLywKIAkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBF
QzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCisJCQkJRTM5RkVCRTEyMzM5QzVENDAwQjQw
QUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuY3BwICovLAorCQkJCUUzOUZFQkUyMjMzOUM1RDQwMEI0
MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgzRjAwQjJC
OENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0ODgxRTFB
NTg0MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAogCQkJCTg2ODky
MUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCiAJCQkJODY4OTIxQzExRjlD
MENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3
M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3
M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAotCQkJCUZFNDhCRDQzMjMyNDVFODcwMEYxMzZE
MCAvKiBKU0NDb25maWcuY3BwICovLAotCQkJCUZFNDhCRDQyMjMyNDVFODcwMEYxMzZEMCAvKiBK
U0NDb25maWcuaCAqLywKIAkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUu
Y3BwICovLAogCQkJCTY1N0NGNDU3MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oICovLAog
CQkJCTUzQjYwMUVCMjAzNEI4QzUwMDZCRTY2NyAvKiBKU0Nhc3QuaCAqLywKKwkJCQlGRTQ4QkQ0
MzIzMjQ1RTg3MDBGMTM2RDAgLyogSlNDQ29uZmlnLmNwcCAqLywKKwkJCQlGRTQ4QkQ0MjIzMjQ1
RTg3MDBGMTM2RDAgLyogSlNDQ29uZmlnLmggKi8sCiAJCQkJQkM3RjhGQkEwRTE5RDFFRjAwODYz
MkMwIC8qIEpTQ2VsbC5jcHAgKi8sCiAJCQkJQkMxMTY3RDgwRTE5QkNDOTAwODA2NkREIC8qIEpT
Q2VsbC5oICovLAogCQkJCTBGOTc0OTZGMTY4N0FERTIwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVz
LmggKi8sCkBAIC05MDEzLDcgKzkwMTgsNiBAQAogCQkJCTBGRUMzQzYwMUYzNzlGNTMwMEY1OUI2
QyAvKiBDYWdlZEJhcnJpZXJQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VEMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBDYWxsRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NEIyN0ExQTc5
NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUM1Nzk3ODIz
MTA5NTRDMDBCQ0E4M0YgLyogSW50ZWdyaXR5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Nzk2REFBMkIxRTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJpdHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MjlEOERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTkwMzAsOSArOTAzNCw5IEBACiAJCQkJMEYwNzBBNDgxRDU0M0E5MDAw
NkU3MjMyIC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFC
RDAxRTFFNzIwMDJBMDAxMzRCQzkgLyogQ2VsbExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MUJEMDIxMUU3MjAyNzkwMDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkVDMTYwMzIyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjFDM0REQTFCQkNFMDlFMDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZvLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlGRUMxNjAzMjIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRTA1MDI2MUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVudHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDTG9vcFN0
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogQ0xv
b3BTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTM2OSw3ICs5MzczLDYgQEAKIAkJ
CQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0IzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjkxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTE9w
ZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAv
KiBPcHRpb25FbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0Ey
QzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERDE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRTAxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05
NTA4LDcgKzk1MTEsNiBAQAogCQkJCTc5MDVCQjY5MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVB
Y2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OEE3QkYwMUI4Mjk3NUEwMDJEOTE1NyAvKiBJ
bmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTU2MTdGMEI3MUMwMEFC
QjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFQzU3OTc2
MjMxMDVGNEUwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQw
MzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLApAQCAtOTU0MCw2ICs5NTQyLDggQEAKIAkJCQlBN0E4
QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdBOEFGM0MxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3QThBRjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFQzU3OTc2MjMxMDVGNEUwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFQzU3OTc4MjMxMDk1NEMwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzExNjY3QjBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGNkJGNkQxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQyOUQ3N0MwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTk1NjAsNyArOTU2NCw2IEBACiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZGMUI0
NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFNDhCRDQ0MjMyNDVFOTMwMEYxMzZEMCAvKiBKU0NDb25maWcuaCBp
biBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8q
IEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTQxRTUzQkQyOTAwMjEzRjY0
IC8qIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTYxOCw2
ICs5NjIxLDcgQEAKIAkJCQkwRjJCNjZFQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZl
clZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBG
QTEgLyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVCNzBDRkRFMURCNjlF
NjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOUZF
QkUzMjMzOUM1RDkwMEI0MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4QkMwNjQ4OTFFMUFCQTY0MDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTg3MkM0ODIyMUJCQUYzMDA4QzY5NjkgLyogSlNCYXNl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtOTYzMSw2ICs5NjM1LDcgQEAKIAkJCQk2NTdD
RjQ1OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
QjYwMUVDMjAzNEI4QzUwMDZCRTY2NyAvKiBKU0Nhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkU0OEJENDQyMzI0NUU5MzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxMTY3REEwRTE5QkNDOTAwODA2NkREIC8qIEpTQ2VsbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5NzQ5NzExNjg3QURFNDAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMUREODRBMThBOTQ1QkUwMDI2RjNGQSAvKiBKU0NJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTk5MDgsNyArOTkxMyw5IEBACiAJCQkJMEYyQkRDMkMxNTFGREU5MTAw
Q0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0NDdFQTE3QTBCRDQ2
MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0
ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUz
ODQyMzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzU2OTg3MjIyODQxMTg3MDA4Q0RDQ0IgLyogUGFja2VkQ2VsbFB0ci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5REFBMEExRkQxQzNEMzAwNzlDNUIyIC8qIFBhcmFsbGVsU291cmNl
QWRhcHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM0RTY1NzUyMDY2OEVBQTAwRkI4MUFDIC8q
IFBhcnNlSGFzaC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTQxLDcgKzk5NDgsNiBAQAogCQkJCTBG
RjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMTkwQ0FEMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRp
c29uUmVhc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMg
LyogUHJvZmlsZXJPcmlnaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUZFQzU3OTczMjMxMDVCNTEw
MEJDQTgzRiAvKiBWTUluc3BlY3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcy
OUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkIxMDU4QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkIxMDU4RTE2NzU0ODNBMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JF
eGl0U2l0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDAxNiw3ICsxMDAyMiw2IEBACiAJCQkJMEZF
MDUwMjgxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZz
ZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRp
b25zTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8q
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgx
ODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTAxNjksNiArMTAxNzQsNyBAQAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUND
QyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUFFMkM0MURGNEYyODAw
MDY2RUZFMSAvKiBWTUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzAyMkQ3MUU0Mjg1
NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVDNTc5NzMy
MzEwNUI1MTAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkU2RjU2REUxRTY0RUFENjAwRDE3ODAxIC8qIFZNVHJhcHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyODQ3QURDMjFGRkI4NjkwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYmE4
NjY3NmU2NDFhYjEzNDA5NTgxYmI4YjM4ZDdlMzYxODc2ODc4My4uYTJlODhiMWQwMDg2NGE4MWEw
MTEzNzAyOTY5OTAyNjI0MmU1MDMwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAt
ODA5LDYgKzgwOSw3IEBAIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAogcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAKIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAorcnVudGltZS9KU0FzeW5jR2VuZXJh
dG9yLmNwcAogcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiBydW50aW1lL0pT
QmlnSW50LmNwcAogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMK
aW5kZXggOTBkZTkyMGQ5ZDZlMzA0YTZkZGJiYWU5NDg5MWJiMjczODQyZjc0OS4uYjBhYzQwMzgx
ZGZmMDU2NzdiY2VjOTQwMGMxMzEwMzhlYjQyYzk2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAt
MjksNyArMjksNyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclF1ZXVlSXNFbXB0eShnZW5lcmF0
b3IpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgcmV0dXJuIEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3QiKSA9PT0gbnVsbDsKKyAg
ICByZXR1cm4gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3lu
Y0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkgPT09IG51bGw7CiB9CiAKIEBnbG9iYWxQcml2YXRl
CkBAIC0zOSwxNSArMzksMTUgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JRdWV1ZUVucXVldWUo
Z2VuZXJhdG9yLCBpdGVtKQogCiAgICAgQGFzc2VydChAZ2V0QnlJZERpcmVjdFByaXZhdGUoaXRl
bSwgImFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCIpID09PSBudWxsKTsKIAotICAgIGlmIChA
Z2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUZpcnN0
IikgPT09IG51bGwpIHsKLSAgICAgICAgQGFzc2VydChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2Vu
ZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3QiKSA9PT0gbnVsbCk7CisgICAgaWYgKEBn
ZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JG
aWVsZFF1ZXVlRmlyc3QpID09PSBudWxsKSB7CisgICAgICAgIEBhc3NlcnQoQGdldEFzeW5jR2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVldWVM
YXN0KSA9PT0gbnVsbCk7CiAKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRv
ciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIsIGl0ZW0pOwotICAgICAgICBAcHV0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3QiLCBpdGVtKTsK
KyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3lu
Y0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCwgaXRlbSk7CisgICAgICAgIEBwdXRBc3luY0dlbmVy
YXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFz
dCwgaXRlbSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIGxhc3QgPSBAZ2V0QnlJZERpcmVj
dFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3QiKTsKKyAgICAgICAg
dmFyIGxhc3QgPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFz
eW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QpOwogICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZh
dGUobGFzdCwgImFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCIsIGl0ZW0pOwotICAgICAgICBA
cHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3Qi
LCBpdGVtKTsKKyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0LCBpdGVtKTsKICAgICB9CiB9CiAKQEAg
LTU4LDEzICs1OCwxMyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclF1ZXVlRGVxdWV1ZShnZW5l
cmF0b3IpCiAKICAgICBAYXNzZXJ0KCFAYXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHkoZ2VuZXJh
dG9yKSwgIkFzeW5jIGdlbmV0YXRvcidzIFF1ZXVlIGlzIGFuIGVtcHR5IExpc3QuIik7CiAKLSAg
ICB2YXIgcmVzdWx0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2Vu
ZXJhdG9yUXVldWVGaXJzdCIpOworICAgIHZhciByZXN1bHQgPSBAZ2V0QXN5bmNHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KTsK
IAogICAgIHZhciB1cGRhdGVkRmlyc3QgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUocmVzdWx0LCAi
YXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0Iik7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRl
KGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdCIsIHVwZGF0ZWRGaXJzdCk7Cisg
ICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVy
YXRvckZpZWxkUXVldWVGaXJzdCwgdXBkYXRlZEZpcnN0KTsKIAogICAgIGlmICh1cGRhdGVkRmly
c3QgPT09IG51bGwpCi0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJh
c3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIG51bGwpOworICAgICAgICBAcHV0QXN5bmNHZW5lcmF0
b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3Qs
IG51bGwpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTc0LDggKzc0LDggQEAgZnVuY3Rp
b24gaXNFeGVjdXRpb25TdGF0ZShnZW5lcmF0b3IpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0g
ICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
clN0YXRlIik7Ci0gICAgdmFyIHJlYXNvbiA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0
b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKTsKKyAgICB2YXIgc3RhdGUgPSBAZ2V0
QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3Rh
dGUpOworICAgIHZhciByZWFzb24gPSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdl
bmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKTsKICAgICByZXR1cm4g
KHN0YXRlID4gMCAmJiByZWFzb24gPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25l
KQogICAgICAgICB8fCBzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcKICAg
ICAgICAgfHwgcmVhc29uID09PSBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQ7CkBA
IC04Niw4ICs4Niw4IEBAIGZ1bmN0aW9uIGlzU3VzcGVuZFlpZWxkU3RhdGUoZ2VuZXJhdG9yKQog
ewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIHJldHVybiAoc3RhdGUgPiAw
ICYmIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb24iKSA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbllpZWxkKQorICAgIHZh
ciBzdGF0ZSA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2Vu
ZXJhdG9yRmllbGRTdGF0ZSk7CisgICAgcmV0dXJuIChzdGF0ZSA+IDAgJiYgQGdldEFzeW5jR2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVu
ZFJlYXNvbikgPT09IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCkKICAgICAgICAg
fHwgc3RhdGUgPT09IEBBc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkWWllbGQ7CiB9CiAKQEAg
LTk2LDcgKzk2LDcgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JSZWplY3QoZ2VuZXJhdG9yLCBl
eGNlcHRpb24pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgQGFzc2VydCh0eXBlb2YgQGdl
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
biIpID09PSAibnVtYmVyIiwgIkdlbmVyYXRvciBpcyBub3QgYW4gQXN5bmNHZW5lcmF0b3IgaW5z
dGFuY2UuIik7CisgICAgQGFzc2VydChAaXNBc3luY0dlbmVyYXRvcihnZW5lcmF0b3IpLCAiR2Vu
ZXJhdG9yIGlzIG5vdCBhbiBBc3luY0dlbmVyYXRvciBpbnN0YW5jZS4iKTsKIAogICAgIHZhciBw
cm9taXNlID0gQGFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikucHJvbWlzZTsK
ICAgICBAYXNzZXJ0KEBpc1Byb21pc2UocHJvbWlzZSkpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGZ1
bmN0aW9uIGFzeW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0b3IsIHZhbHVlLCBkb25lKQogewog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIEBhc3NlcnQodHlwZW9mIEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKSA9PT0gIm51bWJl
ciIsICJHZW5lcmF0b3IgaXMgbm90IGFuIEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOworICAg
IEBhc3NlcnQoQGlzQXN5bmNHZW5lcmF0b3IoZ2VuZXJhdG9yKSwgIkdlbmVyYXRvciBpcyBub3Qg
YW4gQXN5bmNHZW5lcmF0b3IgaW5zdGFuY2UuIik7CiAKICAgICB2YXIgcHJvbWlzZSA9IEBhc3lu
Y0dlbmVyYXRvclF1ZXVlRGVxdWV1ZShnZW5lcmF0b3IpLnByb21pc2U7CiAgICAgQGFzc2VydChA
aXNQcm9taXNlKHByb21pc2UpKTsKQEAgLTEyNiwxMSArMTI2LDExIEBAIGZ1bmN0aW9uIGFzeW5j
R2VuZXJhdG9yWWllbGQoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSkKIAogICAgIGZ1bmN0
aW9uIGFzeW5jR2VuZXJhdG9yWWllbGRBd2FpdGVkKHJlc3VsdCkKICAgICB7Ci0gICAgICAgIEBw
dXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b24iLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQpOworICAgICAgICBAcHV0QXN5
bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5jR2VuZXJhdG9yRmllbGRT
dXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQpOwogICAgICAg
ICBAYXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgcmVzdWx0LCBmYWxzZSk7CiAgICAg
fQogCi0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbiIsIEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdCk7CisgICAg
QHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRv
ckZpZWxkU3VzcGVuZFJlYXNvbiwgQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0KTsK
IAogICAgIEBhd2FpdFZhbHVlKGdlbmVyYXRvciwgdmFsdWUsIGFzeW5jR2VuZXJhdG9yWWllbGRB
d2FpdGVkKTsKIH0KQEAgLTE1MCwzNCArMTUwLDM5IEBAIGZ1bmN0aW9uIGRvQXN5bmNHZW5lcmF0
b3JCb2R5Q2FsbChnZW5lcmF0b3IsIHJlc3VtZVZhbHVlLCByZXN1bWVNb2RlKQogICAgICJ1c2Ug
c3RyaWN0IjsKIAogICAgIHZhciB2YWx1ZSA9IEB1bmRlZmluZWQ7Ci0gICAgdmFyIHN0YXRlID0g
QGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIik7CisgICAg
dmFyIHN0YXRlID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JGaWVsZFN0YXRlKTsKIAotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0
b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nKTsKLSAg
ICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uIiwgQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpOworICAgIEBwdXRBc3lu
Y0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwg
QEFzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOworICAgIEBwdXRBc3luY0dlbmVyYXRvcklu
dGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24s
IEBBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKTsKIAogICAgIHRyeSB7Ci0gICAgICAg
IHZhbHVlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvck5leHQi
KS5AY2FsbChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yVGhpcyIp
LCBnZW5lcmF0b3IsIHN0YXRlLCByZXN1bWVWYWx1ZSwgcmVzdW1lTW9kZSwgQGdldEJ5SWREaXJl
Y3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvckZyYW1lIikpOwotICAgICAgICBpZiAoQGdl
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBBc3lu
Y0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nKQotICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQpOworICAgICAgICB2YWx1ZSA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQo
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGROZXh0KS5AY2FsbChAZ2V0QXN5bmNHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkVGhpcyksIGdlbmVyYXRvciwg
c3RhdGUsIHJlc3VtZVZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkRnJhbWUpKTsKKyAgICAgICAgc3RhdGUg
PSBAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUpOworICAgICAgICBpZiAoc3RhdGUgPT09IEBBc3luY0dlbmVyYXRvclN0YXRlRXhl
Y3V0aW5nKSB7CisgICAgICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdl
bmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKTsKKyAgICAgICAgICAgIHN0YXRlID0gQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7
CisgICAgICAgIH0KICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAQXN5bmNHZW5lcmF0b3JTdGF0
ZUNvbXBsZXRlZCk7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJh
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29u
Tm9uZSk7CisgICAgICAgIEBwdXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwor
ICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGFzeW5j
R2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29u
Tm9uZSk7CiAKICAgICAgICAgcmV0dXJuIEBhc3luY0dlbmVyYXRvclJlamVjdChnZW5lcmF0b3Is
IGVycm9yKTsKICAgICB9CiAKLSAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRv
ciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIpID09PSBAQXN5bmNHZW5lcmF0b3JTdXNw
ZW5kUmVhc29uQXdhaXQpIHsKKyAgICB2YXIgcmVhc29uID0gQGdldEFzeW5jR2VuZXJhdG9ySW50
ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbik7
CisgICAgaWYgKHJlYXNvbiA9PT0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0KSB7
CiAgICAgICAgIHZhciBvbkZ1bGZpbGxlZCA9IGZ1bmN0aW9uKHJlc3VsdCkgeyBAZG9Bc3luY0dl
bmVyYXRvckJvZHlDYWxsKGdlbmVyYXRvciwgcmVzdWx0LCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5v
cm1hbCk7IH07CiAKICAgICAgICAgQGF3YWl0VmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSwgb25GdWxm
aWxsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKEBnZXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKSA9PT0gQEFz
eW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbllpZWxkKQorICAgIGlmIChyZWFzb24gPT09IEBBc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb25ZaWVsZCkKICAgICAgICAgcmV0dXJuIEBhc3luY0dlbmVy
YXRvcllpZWxkKGdlbmVyYXRvciwgdmFsdWUsIHJlc3VtZU1vZGUpOwogCi0gICAgaWYgKEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpID09PSBAQXN5bmNH
ZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkgewotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIiwgQEFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbk5vbmUpOworICAgIGlmIChzdGF0ZSA9PT0gQEFzeW5jR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQpIHsKKyAgICAgICAgQGFzc2VydChAZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUpID09IEBBc3luY0dlbmVyYXRv
clN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgQHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVs
ZChnZW5lcmF0b3IsIEBhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbiwgQEFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpOwogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9y
UmVzb2x2ZShnZW5lcmF0b3IsIHZhbHVlLCB0cnVlKTsKICAgICB9CiB9CkBAIC0xODcsOSArMTky
LDkgQEAgZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JSZXN1bWVOZXh0KGdlbmVyYXRvcikKIHsKICAg
ICAidXNlIHN0cmljdCI7CiAKLSAgICBAYXNzZXJ0KHR5cGVvZiBAZ2V0QnlJZERpcmVjdFByaXZh
dGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIikgPT09ICJudW1iZXIi
LCAiR2VuZXJhdG9yIGlzIG5vdCBhbiBBc3luY0dlbmVyYXRvciBpbnN0YW5jZS4iKTsKKyAgICBA
YXNzZXJ0KEBpc0FzeW5jR2VuZXJhdG9yKGdlbmVyYXRvciksICJHZW5lcmF0b3IgaXMgbm90IGFu
IEFzeW5jR2VuZXJhdG9yIGluc3RhbmNlLiIpOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5SWRE
aXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIik7CisgICAgdmFyIHN0YXRl
ID0gQGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlKTsKIAogICAgIEBhc3NlcnQoc3RhdGUgIT09IEBBc3luY0dlbmVyYXRvclN0YXRl
RXhlY3V0aW5nLCAiQXN5bmMgZ2VuZXJhdG9yIHNob3VsZCBub3QgYmUgaW4gZXhlY3V0aW5nIHN0
YXRlIik7CiAKQEAgLTE5OSwyNCArMjA0LDI0IEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUmVz
dW1lTmV4dChnZW5lcmF0b3IpCiAgICAgaWYgKEBhc3luY0dlbmVyYXRvclF1ZXVlSXNFbXB0eShn
ZW5lcmF0b3IpKQogICAgICAgICByZXR1cm47CiAKLSAgICB2YXIgbmV4dCA9IEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3QiKTsKKyAgICB2
YXIgbmV4dCA9IEBnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAYXN5
bmNHZW5lcmF0b3JGaWVsZFF1ZXVlRmlyc3QpOwogCiAgICAgaWYgKG5leHQucmVzdW1lTW9kZSAh
PT0gQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpIHsKICAgICAgICAgaWYgKHN0YXRlID09PSBA
QXN5bmNHZW5lcmF0b3JTdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7Ci0gICAgICAgICAgICBAcHV0QnlJ
ZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAQXN5bmNHZW5lcmF0
b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBBc3luY0dlbmVyYXRvclN0
YXRlQ29tcGxldGVkKTsKICAgICAgICAgICAgIHN0YXRlID0gQEFzeW5jR2VuZXJhdG9yU3RhdGVD
b21wbGV0ZWQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc3RhdGUgPT09IEBBc3luY0dlbmVy
YXRvclN0YXRlQ29tcGxldGVkKSB7CiAgICAgICAgICAgICBpZiAobmV4dC5yZXN1bWVNb2RlID09
PSBAR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybikgewotICAgICAgICAgICAgICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRv
clN0YXRlQXdhaXRpbmdSZXR1cm4pOworICAgICAgICAgICAgICAgIEBwdXRBc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEFzeW5jR2Vu
ZXJhdG9yU3RhdGVBd2FpdGluZ1JldHVybik7CiAgICAgICAgICAgICAgICAgQHJlc29sdmVXaXRo
b3V0UHJvbWlzZShuZXh0LnZhbHVlLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVz
dWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2Vu
ZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBAcHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
KGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29t
cGxldGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEBhc3luY0dlbmVyYXRvclJlc29sdmUo
Z2VuZXJhdG9yLCByZXN1bHQsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3lu
Y0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEBwdXRB
c3luY0dlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0
ZSwgQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgQGFzeW5jR2VuZXJhdG9yUmVqZWN0KGdlbmVyYXRvciwgZXJyb3IpOwogICAgICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDAsNyArMjQ1LDcgQEAg
ZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JFbnF1ZXVlKGdlbmVyYXRvciwgdmFsdWUsIHJlc3VtZU1v
ZGUpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgdmFyIHByb21pc2UgPSBAbmV3UHJvbWlzZSgp
OwotICAgIGlmICghQGlzT2JqZWN0KGdlbmVyYXRvcikgfHwgdHlwZW9mIEBnZXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iKSAhPT0gJ251
bWJlcicpIHsKKyAgICBpZiAoIUBpc0FzeW5jR2VuZXJhdG9yKGdlbmVyYXRvcikpIHsKICAgICAg
ICAgQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9t
aXNlLCBAbWFrZVR5cGVFcnJvcignfHRoaXN8IHNob3VsZCBiZSBhbiBhc3luYyBnZW5lcmF0b3In
KSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAzNWMxMDQwYWQ0NTU3NDc4MTVlMTE2
ZmJjN2QxMjY1YjNmYzc0MjQyLi40ODgwNjU5MjY2MGRmMWFlYzQ5MjVkMDg5Njg2ZWVhNWM1Yzcx
YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CkBAIC0xMDgsMTUgKzEwOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhnZW5lcmF0
b3JGcmFtZSkgXAogICAgIG1hY3JvKGdlbmVyYXRvclZhbHVlKSBcCiAgICAgbWFjcm8oZ2VuZXJh
dG9yVGhpcykgXAorICAgIG1hY3JvKGdlbmVyYXRvclJlc3VtZU1vZGUpIFwKICAgICBtYWNybyhz
eW5jSXRlcmF0b3IpIFwKICAgICBtYWNybyhuZXh0TWV0aG9kKSBcCi0gICAgbWFjcm8oYXN5bmNH
ZW5lcmF0b3JTdGF0ZSkgXAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbikg
XAotICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWUpIFwKLSAgICBtYWNybyhhc3luY0dlbmVy
YXRvclF1ZXVlRmlyc3QpIFwKLSAgICBtYWNybyhhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCkgXAog
ICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAotICAgIG1hY3JvKGdlbmVy
YXRvclJlc3VtZU1vZGUpIFwKICAgICBtYWNybyhkYXRlVGltZUZvcm1hdCkgXAogICAgIG1hY3Jv
KGludGxTdWJzdGl0dXRlVmFsdWUpIFwKICAgICBtYWNybyh0aGlzVGltZVZhbHVlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggMDZmYzU4MTkyMTJiMzFiMDU1OWVlZmY2MTE5ZDc1YWE1
MTBjOTcyNS4uZDQxNjMzYzU1YjYwOWNkNTdlMjQzYjJiMWE0YzQ0MDkyMTRjNWFkYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5O
YW1lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSXRlcmF0
aW9uS2luZC5oIgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtODUsMTQg
Kzg1LDE3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkoVk0mIHZtKQogICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQobV92bSwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3Vt
ZU1vZGU6OlJldHVybk1vZGUpKSk7CiAgICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRv
clN0YXRlOjpDb21wbGV0ZWQpKSk7CiAgICAgbV9HZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRv
clN0YXRlOjpFeGVjdXRpbmcpKSk7Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVk
LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKLSAgICBtX0FzeW5j
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhl
Y3V0aW5nKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZVN1c3BlbmRlZFN0YXJ0LnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpOwotICAgIG1fQXN5bmNH
ZW5lcmF0b3JTdGF0ZVN1c3BlbmRlZFlpZWxkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6
OlN1c3BlbmRlZFlpZWxkKSkpOwotICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0
dXJuLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkF3YWl0aW5nUmV0dXJuKSkpOwotICAg
IG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uWWllbGQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0
b3JTdXNwZW5kUmVhc29uOjpZaWVsZCkpKTsKLSAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJl
YXNvbkF3YWl0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdhaXQpKSk7
Ci0gICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbjo6Tm9uZSkpKTsKKyAgICBtX2FzeW5jR2VuZXJhdG9yRmllbGRT
dXNwZW5kUmVhc29uLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb24pKSk7CisgICAgbV9hc3luY0dlbmVy
YXRvckZpZWxkUXVldWVGaXJzdC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUZpcnN0KSkpOworICAgIG1fYXN5bmNH
ZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3QpKSk7CisgICAgbV9Bc3lu
Y0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQp
KSk7CisgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN0
YXRlOjpFeGVjdXRpbmcpKSk7CisgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3Rh
cnQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0
b3I6OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpOworICAgIG1fQXN5bmNH
ZW5lcmF0b3JTdGF0ZVN1c3BlbmRlZFlpZWxkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN0YXRlOjpTdXNwZW5k
ZWRZaWVsZCkpKTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVBd2FpdGluZ1JldHVybi5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5
bmNHZW5lcmF0b3JTdGF0ZTo6QXdhaXRpbmdSZXR1cm4pKSk7CisgICAgbV9Bc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb25ZaWVsZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVsZCkp
KTsKKyAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0LnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb246OkF3YWl0KSkpOworICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVh
c29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dl
bmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpOb25lKSkpOwogfQogCiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CmluZGV4IDI4MGI3ZjkwNmQ2NWU1MGZmYjc2NzVlMTFlYTJlMjkzYjdkNTdlYTkuLmZhZWIyMzg5
YjhmZDcwZWU1Zjk0OTM1ZjM4YTc0YTYxNTY3ODY5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApA
QCAtNDMsMTIgKzQzLDE0IEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8oZ2V0QnlJZERp
cmVjdFByaXZhdGUpIFwKICAgICBtYWNybyhnZXRQcm9taXNlSW50ZXJuYWxGaWVsZCkgXAogICAg
IG1hY3JvKGdldEdlbmVyYXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRBc3luY0dl
bmVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAg
bWFjcm8oaXNPYmplY3QpIFwKICAgICBtYWNybyhpc0pTQXJyYXkpIFwKICAgICBtYWNybyhpc1By
b3h5T2JqZWN0KSBcCiAgICAgbWFjcm8oaXNEZXJpdmVkQXJyYXkpIFwKICAgICBtYWNybyhpc0dl
bmVyYXRvcikgXAorICAgIG1hY3JvKGlzQXN5bmNHZW5lcmF0b3IpIFwKICAgICBtYWNybyhpc1By
b21pc2UpIFwKICAgICBtYWNybyhpc1JlZ0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBc
CkBAIC02NCw2ICs2Niw3IEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8ocHV0QnlWYWxE
aXJlY3QpIFwKICAgICBtYWNybyhwdXRQcm9taXNlSW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3Jv
KHB1dEdlbmVyYXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhwdXRBc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3Ry
aW5nKSBcCiAgICAgbWFjcm8odG9PYmplY3QpIFwKQEAgLTExMCw2ICsxMTMsOSBAQCBjbGFzcyBS
ZWdpc3RlcklEOwogICAgIG1hY3JvKEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pIFwKICAgICBt
YWNybyhHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkgXAogICAgIG1hY3JvKEdlbmVyYXRvclN0YXRl
RXhlY3V0aW5nKSBcCisgICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24p
IFwKKyAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkgXAorICAgIG1hY3Jv
KGFzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QpIFwKICAgICBtYWNybyhBc3luY0dlbmVyYXRv
clN0YXRlQ29tcGxldGVkKSBcCiAgICAgbWFjcm8oQXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1dGlu
ZykgXAogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9yU3RhdGVBd2FpdGluZ1JldHVybikgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggOGJj
MDE4MjI2N2U2OWE5YzYyZTFlYTM4ZDkxZmMyNjA2NjI0ZGYyZS4uMWU3ZTk2YTU4MDM4ZjBkNzVi
YjdmMTBmYTk4MTUxOWJjNWM0MzliNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzQsMTggKzEzNCwyMiBAQAogICAgICAgICBpc0lu
dGVybmFsUHJvbWlzZTogYm9vbCwKICAgICB9CiAKLW9wIDpjcmVhdGVfZ2VuZXJhdG9yLAorb3Ag
Om5ld19nZW5lcmF0b3IsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfSwKLSAgICBtZXRhZGF0
YTogewotICAgICAgICBjYWNoZWRDYWxsZWU6IFdyaXRlQmFycmllcltKU0NlbGxdCiAgICAgfQog
Ci1vcCA6bmV3X2dlbmVyYXRvciwKK29wX2dyb3VwIDpDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0
T3AsCisgICAgWworICAgICAgICA6Y3JlYXRlX2dlbmVyYXRvciwKKyAgICAgICAgOmNyZWF0ZV9h
c3luY19nZW5lcmF0b3IsCisgICAgXSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAg
IG1ldGFkYXRhOiB7CisgICAgICAgIGNhY2hlZENhbGxlZTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0K
ICAgICB9CiAKIG9wIDpnZXRfYXJndW1lbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDQwNzkyNDk5NjVkNTYxOGU5M2Y5ODY3MjQ3
MjRlY2MzNzMyMDE1YzcuLjAyMmYzYmZlYjg2ODQ0MWNjYWRkYWZkN2Y4MzRmYThmOTg4NzNiY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CkBAIC0xOTYsNiArMTk2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJs
b2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBVU0VTKE9w
Q3JlYXRlVGhpcywgY2FsbGVlKQogICAgIFVTRVMoT3BDcmVhdGVQcm9taXNlLCBjYWxsZWUpCiAg
ICAgVVNFUyhPcENyZWF0ZUdlbmVyYXRvciwgY2FsbGVlKQorICAgIFVTRVMoT3BDcmVhdGVBc3lu
Y0dlbmVyYXRvciwgY2FsbGVlKQogICAgIFVTRVMoT3BEZWxCeUlkLCBiYXNlKQogICAgIFVTRVMo
T3BOZXdGdW5jLCBzY29wZSkKICAgICBVU0VTKE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jLCBzY29w
ZSkKQEAgLTM4OCw2ICszODksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
QmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIERFRlMo
T3BDcmVhdGVUaGlzLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZVByb21pc2UsIGRzdCkKICAgICBE
RUZTKE9wQ3JlYXRlR2VuZXJhdG9yLCBkc3QpCisgICAgREVGUyhPcENyZWF0ZUFzeW5jR2VuZXJh
dG9yLCBkc3QpCiAgICAgREVGUyhPcE5ld0FycmF5LCBkc3QpCiAgICAgREVGUyhPcE5ld0FycmF5
V2l0aFNwcmVhZCwgZHN0KQogICAgIERFRlMoT3BTcHJlYWQsIGRzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZmFkOTVlMjlhZmNjMDg5NDlh
YjIxMzhlYmU1M2NkMWExNDYzMDhjZi4uZTc4ZDMxOGQ5MDFhYWYxOTNmOGI4OWUyYWFjMzNhM2Vm
OWY5Y2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTEyNzksNiArMTI3OSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5s
aW5lQ2FjaGVzKCkKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENyZWF0ZUdlbmVyYXRv
cj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAgaGFuZGxlQ3JlYXRlQnl0ZWNv
ZGUobWV0YWRhdGEsICJvcF9jcmVhdGVfZ2VuZXJhdG9yIl9zKTsKICAgICAgICAgfSk7CisgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDcmVhdGVBc3luY0dlbmVyYXRvcj4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgeworICAgICAgICAgICAgaGFuZGxlQ3JlYXRlQnl0ZWNvZGUobWV0YWRhdGEs
ICJvcF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yIl9zKTsKKyAgICAgICAgfSk7CiAKICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFJlc29sdmVTY29wZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewogICAgICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5
LiBBbnkgc3ltYm9sIHRhYmxlcyB0aGF0IHRoaXMgd2lsbCByZWZlciB0bwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCAzMmU0MDg2ZjVjZmEwMGZlMjZjZjgxYWM4ODI2M2U0YjA4NThmYzI2Li5lNzkxNGFh
NDdjNWVlOWE5ODNkNzU5ZmRkNmZhYWI2Y2NhMGIzZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
NDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgotI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0ZpeGVkQXJyYXkuaCIKQEAgLTcwMiw4ICs3MDIsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNTg2CiAgICAgICAgIGVtaXRUb1RoaXMoKTsKIAotICAgICAgICBtb3ZlKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKLSAgICAgICAgZW1pdENyZWF0ZVRoaXMo
bV9nZW5lcmF0b3JSZWdpc3Rlcik7CisgICAgICAgIGVtaXRDcmVhdGVBc3luY0dlbmVyYXRvciht
X2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtODc2LDEwICs4NzUsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
ICAgICAgICAgLy8gR2VuZXJhdG9yaWZpY2F0aW9uIGluc2VydHMgbGV4aWNhbCBlbnZpcm9ubWVu
dCBjcmVhdGlvbiBpZiBuZWNlc3NhcnkuIE90aGVyd2lzZSwgd2UgY29udmVydCBpdCB0byBvcF9t
b3YgZnJhbWUsIGB1bmRlZmluZWRgLgogICAgICAgICAgICAgT3BDcmVhdGVHZW5lcmF0b3JGcmFt
ZUVudmlyb25tZW50OjplbWl0KHRoaXMsIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgc2NvcGVS
ZWdpc3RlcigpLCBWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSwg
YWRkQ29uc3RhbnRWYWx1ZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUpCi0g
ICAgICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbWl0UHV0SW50ZXJu
YWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpGcmFtZSksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6
RnJhbWUpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6
RnJhbWUpKTsKKyAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpLCBnZW5l
cmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6
ZUJsb2NrU2NvcGVkRnVuY3Rpb25zID0gZmFsc2U7IC8vIFdlIGdlbmVyYXRlIHRvcC1sZXZlbCBm
dW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gOjpnZW5lcmF0ZSgpLgpAQCAtMjcyMywxOCArMjcyMCw4
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRBc3luY0dlbmVyYXRvckZpZWxkcyhS
ZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzQXN5bmNHZW5lcmF0b3JX
cmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSk7CiAKLSAgICBlbWl0RGlyZWN0UHV0QnlJZCht
X2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHRGdW5jdGlvbiwgUHJvcGVydHlOb2RlOjpLbm93bkRp
cmVjdCk7Ci0gICAgICAgIAotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0
ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5h
bWUoKSwgJm1fdGhpc1JlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKLSAgICAg
ICAgCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN0YXRlOjpTdXNwZW5kZWRTdGFydCkpKSwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0gICAgICAgIAotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1f
Z2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRv
clJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JT
dXNwZW5kUmVhc29uUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb246Ok5vbmUpKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotCi0g
ICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmFzeW5jR2VuZXJhdG9yUXVldWVGaXJzdFByaXZhdGVOYW1lKCksIGVt
aXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0g
ICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmFzeW5jR2VuZXJhdG9yUXVldWVMYXN0UHJpdmF0ZU5hbWUoKSwgZW1p
dExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAg
ICBlbWl0UHV0SW50ZXJuYWxGaWVsZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpLCBuZXh0RnVuY3Rpb24pOwor
ICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6VGhpcyksICZtX3RoaXNSZWdpc3Rl
cik7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KQpAQCAtMjg3NSw2ICsyODYyLDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3R2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCkKICAgICByZXR1cm4gZHN0OwogfQog
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9y
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KQoreworICAgIE9wQ3JlYXRl
QXN5bmNHZW5lcmF0b3I6OmVtaXQodGhpcywgZHN0LCBuZXdUYXJnZXQpOworICAgIHJldHVybiBk
c3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRURFpDaGVjayhSZWdpc3RlcklE
KiB0YXJnZXQpCiB7CiAgICAgT3BDaGVja1Rkejo6ZW1pdCh0aGlzLCB0YXJnZXQpOwpAQCAtNDUx
NSw3ICs0NTA4LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlcXVpcmVPYmplY3RD
b2VyY2libGUoUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmkKICAgICBlbWl0TGFiZWwodGFy
Z2V0LmdldCgpKTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQo
UmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5l
cmF0b3JTdXNwZW5kUmVhc29uIHJlc3VsdCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dl
bmVyYXRvclN1c3BlbmRSZWFzb24gcmVzdWx0KQogewogICAgIFJlZjxMYWJlbD4gbWVyZ2VQb2lu
dCA9IG5ld0xhYmVsKCk7CiAgICAgdW5zaWduZWQgeWllbGRQb2ludEluZGV4ID0gbV95aWVsZFBv
aW50cysrOwpAQCAtNDUyMyw3ICs0NTE2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3JGdW4KIAog
ICAgIGlmIChwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9k
eU1vZGUpIHsKICAgICAgICAgaW50IHN1c3BlbmRSZWFzb24gPSBzdGF0aWNfY2FzdDxpbnQzMl90
PihyZXN1bHQpOwotICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uUHJp
dmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3VzcGVuZFJlYXNvbikpKTsK
KyAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uKSwg
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3VzcGVuZFJlYXNvbikpKTsKICAgICB9CiAKICAg
ICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCkBAIC00NTU1LDcgKzQ1NDgsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwg
SlNBc3luY0dlbmVyYXRvckZ1bgogICAgIGVtaXRMYWJlbChtZXJnZVBvaW50LmdldCgpKTsKIH0K
IAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdpc3RlcklEKiBh
cmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRS
ZWFzb24gcmVzdWx0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChS
ZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNw
ZW5kUmVhc29uIHJlc3VsdCkKIHsKICAgICBlbWl0WWllbGRQb2ludChhcmd1bWVudCwgcmVzdWx0
KTsKIApAQCAtNDU5NSw3ICs0NTg4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDYWxsSXRlcmF0b3IoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQKIAogdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEF3YWl0KFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAg
IGVtaXRZaWVsZCh2YWx1ZSwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb246OkF3YWl0KTsKKyAgICBlbWl0WWllbGQodmFsdWUsIEpTQXN5bmNHZW5l
cmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdhaXQpOwogICAgIG1vdmUodmFs
dWUsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CiB9CiAKQEAgLTQ2NjcsNyArNDY2MCw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAKICAgICAgICAgICAgIFJlZjxMYWJlbD4gYnJhbmNo
T25SZXN1bHQgPSBuZXdMYWJlbCgpOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVt
aXRZaWVsZFBvaW50KHZhbHVlLmdldCgpLCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQpOworICAgICAgICAgICAgICAgIGVtaXRZaWVs
ZFBvaW50KHZhbHVlLmdldCgpLCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb246OllpZWxkKTsKIAogICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gbm9ybWFsTGFi
ZWwgPSBuZXdMYWJlbCgpOwogICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuTGFiZWwg
PSBuZXdMYWJlbCgpOwpAQCAtNDc3OCwxMCArNDc3MSw4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dh
YmxlCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50
MzJfdCBzdGF0ZSkKIHsKICAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7Ci0gICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAg
IGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGNvbXBsZXRlZFN0YXRlKTsKLSAg
ICBlbHNlCi0gICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSwgY29tcGxl
dGVkU3RhdGUpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6U3RhdGUpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZDo6U3RhdGUpKTsKKyAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0
b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpT
dGF0ZSksIGNvbXBsZXRlZFN0YXRlKTsKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEp1bXBWaWFGaW5hbGx5SWZOZWVkZWQoaW50IHRhcmdldExhYmVsU2NvcGVEZXB0aCwgTGFiZWwm
IGp1bXBUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjY5NGIyMjZhYjk1YzJkODcwY2NjMGZhYzQy
MWRmMTE2MTQ1YzczZS4uNDE5N2FiYzEyZTUyMjU4OTE0ZmU1MDBlYzFlZTdiNWFjYjM0YmRlOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKLSNpbmNs
dWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0FzeW5jR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCkBAIC03MjUsNiArNzI1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVUaGlzKFJl
Z2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVQcm9taXNlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0LCBib29sIGlzSW50ZXJuYWxQcm9t
aXNlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
cmVhdGVBc3luY0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1Rhcmdl
dCk7CiAgICAgICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAg
ICAgIGJvb2wgbmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICB2b2lkIGVt
aXRURFpDaGVja0lmTmVjZXNzYXJ5KGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCogdGFyZ2V0
LCBSZWdpc3RlcklEKiBzY29wZSk7CkBAIC04NjksNiArODcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNH
ZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJ
c0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNHZW5lcmF0b3JUeXBlKTsgfQorICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXNBc3luY0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FzeW5jR2VuZXJh
dG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzSlNBcnJheShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwg
c3JjLCBBcnJheVR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1Byb21pc2UoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlw
ZShkc3QsIHNyYywgSlNQcm9taXNlVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElz
UHJveHlPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVt
aXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgUHJveHlPYmplY3RUeXBlKTsgfQpAQCAtOTg1LDEx
ICs5ODcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYmVnaW5Td2l0Y2goUmVn
aXN0ZXJJRCosIFN3aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAgICB2b2lkIGVuZFN3aXRj
aCh1aW50MzJfdCBjbGF1c2VDb3VudCwgY29uc3QgVmVjdG9yPFJlZjxMYWJlbD4sIDg+JiwgRXhw
cmVzc2lvbk5vZGUqKiwgTGFiZWwmIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3Qg
cmFuZ2UpOwogCi0gICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCosIEpTQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uKTsKKyAgICAg
ICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiwgSlNBc3luY0dlbmVyYXRvcjo6QXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uKTsKIAogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JT
dGF0ZUxhYmVsKCk7CiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMy
X3Qgc3RhdGUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQsIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVh
c29uID0gSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b246OllpZWxkKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gPSBK
U0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQogICAgICAgICBS
ZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVy
c1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZh
bHVlKV07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCA2NTI3NjZhYmY5YzU0MTQ4NDMwMDlhZGU2OGY3OTg0MzcyNDRl
NjgzLi42NTkzN2YzMTliZTkyNTQ5M2RlZWUyNTc4NGUxMTJiYTdhNThkOWJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKU0FzeW5jR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgpAQCAtMTAzNCw2ICsxMDM1LDI2IEBAIHN0YXRpYyBK
U0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50
cmluc2ljTm9kZSogbm9kCiAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CiB9
CiAKK3N0YXRpYyBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFs
RmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUt
PmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5l
cmF0b3JGaWVsZFN0YXRlKQorICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6
OlN0YXRlOworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQorICAgICAgICByZXR1cm4gSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAm
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFRoaXMp
CisgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKKyAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpG
aWVsZDo6RnJhbWU7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikK
KyAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uOwor
ICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlRmlyc3QpCisgICAgICAgIHJldHVybiBK
U0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6UXVldWVGaXJzdDsKKyAgICBpZiAobm9kZS0+ZW1pdHRl
cigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJh
dG9yRmllbGRRdWV1ZUxhc3QpCisgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVs
ZDo6UXVldWVMYXN0OworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVs
ZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAg
QXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTEwNjAsNiAr
MTA4MSwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dldEdlbmVyYXRvckludGVybmFsRmllbGQoQnl0ZQogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSwgaW5kZXgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2dldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0
Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0
OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05v
ZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXN5bmNH
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTQXN5bmNHZW5lcmF0
b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsK
KworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOworfQorCiBSZWdpc3RlcklE
KiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FyZ3VtZW50KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTE2MSw2ICsxMTk1LDIyIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0R2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwg
Z2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5n
ZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX3B1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJF
TEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05vZGUoKSk7Cisg
ICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXN5bmNHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9k
ZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTQXN5bmNHZW5lcmF0b3I6Om51bWJl
ck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworCisgICAgQVNT
RVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2Vu
ZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5nZXQo
KSkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKQEAgLTEyODMsNyArMTMzMywxNiBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2lzR2VuZXJhdG9yKEpTQzo6Qnl0ZWNvZGVH
ZW5lcgogCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRJc0dl
bmVyYXRvcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSkpOwogfQot
ICAgIAorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2lzQXN5bmNHZW5lcmF0b3IoSlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6
OlJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRJc0FzeW5jR2VuZXJhdG9yKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpKSk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNKU0FycmF5KEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTQxNTgsNyArNDIx
Nyw3IEBAIFJlZ2lzdGVySUQqIFlpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQoYXJnLmdl
dCgpLCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdFlpZWxkKGFyZy5nZXQoKSwgSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNw
ZW5kUmVhc29uOjpZaWVsZCk7CiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkp
OwpAQCAtNDE3Nyw3ICs0MjM2LDcgQEAgUmVnaXN0ZXJJRCogQXdhaXRFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIHsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOwotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQoYXJnLmdldCgpLCBKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6QXdhaXQpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQoYXJnLmdldCgp
LCBKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OkF3YWl0KTsK
ICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMWU2NGFi
YzUxMjUyODBkMGNmOWVlY2M0OTc0ZDE4ZWZmYjU5NDFiZi4uYmM4ZTBjMmUxMjZmOTMyMDZhMTI3
ZTZiOWU0MTZmODI0ZmU0NTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhhc2hNYXBJbXBsLmgiCiAj
aW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5
LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKQEAgLTI2ODgsMjggKzI2ODksNDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
Y2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVl
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVu
Y3Rpb24qPihtX2dyYXBoLm1fdm0sIGJhc2UpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEZ1bmN0
aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQo
KS5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjpp
bmZvKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpID09IGdsb2JhbE9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJh
cmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6
aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgor
ICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6IHsKKyAgICAgICAgYXV0byBmaW5kQ29uc3Rh
bnQgPSBbJl0gKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSAtPiBib29sIHsKKyAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAo
YXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2dyYXBoLm1fdm0s
IGJhc2UpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJl
RGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxp
ZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gY2xhc3NJbmZvCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkg
PT0gZ2xvYmFsT2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVE
YXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5h
ZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3Js
ZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKKworICAgICAgICBib29sIGZv
dW5kID0gZmFsc2U7CisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICBjYXNl
IENyZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgICAgIGZvdW5kID0gZmluZENvbnN0YW50KEpTR2Vu
ZXJhdG9yOjppbmZvKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRl
QXN5bmNHZW5lcmF0b3I6CisgICAgICAgICAgICBmb3VuZCA9IGZpbmRDb25zdGFudChKU0FzeW5j
R2VuZXJhdG9yOjppbmZvKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBT
cGVjT2JqZWN0T3RoZXIpOwogICAgICAgICBicmVhazsKQEAgLTI3MjEsNiArMjc0MSw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBOZXdHZW5l
cmF0b3I6CisgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgQVNTRVJUKCEhbm9k
ZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG5vZGUtPnN0
cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQ2ZDI3MDE3MDE4Y2I4NTczYTE4ZGVkNmEy
ODJkN2FmODM1ZTU5ZmMuLmQ3ZGMwOTk4NzgyZTIyMjgzZjRhYmM0OGMyOTEzMGI2ZTRmMTUzODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CkBAIC0yMDMsNiArMjAzLDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIHZvaWQgaGFu
ZGxlTmV3RnVuYyhOb2RlVHlwZSwgQnl0ZWNvZGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBC
eXRlY29kZT4KICAgICB2b2lkIGhhbmRsZU5ld0Z1bmNFeHAoTm9kZVR5cGUsIEJ5dGVjb2RlKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+CisgICAgdm9pZCBoYW5kbGVDcmVhdGVJ
bnRlcm5hbEZpZWxkT2JqZWN0KGNvbnN0IENsYXNzSW5mbyosIE5vZGVUeXBlIGNyZWF0ZU9wLCBO
b2RlVHlwZSBuZXdPcCwgQnl0ZWNvZGUpOwogCiAgICAgLy8gQ3JlYXRlIGEgcHJlc2VuY2UgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gYmFzZWQgb24gc29tZSBrbm93biBvZmZzZXQgYW5kIHN0cnVj
dHVyZSBzZXQuIERvZXMgbm90CiAgICAgLy8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBjb25k
aXRpb24sIGJ1dCBpdCBtYXkgcmV0dXJuIGEgbnVsbCBvbmUgaWYgaXQgZW5jb3VudGVycyBhIGNv
bnRyYWRpY3Rpb24uCkBAIC00OTQ1LDUxICs0OTQ3LDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9w
X2NyZWF0ZV9nZW5lcmF0b3I6IHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFu
dGljKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wQ3JlYXRlR2VuZXJhdG9yPigpOwotICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NhbGxlZSkpOwotCi0gICAgICAgICAgICBib29sIGFs
cmVhZHlFbWl0dGVkID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigqbV92bSk7Ci0gICAg
ICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRG
dW5jdGlvbiA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9jYWNoZWRDYWxsZWUudW52
YWxpZGF0ZWRHZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FjaGVkRnVuY3Rpb24KLSAgICAg
ICAgICAgICAgICAgICAgJiYgY2FjaGVkRnVuY3Rpb24gIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVD
YWxsZWVPYmplY3RzKCkKLSAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRGdW5jdGlvbi0+aW5oZXJpdHM8SlNGdW5j
dGlvbj4oKm1fdm0pKTsKLQotICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVu
ID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGNhbGxlZSk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY2FjaGVkRnVu
Y3Rpb24pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKGZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJh
cmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByYXJl
RGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2Jh
bE9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5h
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChO
ZXdHZW5lcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkp
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBs
aXZlIHVwIHRvIHRoaXMgcG9pbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQaGFudG9tLCBjYWxsZWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVh
ZHlFbWl0dGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghYWxyZWFkeUVtaXR0ZWQpCi0gICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoQ3JlYXRlR2VuZXJhdG9yLCBjYWxsZWUpKTsK
KyAgICAgICAgICAgIGhhbmRsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QoSlNHZW5lcmF0b3I6
OmluZm8oKSwgQ3JlYXRlR2VuZXJhdG9yLCBOZXdHZW5lcmF0b3IsIGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BDcmVhdGVHZW5lcmF0b3I+KCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Y3JlYXRlX2dlbmVyYXRvcik7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9h
c3luY19nZW5lcmF0b3I6IHsKKyAgICAgICAgICAgIGhhbmRsZUNyZWF0ZUludGVybmFsRmllbGRP
YmplY3QoSlNBc3luY0dlbmVyYXRvcjo6aW5mbygpLCBDcmVhdGVBc3luY0dlbmVyYXRvciwgTmV3
QXN5bmNHZW5lcmF0b3IsIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBc3luY0dlbmVy
YXRvcj4oKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXN5bmNfZ2VuZXJh
dG9yKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+
KCk7CiAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsCkBAIC03NTAxLDYgKzc0NjcsNTEg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTmV3RnVuY0V4cChOb2RlVHlwZSBvcCwgQnl0
ZWNvZGUgYnl0ZWNvZGUpCiAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBzY29wZSk7CiB9CiAKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNy
ZWF0ZUludGVybmFsRmllbGRPYmplY3QoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIE5vZGVU
eXBlIGNyZWF0ZU9wLCBOb2RlVHlwZSBuZXdPcCwgQnl0ZWNvZGUgYnl0ZWNvZGUpCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jazsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y3VycmVudE5vZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NhbGxlZSkpOworCisgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KCptX3ZtKTsK
KyAgICBpZiAoIWZ1bmN0aW9uKSB7CisgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fY2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0
KCk7CisgICAgICAgIGlmIChjYWNoZWRGdW5jdGlvbgorICAgICAgICAgICAgJiYgY2FjaGVkRnVu
Y3Rpb24gIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkKKyAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRDZWxsKSkgeworICAgICAgICAgICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5p
bmhlcml0czxKU0Z1bmN0aW9uPigqbV92bSkpOworCisgICAgICAgICAgICBGcm96ZW5WYWx1ZSog
ZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rpb24pOworICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBjYWxsZWUpOworCisgICAgICAgICAg
ICBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjYWNoZWRGdW5jdGlvbik7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKEZ1bmN0
aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAg
ICAgIGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGls
bFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVE
YXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSA9PSBjbGFzc0luZm8KKyAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgJiYgcmFy
ZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKG5ld09wLCBPcElu
Zm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkpOworICAgICAgICAgICAg
ICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KKyAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsZWUpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCks
IGFkZFRvR3JhcGgoY3JlYXRlT3AsIGNhbGxlZSkpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZSgpCiB7CiAgICAgLy8gU2V0IGR1cmluZyBjb25zdHJ1Y3Rpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzFlYzdmMTYyODQ5
NWViMmM4NDA0NTk1MTc4NTcxMDJmMWQ4ZTQwYS4uZDMzNzZiZDIxY2FlODkzZmVlZjcxODA4YTAw
ZTgxZTc3YzU3NWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAg
ICAgY2FzZSBvcF9jcmVhdGVfdGhpczoKICAgICBjYXNlIG9wX2NyZWF0ZV9wcm9taXNlOgogICAg
IGNhc2Ugb3BfY3JlYXRlX2dlbmVyYXRvcjoKKyAgICBjYXNlIG9wX2NyZWF0ZV9hc3luY19nZW5l
cmF0b3I6CiAgICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgY2FzZSBvcF9iaXRhbmQ6CiAgICAgY2Fz
ZSBvcF9iaXRvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggMDgyOGZkODEyODczMjAwNjViNmIzYjUwNDEyNjQwOTI1Zjc4NDQ4ZS4uMGMyMzU1MmZmOTE5
YWU5OTA2YTVjNWE3MGZiMWZjZTNlYzRkMTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTY2OSw2ICs2NjksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAg
Y2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKICAg
ICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgogICAgIGNhc2UgT2Jq
ZWN0S2V5czoKQEAgLTE1NjksNiArMTU3MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yOgorICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6
CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4
IGQyZjdiYTQ3OGQ4ZWM4MzRjZDI1MDhkNTNiZDlmYTE0ZDI4MDA5MGUuLmVmNjhmZDU0ZjRlNGQ3
YWFkNTY4NTgxMGMzMzQ4NDEyZTBhMDk4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC01OSw2ICs1OSw3IEBAIGJvb2wg
Y2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3
T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAg
ICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2Ug
TmV3U3ltYm9sOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmM2Y1
Y2I2MGQ4OGFjNWM2NDUyZGRmMTViZTRjNDVkZmUxMDhkOWE3Li41OWNjYzgxMDc1ZmEwMzAyYjIy
NjBmYTRiZTEzYjUwNGQ3Mzk5M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNzc4LDI2ICs3NzgsNDEgQEAg
Y2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIENyZWF0ZUdlbmVy
YXRvcjogewotICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAg
ICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNE
eW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9ncmFwaC5tX3ZtLCBiYXNlKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24t
PnJhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURh
dGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6Omlu
Zm8oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5p
c1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5mcmVlemUocmFyZURhdGEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50U2V0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y29udmVydFRvTmV3R2VuZXJhdG9yKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
c3RydWN0dXJlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgICAgICAgICBjYXNlIENyZWF0ZUFz
eW5jR2VuZXJhdG9yOiB7CisgICAgICAgICAgICAgICAgYXV0byBmb2xkQ29uc3RhbnQgPSBbJl0g
KE5vZGVUeXBlIG5ld09wLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykgeworICAgICAgICAg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4obV9ncmFwaC5tX3ZtLCBiYXNlKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5y
YXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYXJlRGF0
YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
cmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBj
bGFzc0luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1
Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJh
cmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdChuZXdPcCwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworCisgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBD
cmVhdGVHZW5lcmF0b3I6CisgICAgICAgICAgICAgICAgICAgIGZvbGRDb25zdGFudChOZXdHZW5l
cmF0b3IsIEpTR2VuZXJhdG9yOjppbmZvKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgorICAgICAgICAgICAg
ICAgICAgICBmb2xkQ29uc3RhbnQoTmV3QXN5bmNHZW5lcmF0b3IsIEpTQXN5bmNHZW5lcmF0b3I6
OmluZm8oKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAppbmRleCBhOThmNzk1YTg4Zjg3NjFmMjI3YzY0ZjA1YmNmMjA3ZTM4NmExNTBl
Li41ZDJiMDVkM2ZkMTliMzhjMWM3Yjg1MjZiMmM0YzU3OTNhM2QxNGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMzQsNiArMzM0LDcgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBj
YXNlIENyZWF0ZVByb21pc2U6CiAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgY2FzZSBD
cmVhdGVBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBjYXNlIE9i
amVjdEtleXM6CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKQEAgLTM0Myw2ICsz
NDQsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBO
ZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yOgor
ICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNl
IE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIFNwcmVhZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGM3ZDc0MTg2OTdjMmRjMjAwOWYwM2Fl
NWMzNDRlMzgzMGIyOTIzODcuLjNmMWM4OTE1MzI1YzI0MzgxNDYyODM4MzUxYTc0MGFjNjllNjJi
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTY1Miw2ICsxNjUyLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgICAg
ICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRv
cjoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDEwLDYgKzI0
MTEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICAgICAgY2FzZSBOZXdHZW5l
cmF0b3I6CisgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3
UmVnZXhwOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlW
YWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGQ2OGJhNmVkNGM2N2Y3NzZm
YjZlZWIwNDBmNTdjYTAwYzZlOTYyOTEuLjExZDhiNDBmYTYzMjZmZDk1YzJkZDYyZGY3Zjc2YWQ3
YjY1YjJiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC03NjcsMTAgKzc2
NywxMCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IGludGVybmFsOwogICAg
IH0KIAotICAgIHZvaWQgY29udmVydFRvTmV3R2VuZXJhdG9yKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKQorICAgIHZvaWQgY29udmVydFRvTmV3SW50ZXJuYWxGaWVsZE9iamVjdChOb2Rl
VHlwZSBuZXdPcCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBBU1NFUlQobV9vcCA9PSBDcmVhdGVHZW5lcmF0b3IpOwotICAgICAgICBzZXRPcEFuZERlZmF1
bHRGbGFncyhOZXdHZW5lcmF0b3IpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBDcmVhdGVBc3lu
Y0dlbmVyYXRvciB8fCBtX29wID09IENyZWF0ZUdlbmVyYXRvcik7CisgICAgICAgIHNldE9wQW5k
RGVmYXVsdEZsYWdzKG5ld09wKTsKICAgICAgICAgY2hpbGRyZW4ucmVzZXQoKTsKICAgICAgICAg
bV9vcEluZm8gPSBzdHJ1Y3R1cmU7CiAgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBwZXIo
KTsKQEAgLTE5MjMsNiArMTkyMyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBOZXdP
YmplY3Q6CiAgICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0
b3I6CisgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3U3Ry
aW5nT2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNDEwMWY1Y2NiNmU0ODM0
NTk0YzljOTgyNmEzZTQ2MmZjODEwODU3Ni4uOGNhM2I3OTI5Zjc2MWEwMTYwYzZlMzg0ZWEzODI3
NWMzNDZmZGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
NTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
Q3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAvKiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0
ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQgYW55d2F5LiAqLyBcCiAgICAgbWFjcm8oQ3JlYXRl
UHJvbWlzZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENy
ZWF0ZUdlbmVyYXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1h
Y3JvKENyZWF0ZUFzeW5jR2VuZXJhdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRD
YWxsZWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgTm9kZVJlc3VsdEludDMyKSBcCkBAIC0zNDQsNiArMzQ1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE5ld09iamVjdCwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgbWFjcm8oTmV3UHJvbWlzZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
TmV3R2VuZXJhdG9yLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdBc3luY0dlbmVyYXRv
ciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3QXJyYXksIE5vZGVSZXN1bHRKUyB8IE5v
ZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU3ByZWFkLCBOb2RlUmVzdWx0
SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNpemUsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGUwZjcwODIwOTY2M2Y5NTMzYTQ2ZmQyMWIxMTEzZmUz
M2UzYWNkNDkuLjUzM2NiZjE4MWEyODkwZjFmZTY4NDc1ZjNkMTc0MWM4YWJmZDNiY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDA4LDYgKzQw
OCwxNiBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNvbnN0cgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7CiB9CiAKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBc3luY0dlbmVyYXRvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51bGxwdHIsIGNvbnN0cnVjdG9yLCBnbG9iYWxPYmplY3Qt
PmFzeW5jR2VuZXJhdG9yU3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNBc3luY0dlbmVy
YXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKaW5kZXggMjk0MzkyZWM5N2QwNjdlOWQyZDNjMDQwNzk1NDEzODk5ODA3MzJlYS4u
YWRkMGNhZTI2ZWIwZmEzMTVjNzJhNzU3MjM1MjIyMzMwZWIxMzZkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTUxLDYgKzUxLDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNv
bnN0cnVjdG9yLCB1aW4KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVQcm9t
aXNlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBX
VEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW50ZXJu
YWxQcm9taXNlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmpl
Y3QqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
R2VuZXJhdG9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmpl
Y3QqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
QXN5bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2Jh
bE9iamVjdCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9UaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3Ry
aWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA0MWY2YzM3YzRhMDBjZWQ3
NDM0NGRhYzg2ODA2Y2Q0MTY2YzMwZDQ1Li5lNzJhYTVkZDI1N2YzMjQ2ZTFiZGI2Y2M2Yzg1OTU5
ZjI4OWU5NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTAxOSw2ICsxMDE5LDggQEAg
Y2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogCiAgICAg
ICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAg
ICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgY2FzZSBOZXdBc3luY0dl
bmVyYXRvcjoKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDU4OGI5OGRmNWM0ZGRkZGJjNDNmMjRhNDA1YWI2
NDEwOGVkODdjM2IuLjQ2MDYxYzg2Y2Y5NWMwNzgxNjFmNGE1OTI0Y2QzYTUyNDZjZGMwMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0xODAs
NiArMTgwLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIENyZWF0ZVRoaXM6
CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAg
IGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAg
Y2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgR2V0Q2FsbGVlOgpAQCAtMzI0LDYgKzMyNSw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBO
ZXdQcm9taXNlOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAgIGNhc2UgTmV3QXN5bmNHZW5l
cmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAg
ICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggY2VkZTkwMjlhOGI5ZTE0MmI5Yjk4MGEzNDg0NmZi
YjUyZjJkNmZlYy4uYjY5YWMwMzI4MTMzZDFmMmM3YTEwNzVjOTNjNGYwOTY4NjNjMmMzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTEyNzY2LDcgKzEyNzY2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVBy
b21pc2UoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSogbm9kZSkK
KwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QoTm9kZSogbm9k
ZSwgT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKQEAg
LTEyNzkyLDI1ICsxMjc5NCwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
R2VuZXJhdG9yKE5vZGUqIG5vZGUpCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hU
ZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOwogICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1
bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVH
UFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIHN0cnVjdHVyZUdQUikpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihK
U0dlbmVyYXRvcjo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihKU0NsYXNzOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFH
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFs
T2JqZWN0T2Zmc2V0KCkpKSk7CiAKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIo
bnVsbHB0cik7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTR2VuZXJh
dG9yPihyZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2Ny
YXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJhdG9yKSk7Ci0gICAgbV9qaXQuc3Rv
cmVUcnVzdGVkVmFsdWUoanNOdWxsKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIs
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90bykpKSk7Ci0gICAg
bV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZp
ZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkpKTsK
LSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9m
SW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpO
ZXh0KSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46
Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6
OkZpZWxkOjpUaGlzKSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5l
ZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNH
ZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRo
S25vd25TaXplPEpTQ2xhc3M+KHJlc3VsdEdQUiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNj
cmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNDbGFzcykpOworICAg
IGF1dG8gaW5pdGlhbFZhbHVlcyA9IEpTQ2xhc3M6OmluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBKU0NsYXNzOjpudW1iZXJPZkludGVybmFsRmll
bGRzOyArK2luZGV4KQorICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShpbml0aWFsVmFs
dWVzW2luZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAgICAgbV9q
aXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yLCBy
ZXN1bHRHUFIsIGNhbGxlZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3Jh
cGgoKSwgZ2xvYmFsT2JqZWN0KSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkpKTsK
IAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVD
cmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0PEpTR2VuZXJhdG9yPihub2RlLCBvcGVyYXRpb25DcmVh
dGVHZW5lcmF0b3IpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXN5
bmNHZW5lcmF0b3IoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVs
ZE9iamVjdDxKU0FzeW5jR2VuZXJhdG9yPihub2RlLCBvcGVyYXRpb25DcmVhdGVBc3luY0dlbmVy
YXRvcik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdPYmplY3QoTm9kZSog
bm9kZSkKIHsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMTI4NjcsNyArMTI4
NzcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UHJvbWlzZShOb2RlKiBub2Rl
KQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKiBub2RlKQordGVtcGxhdGU8dHlwZW5hbWUg
SlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0ludGVybmFsRmllbGRPYmplY3QoTm9kZSogbm9kZSwgT3BlcmF0aW9uIG9wZXJhdGlvbikK
IHsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoMSh0aGlzKTsKQEAgLTEyODgxLDE5ICsxMjg5MiwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqIG5vZGUpCiAKICAgICBGcm96ZW5WYWx1ZSogc3Ry
dWN0dXJlID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwog
ICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1c3RlZEltbVB0cihudWxscHRyKTsKLSAgICBlbWl0QWxs
b2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8SlNHZW5lcmF0b3I+KHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwg
c2xvd0Nhc2VzLCBzaXplb2YoSlNHZW5lcmF0b3IpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRW
YWx1ZShqc051bGwoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6UG9seVByb3RvKSkpKTsKLSAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
R2VuZXJhdG9yU3RhdGU6OkluaXQpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSkpOwotICAgIG1faml0
LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZp
ZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpKSkpOwot
ICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJ
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRo
aXMpKSkpOwotICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6
b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6
RmllbGQ6OkZyYW1lKSkpKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8
SlNDbGFzcz4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwg
c2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0NsYXNzKSk7Cisg
ICAgYXV0byBpbml0aWFsVmFsdWVzID0gSlNDbGFzczo6aW5pdGlhbFZhbHVlcygpOworICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IEpTQ2xhc3M6Om51bWJlck9mSW50ZXJuYWxG
aWVsZHM7ICsraW5kZXgpCisgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGluaXRpYWxW
YWx1ZXNbaW5kZXhdLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChpbmRleCkpKTsKICAgICBt
X2ppdC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3IsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yKE5v
ZGUqIG5vZGUpCit7CisgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNHZW5lcmF0
b3I+KG5vZGUsIG9wZXJhdGlvbk5ld0dlbmVyYXRvcik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVO
ZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTQXN5bmNHZW5lcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5l
d0FzeW5jR2VuZXJhdG9yKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJp
bWl0aXZlKE5vZGUqIG5vZGUpCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2Rl
LCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAppbmRleCBlMzcyZTkxMjcwNmEzZjVjM2E4NzJkYzE0NzEyZGI1YjQxOTc5NmNmLi5hZDVk
YmZlNzlkZDI3NjQ0ZDZiYzM2ZmVmY2ZhNTllZTQ0MTliMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDc2LDkgKzE0NzYsMTEgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUdlbmVyYXRvcihOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXN5bmNHZW5l
cmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld09iamVjdChOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlTmV3UHJvbWlzZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9y
KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlVG9QcmltaXRpdmUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxvZ1NoYWRv
d0NoaWNrZW5Qcm9sb2d1ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93Q2hpY2tl
blRhaWwoTm9kZSopOwpAQCAtMTQ4OCw2ICsxNDkwLDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklU
IHsKICAgICB2b2lkIGNvbXBpbGVQcm9maWxlVHlwZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U3RyaW5nQ29kZVBvaW50QXQoTm9kZSopOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFz
cywgdHlwZW5hbWUgT3BlcmF0aW9uPgorICAgIHZvaWQgY29tcGlsZUNyZWF0ZUludGVybmFsRmll
bGRPYmplY3QoTm9kZSosIE9wZXJhdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFz
cywgdHlwZW5hbWUgT3BlcmF0aW9uPgorICAgIHZvaWQgY29tcGlsZU5ld0ludGVybmFsRmllbGRP
YmplY3QoTm9kZSosIE9wZXJhdGlvbik7CisKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsK
ICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBibGVzc0Jvb2xlYW4oR1BS
UmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IDQxYzQ0Njc5MjA2YmU2OGI0MDJjNmIwOWJiMWFiMzZkNDNlYzhi
NzIuLjAyODQ3Yjk2NjU4MTU3OTYwMDBiYjk3NDMxYjE3Y2IxYWY2YjRkOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzE2Niw2ICszMTY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVy
YXRvcjogeworICAgICAgICBjb21waWxlQ3JlYXRlQXN5bmNHZW5lcmF0b3Iobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBp
bGVOZXdPYmplY3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzE4MSw2ICszMTg2LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjogeworICAgICAgICBjb21waWxl
TmV3QXN5bmNHZW5lcmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgR2V0Q2FsbGVlOiB7CiAgICAgICAgIGNvbXBpbGVHZXRDYWxsZWUobm9kZSk7CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKaW5kZXggYTM1YjRlZDkyZjdmMDI5ZGQyY2ZmY2MzZjhkYzAwY2E2ZDBiMGNjZS4u
NDdjMTgyYTU4OTY5ZGVjYzJkNWU5ZjM4N2FhOGNhYWQ4ZjRmNGViMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNDkyLDYg
KzM0OTIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CisKKyAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVDcmVh
dGVBc3luY0dlbmVyYXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAK
ICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBjb21waWxlTmV3T2JqZWN0KG5vZGUpOwpA
QCAtMzUwOCw2ICszNTEzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRv
cjogeworICAgICAgICBjb21waWxlTmV3QXN5bmNHZW5lcmF0b3Iobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAgICAgIGNvbXBpbGVHZXRD
YWxsZWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA1
NDkxN2RiMzQ5MWUyZDdhOTI5YjU3MWNjNzM2MTJiYWQxNzc3NTg0Li43NTg2N2JmNzc1Zjk1MmRl
MDllNTVlMjkzMzQ1MmE5NmZiNDI0OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzIz
LDYgKzMyMyw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBOZXdQ
cm9taXNlOgogICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgICAgICBjYXNl
IE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAg
ICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZm
ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5k
ZXggZDViNTUyOGU4NGI1OTc1ZjY5NzQxY2EzNTBmMzc3ZGE5MDg0ZmUxNS4uYzYxZjllNjU4MGJm
M2I2ZTQ1YzYxNTBiOTlmMGY0YjgzYzMxZTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNzYsNiArNzYsNyBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAg
ICBjYXNlIE5ld1Byb21pc2U6CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgY2FzZSBOZXdB
c3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE5ld1N5
bWJvbDoKICAgICBjYXNlIE5ld0FycmF5OgpAQCAtMzgzLDYgKzM4NCw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlVGhpczoK
ICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAg
Y2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAg
IGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICBjYXNlIERhdGFWaWV3U2V0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDg2N2JkNzdiODU4
NDY2NmFhZDI5OTcyNDQ1ZDQ0N2JmNmUzZmVhOWYuLjA4NzBhN2ZhMWI2ZjNkNjlkNjQyMGY3MGU0
NjkxNWIyZDBiMWM0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJKSVRSaWdodFNoaWZ0R2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUU3ViR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3lu
Y0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpT
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0dlbmVyYXRvci5oIgpAQCAtMTA1NSw2ICsxMDU2LDkgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAgICAgICBjb21waWxlTmV3
R2VuZXJhdG9yKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdBc3luY0dl
bmVyYXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcigpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAg
Y29tcGlsZU5ld1N0cmluZ09iamVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDc2LDYg
KzEwODAsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIENyZWF0ZUdlbmVy
YXRvcjoKICAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgorICAgICAgICAgICAg
Y29tcGlsZUNyZWF0ZUFzeW5jR2VuZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTU5MzIsMzEgKzU5MzksNDAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xv
d1Jlc3VsdCkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvcigpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgorICAgIHZvaWQg
Y29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3QoT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICB7
CiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKIAogICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93
Q2FzZSk7CiAKLSAgICAgICAgTFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0PEpTR2Vu
ZXJhdG9yPihtX25vZGUtPnN0cnVjdHVyZSgpLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7
Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxf
aW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6
UG9seVByb3RvKV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmll
bGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVy
YXRvcjo6RmllbGQ6OlN0YXRlKV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBz
LkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCldKTsKLSAgICAgICAgbV9vdXQuc3RvcmU2
NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVy
YXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpXSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRl
cm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFt
ZSldKTsKKyAgICAgICAgTFZhbHVlIG9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEpTQ2xhc3M+KG1f
bm9kZS0+c3RydWN0dXJlKCksIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAg
YXV0byBpbml0aWFsVmFsdWVzID0gSlNDbGFzczo6aW5pdGlhbFZhbHVlcygpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBKU0NsYXNzOjpudW1iZXJPZkludGVybmFs
RmllbGRzOyArK2luZGV4KQorICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsVmFsdWVzW2luZGV4XSkpLCBvYmplY3QsIG1faGVh
cHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tpbmRleF0pOwogICAg
ICAgICBtdXRhdG9yRmVuY2UoKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihnZW5lcmF0b3IpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsK
LSAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwo
cG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvciksIG1f
Y2FsbEZyYW1lLCBmcm96ZW5Qb2ludGVyKG1fZ3JhcGguZnJlZXplU3Ryb25nKG1fbm9kZS0+c3Ry
dWN0dXJlKCkuZ2V0KCkpKSkpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uKSwgbV9jYWxsRnJhbWUsIGZyb3plblBvaW50ZXIobV9ncmFwaC5mcmVlemVTdHJvbmcobV9u
b2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwg
c2xvd1Jlc3VsdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvcigpCisg
ICAgeworICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU0dlbmVyYXRvcj4o
b3BlcmF0aW9uTmV3R2VuZXJhdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVOZXdBc3lu
Y0dlbmVyYXRvcigpCisgICAgeworICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dDxKU0FzeW5jR2VuZXJhdG9yPihvcGVyYXRpb25OZXdBc3luY0dlbmVyYXRvcik7CisgICAgfQor
CiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCkKICAgICB7CiAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmUoKTsKQEAgLTYzNzMs
NyArNjM4OSw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVz
dWx0KTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4KKyAgICB2b2lkIGNv
bXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE9wZXJhdGlvbiBvcGVyYXRpb24pCiAgICAg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCkBAIC02Mzk4LDI0ICs2NDE1LDIy
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1pl
cm82NChzdHJ1Y3R1cmUpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1N0cnVjdHVyZSkp
OwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1N0cnVjdHVyZSwgY2hlY2tHbG9iYWxPYmpl
Y3RDYXNlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0LmxvYWRQdHIo
c3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9jbGFzc0luZm8pLCBtX291dC5jb25zdEludFB0
cihKU0dlbmVyYXRvcjo6aW5mbygpKSksIHVzdWFsbHkoY2hlY2tHbG9iYWxPYmplY3RDYXNlKSwg
cmFyZWx5KHNsb3dDYXNlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChtX291
dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKSwgbV9vdXQu
Y29uc3RJbnRQdHIoSlNDbGFzczo6aW5mbygpKSksIHVzdWFsbHkoY2hlY2tHbG9iYWxPYmplY3RD
YXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY2hlY2tH
bG9iYWxPYmplY3RDYXNlLCBmYXN0QWxsb2NhdGlvbkNhc2UpOwogICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJl
X2dsb2JhbE9iamVjdCksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCkpLCB1c3VhbGx5KGZhc3RB
bGxvY2F0aW9uQ2FzZSksIHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGZhc3RBbGxvY2F0aW9uQ2FzZSwgc2xvd0Nhc2UpOwotICAgICAgICBMVmFsdWUgZ2VuZXJh
dG9yID0gYWxsb2NhdGVPYmplY3Q8SlNHZW5lcmF0b3I+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRy
WmVybywgc2xvd0Nhc2UpOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFs
RmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dl
bmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90byldKTsKLSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkpLCBnZW5lcmF0b3IsIG1faGVh
cHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsKLSAgICAgICAgbV9vdXQuc3Rv
cmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdl
bmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpXSk7Ci0gICAg
ICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9p
bnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpU
aGlzKV0pOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJh
dG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIExWYWx1ZSBvYmplY3QgPSBhbGxvY2F0ZU9i
amVjdDxKU0NsYXNzPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAg
ICAgICAgYXV0byBpbml0aWFsVmFsdWVzID0gSlNDbGFzczo6aW5pdGlhbFZhbHVlcygpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBKU0NsYXNzOjpudW1iZXJPZklu
dGVybmFsRmllbGRzOyArK2luZGV4KQorICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsVmFsdWVzW2luZGV4XSkpLCBvYmplY3Qs
IG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tpbmRleF0p
OwogICAgICAgICBtdXRhdG9yRmVuY2UoKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJl
c3VsdCA9IG1fb3V0LmFuY2hvcihnZW5lcmF0b3IpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0
aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IpLCBt
X2NhbGxGcmFtZSwgY2FsbGVlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpKSk7CisgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC02NDI0
LDYgKzY0MzksMTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcigpCisgICAg
eworICAgICAgICBjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdDxKU0dlbmVyYXRvcj4o
b3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVDcmVh
dGVBc3luY0dlbmVyYXRvcigpCisgICAgeworICAgICAgICBjb21waWxlQ3JlYXRlSW50ZXJuYWxG
aWVsZE9iamVjdDxKU0FzeW5jR2VuZXJhdG9yPihvcGVyYXRpb25DcmVhdGVBc3luY0dlbmVyYXRv
cik7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlU3ByZWFkKCkKICAgICB7CiAgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21OZXdBcnJheUJ1ZmZlcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGJiZmNmZTMwZmEzNjBmZGY1M2Q4MzdhN2I5N2E1
NDIzNjdlMjk1YWYuLmVmYWQ1NWMxZTQyMDIzYzBhMGE2M2IzMTU4M2U4YWFmYmZkMmQzZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMxMyw2ICszMTMsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9w
cm9taXNlKQogICAgICAgICBERUZJTkVfU0xPV19PUChuZXdfcHJvbWlzZSkKICAgICAgICAgREVG
SU5FX1NMT1dfT1AoY3JlYXRlX2dlbmVyYXRvcikKKyAgICAgICAgREVGSU5FX1NMT1dfT1AoY3Jl
YXRlX2FzeW5jX2dlbmVyYXRvcikKICAgICAgICAgREVGSU5FX1NMT1dfT1AobmV3X2dlbmVyYXRv
cikKICAgICAgICAgREVGSU5FX1NMT1dfT1AocG93KQogCkBAIC01ODMsNiArNTg0LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AoY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNy
ZWF0ZV9wcm9taXNlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfZ2Vu
ZXJhdG9yKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfYXN5bmNfZ2Vu
ZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b190aGlzKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcmltaXRpdmUpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9TTE9XX09QKHRvX251bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggZDQ4M2Y5NDU4MDhkNTY5NzBmNDNhOWRlYTlhZTJjMzM2MGY2YjE4NC4uMzk1
OWI4ZDUwODhjNGZhNzA3MGY0ZTU4NmFiMDhjNzU0M2YxZDI4MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxOSw3ICs3MTksNyBAQCBBTFdBWVNfSU5MSU5FIEdl
dFB1dEluZm8gSklUOjpjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBieXRlY29kZSkKIHRl
bXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPgogQUxXQVlTX0lOTElORSBBcml0aFByb2ZpbGUgSklU
Ojpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7Ci0gICAgdWludDY0X3Qg
a2V5ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEJpbmFyeU9wOjpvcGNvZGVJRCkgPDwgMzIgfCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKKyAgICB1aW50NjRf
dCBrZXkgPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEJpbmFyeU9wOjpvcGNvZGVJRCkgKyAxKSA8
PCAzMiB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRlY29kZS5tX21ldGFkYXRhSUQpOwogICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2NvcGllZEFyaXRoUHJvZmlsZXMuZmluZChrZXkpOwogICAgIGlm
IChpdGVyYXRvciAhPSBtX2NvcGllZEFyaXRoUHJvZmlsZXMuZW5kKCkpCiAgICAgICAgIHJldHVy
biBpdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCAzYzNlMzYyZTU3NTIzOTdjOTdmMTZjZDM5ZjEwMzc0MTA2NzFiY2Y1Li42
NTZlN2RkODZhYjIzYzk2OGZlOWI3ODFlZGFhYzRhNWE1ZmJiZDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE0MDIsNiArMTQwMiwxNCBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cgogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZt
LCBzdHJ1Y3R1cmUpOwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5
bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOworCisgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChF
eGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogcmVnZXhwUHRyKQogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKaW5kZXggMWI3NDliMjMwZjgwMmQzZmM0MmZjZmExNjA0NmJhODlmMzBj
OGM1Yi4uZDI1MzIzMTRhZjczZDkyNTgwODQxMjBmNmE1ZTQ5NDE3ZmVjZWU2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTQyMiw2ICs0MjIsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdQ
cm9taXNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dl
bmVyYXRvcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jl
Z2V4cChFeGVjU3RhdGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBVbnVzZWRQdHIgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25IYW5kbGVUcmFwcyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAwZmVhMDk2MDFkMjcxYjZlZjIxYzVlOWI0YjBl
NDJjNGM1NmI0MGQ0Li4yZDlhMTcyNDYyYWNlOWZlM2E2MWE5ZjBjZTBjYzI2YjQ5NmZlNDQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0xNDk2LDYgKzE0OTYsNyBAQCBzbG93UGF0aE9wKGNyZWF0ZV9zY29wZWRfYXJn
dW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVfdGhpcykKIHNsb3dQYXRoT3AoY3JlYXRlX3Byb21p
c2UpCiBzbG93UGF0aE9wKGNyZWF0ZV9nZW5lcmF0b3IpCitzbG93UGF0aE9wKGNyZWF0ZV9hc3lu
Y19nZW5lcmF0b3IpCiBzbG93UGF0aE9wKGRlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIHNsb3dQ
YXRoT3AoZGVmaW5lX2RhdGFfcHJvcGVydHkpCiBzbG93UGF0aE9wKGVudW1lcmF0b3JfZ2VuZXJp
Y19wbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCmluZGV4IGE5MDhlMDMwZDhkZTk5MDEwOTQyZmM2MTI4MGMyODFjMzA4YTRhMTAu
LjkyNGY3ZTViMzUyNTJiNDM4MWE2YjIyODIxNmI4ZDc2MDc4ZDgxMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzA5LDE2
ICszMDksMTYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19wcm9taXNlKQogICAgIFJF
VFVSTihyZXN1bHQpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVy
YXRvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIEJ5dGVjb2RlPgorc3Rh
dGljIEpTQ2xhc3MqIGNyZWF0ZUludGVybmFsRmllbGRPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBW
TSYgdm0sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJl
KQogewotICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUdl
bmVyYXRvcj4oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvckFzT2JqZWN0ID0gYXNPYmplY3QoR0VU
KGJ5dGVjb2RlLm1fY2FsbGVlKS5qc1ZhbHVlKCkpOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBudWxs
cHRyLCBjb25zdHJ1Y3RvckFzT2JqZWN0LCBnbG9iYWxPYmplY3QtPmdlbmVyYXRvclN0cnVjdHVy
ZSgpKTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU0dlbmVyYXRvciogcmVzdWx0ID0g
SlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51
bGxwdHIsIGNvbnN0cnVjdG9yQXNPYmplY3QsIGJhc2VTdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIEpTQ2xhc3MqIHJlc3VsdCA9IEpTQ2xh
c3M6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKIAogICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9y
ID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGNvbnN0cnVjdG9yQXNPYmplY3QpOwog
ICAgIGlmIChjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci0+Y2FuVXNlQWxsb2NhdGlvblByb2Zp
bGUoKSkgewpAQCAtMzI4LDcgKzMyOCwyMSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3Jl
YXRlX2dlbmVyYXRvcikKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVk
R2V0KCkgIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkgJiYgY2FjaGVkQ2Fs
bGVlLmdldCgpICE9IGNvbnN0cnVjdG9yKQogICAgICAgICAgICAgY2FjaGVkQ2FsbGVlLnNldFdp
dGhvdXRXcml0ZUJhcnJpZXIoSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpOwog
ICAgIH0KLSAgICBSRVRVUk4ocmVzdWx0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHJlc3VsdCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfZ2VuZXJhdG9y
KQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUdl
bmVyYXRvcj4oKTsKKyAgICBSRVRVUk4oY3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdDxKU0dlbmVy
YXRvcj4oZXhlYywgdm0sIGJ5dGVjb2RlLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdl
bmVyYXRvclN0cnVjdHVyZSgpKSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfYXN5bmNfZ2VuZXJhdG9yKQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcENyZWF0ZUFzeW5jR2VuZXJhdG9yPigpOworICAgIFJFVFVSTihjcmVhdGVJbnRl
cm5hbEZpZWxkT2JqZWN0PEpTQXN5bmNHZW5lcmF0b3I+KGV4ZWMsIHZtLCBieXRlY29kZSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hc3luY0dlbmVyYXRvclN0cnVjdHVyZSgpKSk7CiB9
CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA3ZjkwYjE0MGI4
OTc5MGZlMTRjNDMwN2YxYTIwZjc0ZmQ5ZDNmYmIxLi5kNWQ2ZjdlMjQwMGRiN2M5MGVkMWYzNjll
YmY4MzI3ODI2ZDk0YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMzg1LDYgKzM4NSw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXNfdmFyX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcHJvbWlzZSk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9nZW5lcmF0b3IpOworU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2NjYzZjMzU4NWJiOGFj
N2MzOGU4MzUwZjA5YzVjN2M1MmQ1MDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5jcHAKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0FzeW5jR2VuZXJh
dG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBKU0FzeW5jR2VuZXJhdG9yOjpzX2luZm8gPSB7ICJBc3luY0dlbmVyYXRvciIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBc3luY0dl
bmVyYXRvcikgfTsKKworSlNBc3luY0dlbmVyYXRvciogSlNBc3luY0dlbmVyYXRvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNBc3luY0dlbmVyYXRvciog
Z2VuZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBc3luY0dlbmVyYXRvcj4o
dm0uaGVhcCkpIEpTQXN5bmNHZW5lcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgZ2VuZXJhdG9y
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworU3RydWN0
dXJlKiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Fz
eW5jR2VuZXJhdG9yVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0FzeW5j
R2VuZXJhdG9yOjpKU0FzeW5jR2VuZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNBc3luY0dlbmVyYXRv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZkludGVybmFsRmllbGRzOyArK2luZGV4KQorICAg
ICAgICBpbnRlcm5hbEZpZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOwor
fQorCit2b2lkIEpTQXN5bmNHZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QXN5bmNHZW5lcmF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U1ODA0YTM5NzMw
NzI3ZDk4OTBhY2I4NzA1NGE3ZWU0ZWE5OWRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaApAQCAtMCwwICsxLDk5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTQXN5bmNHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbDw4PiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGw8OD47CisKKyAgICAvLyBKU0FzeW5jR2VuZXJhdG9yIGhhcyBvbmUgaW5saW5l
IHN0b3JhZ2Ugc2xvdCwgd2hpY2ggaXMgcG9pbnRpbmcgaW50ZXJuYWxGaWVsZCgwKS4KKyAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0
eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksIGlubGluZUNh
cGFjaXR5ID09IDBVKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0FzeW5jR2VuZXJhdG9yKTsK
KyAgICB9CisKKyAgICBlbnVtIGNsYXNzIEFzeW5jR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsK
KyAgICAgICAgQ29tcGxldGVkID0gLTEsCisgICAgICAgIEV4ZWN1dGluZyA9IC0yLAorICAgICAg
ICBTdXNwZW5kZWRTdGFydCA9IC0zLAorICAgICAgICBTdXNwZW5kZWRZaWVsZCA9IC00LAorICAg
ICAgICBBd2FpdGluZ1JldHVybiA9IC01LAorICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxpbnQzMl90PihBc3luY0dlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpID09IHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQzMl90PihBc3luY0dlbmVyYXRvclN0
YXRlOjpFeGVjdXRpbmcpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICBlbnVtIGNsYXNzIEFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbiA6IGludDMyX3QgeworICAgICAgICBOb25lID0gMCwKKyAgICAgICAgWWll
bGQgPSAtMSwKKyAgICAgICAgQXdhaXQgPSAtMgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEZp
ZWxkIDogdWludDMyX3QgeworICAgICAgICAvLyBGSVhNRTogSlNBc3luY0dlbmVyYXRvciBzaG91
bGQgc3VwcG9ydCBQb2x5UHJvdG8sIHNpbmNlIGdlbmVyYXRvciB0ZW5kcyB0byBiZSBjcmVhdGVk
IHdpdGggcG9seSBwcm90byBtb2RlLgorICAgICAgICAvLyBXZSByZXNlcnZlIHRoZSBmaXJzdCBp
bnRlcm5hbCBmaWVsZCBmb3IgUG9seVByb3RvIHByb3BlcnR5LiBUaGlzIG9mZnNldCBpcyBpZGVu
dGljYWwgdG8gSlNGaW5hbE9iamVjdCdzIGZpcnN0IGlubGluZSBzdG9yYWdlIHNsb3Qgd2hpY2gg
d2lsbCBiZSB1c2VkIGZvciBQb2x5UHJvdG8uCisgICAgICAgIFBvbHlQcm90byA9IDAsCisgICAg
ICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlzLAorICAgICAgICBGcmFtZSwK
KyAgICAgICAgU3VzcGVuZFJlYXNvbiwKKyAgICAgICAgUXVldWVGaXJzdCwKKyAgICAgICAgUXVl
dWVMYXN0LAorICAgIH07CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVybmFsRmllbGRz
ID09IDgpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9mSW50ZXJuYWxG
aWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgeworICAgICAg
ICAgICAganNOdWxsKCksCisgICAgICAgICAgICBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihBc3luY0dlbmVyYXRvclN0YXRlOjpTdXNwZW5kZWRTdGFydCkpLAorICAgICAgICAgICAganNV
bmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1Vu
ZGVmaW5lZCgpLAorICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpOb25lKSksCisgICAgICAgICAgICBqc051bGwoKSwK
KyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICB9IH07CisgICAgfQorCisgICAgc3RhdGlj
IEpTQXN5bmNHZW5lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcm90ZWN0ZWQ6CisgICAgSlNBc3luY0dl
bmVyYXRvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCA4NmJhMzcxYjBk
MTFjNjBkNzhhMjE4OTIyMjBjNmQyYjNkMjlhOTBmLi4wZWJmMDc2YzE5MjRiYzljMTQ0ZGMyZGMz
YWEwOTc3NGM3NWI4MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtNTYsMTkgKzU2LDYgQEAgY2xh
c3MgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewog
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgIH0KIAotICAgIGVudW0gY2xhc3MgQXN5bmNHZW5lcmF0b3JTdGF0ZSA6IGludDMyX3Qgewot
ICAgICAgICBDb21wbGV0ZWQgPSAtMSwKLSAgICAgICAgRXhlY3V0aW5nID0gLTIsCi0gICAgICAg
IFN1c3BlbmRlZFN0YXJ0ID0gLTMsCi0gICAgICAgIFN1c3BlbmRlZFlpZWxkID0gLTQsCi0gICAg
ICAgIEF3YWl0aW5nUmV0dXJuID0gLTUKLSAgICB9OwotICAgIAotICAgIGVudW0gY2xhc3MgQXN5
bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIDogaW50MzJfdCB7Ci0gICAgICAgIE5vbmUgPSAwLAot
ICAgICAgICBZaWVsZCA9IC0xLAotICAgICAgICBBd2FpdCA9IC0yCi0gICAgfTsKIHByaXZhdGU6
CiAgICAgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSosIFN0cnVjdHVyZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyYXRvci5jcHAKaW5kZXggNzU4YjcwN2U0NWI4ZWFiMzI5NjZlYjRjOGE1ZDUwN2Ew
YTg5NzlhYy4uNTE0MmQ3Zjg3YmVmMGJjYjNlZTliNTZiNTNkNWU5NjY4MWNjM2ZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcApAQCAtNTMsMTEg
KzUzLDkgQEAgSlNHZW5lcmF0b3I6OkpTR2VuZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB2b2lkIEpTR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEZpZWxkOjpQb2x5UHJvdG8pKS5zZXQodm0sIHRoaXMsIGpzTnVsbCgpKTsKLSAg
ICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6U3RhdGUpKS5zZXQo
dm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEdlbmVyYXRvclN0YXRlOjpJ
bml0KSkpOwotICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpO
ZXh0KSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBpbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6VGhpcykpLnNldCh2bSwgdGhpcywganNVbmRlZmlu
ZWQoKSk7Ci0gICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OkZy
YW1lKSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBhdXRvIHZhbHVlcyA9IGlu
aXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1i
ZXJPZkludGVybmFsRmllbGRzOyArK2luZGV4KQorICAgICAgICBpbnRlcm5hbEZpZWxkKGluZGV4
KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOwogfQogCiB2b2lkIEpTR2VuZXJhdG9yOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAppbmRleCA3YjQ0ZTc3NmFkMDBh
OTQwNTY1YjZkMDc3ZmRkNjdkMzFkNWJkMjJjLi45MDgxYzNjOGY4NGEzYTM2NjNjYTI5ZWFkMTQ0
YjdmYjYxYjI2NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJh
dG9yLmgKQEAgLTcyLDYgKzcyLDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8NT4gewogICAgICAgICBGcmFtZSwKICAgICB9Owog
ICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSA1KTsKKyAgICBzdGF0
aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFs
dWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpzTnVsbCgpLAor
ICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oR2VuZXJhdG9yU3RhdGU6
OkluaXQpKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVm
aW5lZCgpLAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgfSB9OworICAgIH0K
IAogICAgIHN0YXRpYyBKU0dlbmVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCAwZDU5ODk0ZGY2YjZlZWQzYWUxZjM4MzRkMmQ5Yjk3MmNmZGM0YzVlLi5h
MjBiMTYzODRmZDQ5Yzk3NDlmOTc2MjQ0NzU3ZThjYzdjY2E5ZWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04MzMsNiArODMz
LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3Rv
ciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fYXN5bmNHZW5lcmF0b3JQcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
ICAgIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbV9hc3luY0dlbmVyYXRv
clByb3RvdHlwZS5nZXQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNBc3luY0dlbmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Fz
eW5jR2VuZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1
bmN0aW9uQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKQEAgLTE3NjksNiArMTc3MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0b3JTdHJ1
Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cmVnRXhwTWF0Y2hlc0FycmF5V2l0aEdyb3Vwc1N0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxZDJiYzJkYTIxNDE2Y2Jl
ZTVmOTEwODAyZjdmNDNjOGJiMDBmMjFjLi5iZTFiZDI1Mjc2OTYwYjQwYTM4MDI2YzJkMGI5ZDU2
OGM1NGJiZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTM3NSw2ICszNzUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2dlbmVyYXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEdyb3Vw
c1N0cnVjdHVyZTsKQEAgLTc1NCw2ICs3NTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5jR2Vu
ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvclN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmNwcAppbmRleCA1MDJiNDZlMjI3MWZlMGQ2MDBlMDBkNDRmOTIxNzQ0YzRlMzFmMTQxLi5kMWM2
NzNlNjVmYThmMmE3YjhlYmNmNGU1ZjIxNGZmOThjMjhiN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTk4LDYgKzk4LDcgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShSZWdFeHBP
YmplY3RUeXBlKQogICAgIENBU0UoUHJveHlPYmplY3RUeXBlKQogICAgIENBU0UoSlNHZW5lcmF0
b3JUeXBlKQorICAgIENBU0UoSlNBc3luY0dlbmVyYXRvclR5cGUpCiAgICAgQ0FTRShKU1Byb21p
c2VUeXBlKQogICAgIENBU0UoSlNNYXBUeXBlKQogICAgIENBU0UoSlNTZXRUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA4MTUxZWVlZDJhN2M1OTJiZWVjYTRj
OGZmNzY2NWQ0YTRhMmUyMTRiLi5lOTMwZmQzNWFkNjQ2YWNiOWY2ZjdmN2M1ZDAyOWQzYWJhNjBm
MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEwLDYgKzEx
MCw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgUmVnRXhwT2JqZWN0VHlwZSwKICAg
ICBQcm94eU9iamVjdFR5cGUsCiAgICAgSlNHZW5lcmF0b3JUeXBlLAorICAgIEpTQXN5bmNHZW5l
cmF0b3JUeXBlLAogICAgIEpTUHJvbWlzZVR5cGUsCiAgICAgSlNNYXBUeXBlLAogICAgIEpTU2V0
VHlwZSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZDc2YzU1MDljZmU0N2ZkNjEzMGU0ZTk5Y2IyNjE2MTFiOWQyYmI5Mi4uZGU0ZWYwODdk
NjU1Y2Y2NmQyNjVjYWQ3Zjg2OTM5ZDExYjAzYTBkNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wOS0y
NSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFz
eW5jR2VuZXJhdG9yIHNob3VsZCBoYXZlIGludGVybmFsIGZpZWxkcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtZ2VuZXJhdG9y
LWNvbnN0cnVjdC1mYWlsdXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAg
ICAgICAgKGFzeW5jLmdlbik6CisgICAgICAgIChUeXBlRXJyb3IpOgorICAgICAgICAqIHN0cmVz
cy9hc3luYy1nZW5lcmF0b3ItcHJvdG90eXBlLWNoYW5nZS5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChhc3luYy5nZW4pOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1n
ZW5lcmF0b3ItcHJvdG90eXBlLWNsb3N1cmUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdC5hc3luYy5nZW4pOgorICAgICAgICAodGVzdCk6CisgICAgICAgICog
c3RyZXNzL2NyZWF0ZS1hc3luYy1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAodGVzdC5hc3luYy5nZW5lcmF0b3IpOgorICAgICAgICAodGVzdCk6CisK
IDIwMTktMDktMjQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAg
ICAgICAgIFtFUzZdIENvbWUgdXAgd2l0aCBhIHRlc3QgZm9yIFByb3h5LltbR2V0T3duUHJvcGVy
dHldXSB0aGF0IHRlc3RzIHRoZSBpc0V4dGVuc2libGUgZXJyb3Igd2hlbiB0aGUgIHJlc3VsdCBv
ZiB0aGUgdHJhcCBpcyB1bmRlZmluZWQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWdlbmVyYXRvci1jb25zdHJ1Y3QtZmFpbHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWdl
bmVyYXRvci1jb25zdHJ1Y3QtZmFpbHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzUzZTZlOTk5OTNhNTli
ODZlNGQyYjgxYTliY2YxMzRjMGUzZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtZ2VuZXJhdG9yLWNvbnN0cnVjdC1mYWlsdXJlLmpzCkBAIC0wLDAgKzEsMjQgQEAK
K2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJv
clRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAg
ICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVl
OworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3Ip
ICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAk
e1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uKiBnZW4oKSB7IH0KKworc2hv
dWxkVGhyb3coKCkgPT4geworICAgIG5ldyBnZW4oKQorfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24g
aXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBnZW4oKScpYCk7CisKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBSZWZsZWN0LmNvbnN0cnVjdChnZW4sIFtdLCB7fSk7Cit9LCBg
VHlwZUVycm9yOiBSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYSBjb25zdHJ1Y3RvcmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZ2Vu
ZXJhdG9yLXByb3RvdHlwZS1jaGFuZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1nZW5lcmF0
b3ItcHJvdG90eXBlLWNoYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTg5OWU3Yzc4Yjc2YTYzYzQ0NzU1
Yzk3ZGUyMjMwMTljYjRkMGJkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtZ2VuZXJhdG9yLXByb3RvdHlwZS1jaGFuZ2UuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2FzeW5jIGZ1bmN0aW9uKiBnZW4oKQoreworfQordmFyIG9yaWdpbmFsUHJvdG90eXBlID0g
Z2VuLnByb3RvdHlwZTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZh
ciBnID0gZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5fX3Byb3RvX18sIGdlbi5wcm90b3R5cGUpOwor
fQorZ2VuLnByb3RvdHlwZSA9IHt9OwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcuX19wcm90
b19fLCBnZW4ucHJvdG90eXBlKTsKK3Nob3VsZEJlKGcuX19wcm90b19fICE9PSBvcmlnaW5hbFBy
b3RvdHlwZSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1nZW5lcmF0
b3ItcHJvdG90eXBlLWNsb3N1cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1nZW5lcmF0b3It
cHJvdG90eXBlLWNsb3N1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFiZDU3ZGU0YmI3MGU5NDViZDlhMDhi
YTk5MGQxYjA2ZWUwZjA4YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWdlbmVyYXRvci1wcm90b3R5cGUtY2xvc3VyZS5qcwpAQCAtMCwwICsxLDIyIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBhc3luYyBmdW5jdGlvbiogZ2VuKCkKKyAgICB7Cisg
ICAgfQorICAgIHZhciBvcmlnaW5hbFByb3RvdHlwZSA9IGdlbi5wcm90b3R5cGU7CisKKyAgICB2
YXIgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcuX19wcm90b19fLCBnZW4ucHJvdG90eXBlKTsK
KyAgICBnZW4ucHJvdG90eXBlID0ge307CisgICAgdmFyIGcgPSBnZW4oKTsKKyAgICBzaG91bGRC
ZShnLl9fcHJvdG9fXywgZ2VuLnByb3RvdHlwZSk7CisgICAgc2hvdWxkQmUoZy5fX3Byb3RvX18g
IT09IG9yaWdpbmFsUHJvdG90eXBlLCB0cnVlKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2NyZWF0ZS1hc3luYy1nZW5lcmF0b3IuanMgYi9KU1Rlc3RzL3N0cmVzcy9jcmVh
dGUtYXN5bmMtZ2VuZXJhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4OGIyNmE4OTkwNzM4NTNmMzgxYTAz
N2Q3NmUwMDUyM2IxMGNhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jcmVh
dGUtYXN5bmMtZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIGFzeW5jIGZ1bmN0aW9uKiBnZW5lcmF0b3IoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzOworICAgIH0KKworICAgIHZhciBnID0gZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxk
QmUoZy5fX3Byb3RvX18sIGdlbmVyYXRvci5wcm90b3R5cGUpOworICAgIHJldHVybiBnOworfQor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIGcxID0gdGVzdCgpOwor
ICAgIHZhciBnMiA9IHRlc3QoKTsKKyAgICBzaG91bGRCZShnMS5fX3Byb3RvX18gIT0gZzIuX19w
cm90b19fLCB0cnVlKTsKK30K
</data>
<flag name="review"
          id="395329"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>