<?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>161171</bug_id>
          
          <creation_ts>2016-08-24 16:11:38 -0700</creation_ts>
          <short_desc>Introduce the ThrowScope and force every throw site to instantiate a ThrowScope.</short_desc>
          <delta_ts>2016-08-30 13:57:33 -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 Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222866</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-24 16:11:38 -0700</bug_when>
    <thetext>This is the first step towards simulating potential JS exceptions throws, and verifying that they are checked for appropriately in C++ code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223144</commentid>
    <comment_count>1</comment_count>
      <attachid>286989</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-25 11:33:20 -0700</bug_when>
    <thetext>Created attachment 286989
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223167</commentid>
    <comment_count>2</comment_count>
      <attachid>286989</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-25 12:17:42 -0700</bug_when>
    <thetext>Comment on attachment 286989
work in progress

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

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:39
&gt; +
&gt; +#ifndef ENABLE_EXCEPTION_CHECK_VERIFICATION
&gt; +#define ENABLE_EXCEPTION_CHECK_VERIFICATION (!defined(NDEBUG))
&gt; +#endif

Let&apos;s call this ENABLE_THROW_SCOPE_VERIFICATION.

Let&apos;s put this setting in Platform.h with other settings.

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:76
&gt; +#define MAKE_THROW_SCOPE(name__, vm__) \

Let&apos;s call this DECLARE_THROW_SCOPE.

Instead of taking the local variable name as a parameter, let&apos;s do this:

    auto scope = DECLARE_THROW_SCOPE(vm).

That way, even though the declaration is a macro mystery, the nature of the local variable is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224387</commentid>
    <comment_count>3</comment_count>
      <attachid>287336</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:18:23 -0700</bug_when>
    <thetext>Created attachment 287336
x86_64 benchmark result run 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224388</commentid>
    <comment_count>4</comment_count>
      <attachid>287337</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:18:56 -0700</bug_when>
    <thetext>Created attachment 287337
x86_64 benchmark result run 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224389</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:22:33 -0700</bug_when>
    <thetext>There&apos;s some regressions and progressions in the microbenchmarks.  All other so-called &quot;definitely&quot;s are not consistently reproducible on different runs.

A inspection of disassembled code for regressing benchmarks did not seem to show any bad code that can account for the regressions.  It looks to me like the regressions are just be due to cache effects.

I&apos;ll upload the updated patch shortly for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224396</commentid>
    <comment_count>6</comment_count>
      <attachid>287341</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:43:38 -0700</bug_when>
    <thetext>Created attachment 287341
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224418</commentid>
    <comment_count>7</comment_count>
      <attachid>287341</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 16:21:35 -0700</bug_when>
    <thetext>Comment on attachment 287341
proposed patch.

I ran the API tests, but forgot to run the bindings test.  I need to rebase the results there.  Will upload a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224427</commentid>
    <comment_count>8</comment_count>
      <attachid>287349</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 16:36:38 -0700</bug_when>
    <thetext>Created attachment 287349
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224469</commentid>
    <comment_count>9</comment_count>
      <attachid>287349</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-29 17:46:27 -0700</bug_when>
    <thetext>Comment on attachment 287349
proposed patch.

Attachment 287349 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/1968587

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224470</commentid>
    <comment_count>10</comment_count>
      <attachid>287359</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-29 17:46:32 -0700</bug_when>
    <thetext>Created attachment 287359
Archive of layout-test-results from ews117 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews117  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224505</commentid>
    <comment_count>11</comment_count>
      <attachid>287349</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 21:42:55 -0700</bug_when>
    <thetext>Comment on attachment 287349
proposed patch.

I had some silly bugs that resulted in the failures.  Will fix first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224516</commentid>
    <comment_count>12</comment_count>
      <attachid>287375</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 00:09:54 -0700</bug_when>
    <thetext>Created attachment 287375
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224522</commentid>
    <comment_count>13</comment_count>
      <attachid>287378</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 01:26:08 -0700</bug_when>
    <thetext>Created attachment 287378
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224589</commentid>
    <comment_count>14</comment_count>
      <attachid>287378</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-30 09:40:27 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:297
&gt; +    if (topCallFrame &amp;&amp; previousScope &gt; topCallFrame)
&gt; +        willBeHandleByLLIntOrJIT = true;

Is it clear that it&apos;s better to have this here, than to have logic in vmEntry?

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:42
&gt; +class ThrowScope {
&gt; +public:
&gt; +    JS_EXPORT_PRIVATE ThrowScope(VM&amp;, ThrowScopeLocation);
&gt; +    JS_EXPORT_PRIVATE ~ThrowScope();
&gt; +

Seems like you could delete the copy constructor/operator but enable the move constructor/operator.  I think you would do for example:

ThrowScope(const ThrowScope&amp;) = delete;
ThrowScope(ThrowScope&amp;&amp;) = default;

Clearly, ThrowScope is not meant to be copied, so this protects against that.  But it is meant to be created by moving, via that macro.  I believe this should disallow the bad thing (copying) but allow the good thing (your auto scope = DECLARE_blah idiom).

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:77
&gt; +    JSC::ThrowScope(vm__, JSC::ThrowScopeLocation(__FUNCTION__, __FILE__, __LINE__))

Put extra () around vm__, like &quot;(vm__)&quot;.  This makes this macro behave more like a function, in case there are for example commas in vm__.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224596</commentid>
    <comment_count>15</comment_count>
      <attachid>287378</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 10:01:47 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:297
&gt;&gt; +        willBeHandleByLLIntOrJIT = true;
&gt; 
&gt; Is it clear that it&apos;s better to have this here, than to have logic in vmEntry?

VMEntry (in the comment above) is a misnomer on my part.  I meant to communicate first ThrowScope after a JS frame on the stack.  &quot;VMEntry&quot; is the wrong idea to communicate this.  Rereading the comment, I think just removing the &quot;VMEntry&quot; would do the trick.

The scenario we need to guard against is where a JS function calls a C++ operation helper, and the helper has a ThrowScope.  We need to clear the needExceptionCheck flag before returning to the JS frame because the JS code may invoke another C++ helper (and fail verification on entry to that new ThrowScope).  There is no VMEntryScope involved here.

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.h:42
&gt;&gt; +
&gt; 
&gt; Seems like you could delete the copy constructor/operator but enable the move constructor/operator.  I think you would do for example:
&gt; 
&gt; ThrowScope(const ThrowScope&amp;) = delete;
&gt; ThrowScope(ThrowScope&amp;&amp;) = default;
&gt; 
&gt; Clearly, ThrowScope is not meant to be copied, so this protects against that.  But it is meant to be created by moving, via that macro.  I believe this should disallow the bad thing (copying) but allow the good thing (your auto scope = DECLARE_blah idiom).

Great.  I will apply and test.

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.h:77
&gt;&gt; +    JSC::ThrowScope(vm__, JSC::ThrowScopeLocation(__FUNCTION__, __FILE__, __LINE__))
&gt; 
&gt; Put extra () around vm__, like &quot;(vm__)&quot;.  This makes this macro behave more like a function, in case there are for example commas in vm__.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224600</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 10:26:52 -0700</bug_when>
    <thetext>I&apos;m now trying to figure out why the Win EWS is having a bad time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224609</commentid>
    <comment_count>17</comment_count>
      <attachid>287378</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-30 10:40:51 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:296
&gt; +    if (topCallFrame &amp;&amp; previousScope &gt; topCallFrame)

Since we don&apos;t clear VM::m_topCallFrame most of the time, topCallFrame will almost always be non-null, and we will get away with a lot of mistakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224616</commentid>
    <comment_count>18</comment_count>
      <attachid>287378</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-30 10:48:53 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:296
&gt;&gt; +    if (topCallFrame &amp;&amp; previousScope &gt; topCallFrame)
&gt; 
&gt; Since we don&apos;t clear VM::m_topCallFrame most of the time, topCallFrame will almost always be non-null, and we will get away with a lot of mistakes.

...Actually, even though we leave stale values for VM::topCallFrame during LLInt and JIT execution, once we exit, we restore null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224621</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-30 11:06:19 -0700</bug_when>
    <thetext>I think you can fix the Windows build failure by using old-school header guards instead of #pragma once. Later, we should get DumpRenderTree.cpp not to include JavaScriptCore/runtime headers. It doesn&apos;t need to, since we have typed array API now.

Phil, any further comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224625</commentid>
    <comment_count>20</comment_count>
      <attachid>287410</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 11:12:25 -0700</bug_when>
    <thetext>Created attachment 287410
revised patch w/ Fil&apos;s feedback + old header guard applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224687</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 13:57:33 -0700</bug_when>
    <thetext>Thanks for the reviews.  Landed in r205198: &lt;http://trac.webkit.org/r205198&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286989</attachid>
            <date>2016-08-25 11:33:20 -0700</date>
            <delta_ts>2016-08-29 15:18:23 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip-161171.patch</filename>
            <type>text/plain</type>
            <size>693271</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtODE3LDYgKzgxNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9TeW1ib2xPYmplY3QuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKyAgICBydW50aW1lL1Rocm93U2NvcGUuY3BwCiAgICAg
cnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmNwcAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxz
LmNwcAogICAgIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NSwxMiArMzY1LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogICAgIHsKKyAgICAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICAgICAgQ3VzdG9tR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxDdXN0b21HZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlm
ICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7
CiAgICAgICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgUHJvcGVy
dHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNob3VsZFRocm93IikpKS50b0Jv
b2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoMTAwKSk7CiAgICAgfQogfTsKQEAgLTQ3MCw5ICs0NzMsMTIgQEAgcHJpdmF0ZToK
IAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKICAgICB7CisgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBp
ZiAoIXRoaXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmdl
dExlbmd0aCgpKSk7CiAgICAgfQogCkBAIC0xMjMwLDExICsxMjM2LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSb290KiByb290ID0ganNEeW5hbWlj
Q2FzdDxSb290Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghcm9vdCkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhv
dXQgYSBSb290LiIpKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3Jl
YXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcm9vdCkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIEVsZW1lbnQg
d2l0aG91dCBhIFJvb3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50
OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcm9vdCkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxlbWVudChFeGVjU3RhdGUq
IGV4ZWMpCkBAIC0xNDE0LDIwICsxNDIzLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25WZXIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1
bihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxG
aWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCi0gICAgR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgp
LCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBqc051bGwoKSksIFZl
Y3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFs
T2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFy
cmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgK
LSAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgICAgIHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiks
IGFycmF5KTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIFN0b3BX
YXRjaCBzdG9wV2F0Y2g7CkBAIC0xNDM2LDcgKzE0NDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmIChl
eGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0x
NDQ1LDI0ICsxNDU3LDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25S
dW4KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9y
PGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShm
aWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
Q291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAg
TmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3Jp
cHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAo
ZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25M
b2FkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgU3RyaW5nIHNvdXJj
ZUNvZGUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC0xNDcxLDMwICsxNDg5LDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Mb2EKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNl
cHRpb247CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VDb2RlKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlm
ICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4g
ZmlsZS4iKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
c3RyaW5nRnJvbVVURihzY3JpcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICgh
ZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBm
aWxlLiIpKSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKIApAQCAtMTUwNiw3ICsxNTMwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAg
ICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgc3ludGF4RXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0xNjExLDEyICsxNjM1LDE1
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3VnaCBhcmd1bWVu
dHMiKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1Njb3BlLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3Vn
aCBhcmd1bWVudHMiKSkpKTsKICAgICAKICAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFi
dWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGFu
IGFycmF5IGJ1ZmZlciIpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiKSkpKTsKICAgICAKICAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzIGR1bW15Q29udGVudHM7CiAgICAgYnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15
Q29udGVudHMpOwpAQCAtMTc4MywyNyArMTgxMCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uSXMzCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgU3RyaW5nIGZp
bGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlw
dEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7
CiAKICAgICBKU0ludGVybmFsUHJvbWlzZSogcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShleGVjLCBmaWxlTmFtZSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBl
cnJvcjsKLSAgICBKU0Z1bmN0aW9uKiBlcnJvckhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJp
bmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykgeworICAgIEpTRnVuY3Rpb24qIGVycm9ySGFuZGxl
ciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykgewogICAgICAgICBlcnJv
ciA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0pOwogCiAgICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRy
LCBlcnJvckhhbmRsZXIpOwotICAgIGV4ZWMtPnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAg
dm0uZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGVycm9yKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTgzMSw2ICsxODYxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tN
b2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJpbmcgc291
cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtMTg0Myw3ICsxODc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3lu
dGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCB0b1N0cmluZygiU3ludGF4RXJyb3I6ICIsIGVycm9yLm1lc3NhZ2UoKSwg
IjoiLCBlcnJvci5saW5lKCkpKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwg
ZXJyb3IubWVzc2FnZSgpLCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0x
ODgwLDEwICsxOTEzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
dGEKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT52bSgpLnNh
bXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
U2FtcGxpbmcgcHJvZmlsZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiKSkpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCisgICAg
aWYgKCF2bS5zYW1wbGluZ1Byb2ZpbGVyKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlNhbXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIikpKSk7CiAKLSAg
ICBTdHJpbmcganNvblN0cmluZyA9IGV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpLT5zdGFj
a1RyYWNlc0FzSlNPTigpOworICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2FtcGxpbmdQcm9m
aWxlcigpLT5zdGFja1RyYWNlc0FzSlNPTigpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9
IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNiArNDQsOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4
ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkp
OwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihl
eGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpKTsKQEAgLTYxLDcg
KzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFjawogICAgICAg
ICByZXN1bHQgPSBqc0Nhc3Q8VCo+KHRvSlMoZnVuY3Rpb25SZWYpKS0+ZnVuY3Rpb25DYWxsYmFj
aygpKGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1
bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywg
ZXhjZXB0aW9uKSk7CiAKICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAg
ICAgaWYgKCFyZXN1bHQpCkBAIC03Myw2ICs3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgQVBJQ2FsbGJhY2sKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVl
KCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVm
IGNvbnN0cnVjdG9yUmVmID0gdG9SZWYoY29uc3RydWN0b3IpOwpAQCAtOTIsMTIgKzk2LDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2sKICAgICAgICAgICAgIHJl
c3VsdCA9IGNhbGxiYWNrKGN0eCwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3Vt
ZW50cy5kYXRhKCksICZleGNlcHRpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhl
eGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgfQogICAgICAgICAvLyBy
ZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAgICAgIGlmICghcmVzdWx0KQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTKHJlc3VsdCkpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTMzLDYgKzEzMyw5IEBAIFN0cmluZyBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmEKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIEpTQ29udGV4
dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYo
dGhpc09iamVjdCk7CkBAIC0xNTksNyArMTYyLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldE93blBybwogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldFByb3BlcnR5
KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAg
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRFbnVtLCBqc1VuZGVmaW5lZCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MjAwLDYgKzIwMyw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8K
IHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBjb25zdCBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTQ2FsbGJhY2tPYmplY3Qq
PihvYmplY3QpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09i
amVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CkBAIC0yMTAsNyArMjE2LDcgQEAg
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogICAgICAgICAgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBj
b252ZXJ0VG9UeXBlKGN0eCwgdGhpc1JlZiwganNIaW50LCAmZXhjZXB0aW9uKTsKICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKHJlc3VsdCkKQEAgLTIyNCw2ICsyMzAsOSBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0g
dG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3Qp
OwpAQCAtMjQyLDcgKzI1MSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4LCB0aGlz
UmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2Vw
dGlvbikpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4
ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8
fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICB9CkBAIC0yNTksNyArMjY4LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OnB1dChKU0NlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldFByb3Bl
cnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYs
ICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjczLDcgKzI4Miw3IEBAIGJvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUp
OyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODUsNiArMjk0LDkgQEAgYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0Nv
bnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRv
UmVmKHRoaXNPYmplY3QpOwpAQCAtMzAzLDcgKzMxNSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0
eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRp
b24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRp
b24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzIwLDcg
KzMzMiw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50
cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAg
ICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMo
ZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CkBAIC0zNDIsNiArMzU0LDkgQEAgYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZQogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Nh
bGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMp
OwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTM1OSw3
ICszNzQsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvCiAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJv
cGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtNDA4LDYgKzQy
Myw5IEBAIENvbnN0cnVjdFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjoKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTT2JqZWN0KiBj
b25zdHJ1Y3RvciA9IGV4ZWMtPmNhbGxlZSgpOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0g
dG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25z
dHJ1Y3Rvcik7CkBAIC00MjYsNyArNDQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3Ry
dWN0b3IoZXhlY1JlZiwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5k
YXRhKCksICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQzOCw2ICs0
NTYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhh
c0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0
KTsKQEAgLTQ1Miw3ICs0NzMsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3Vz
dG9tSGFzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5zdGFuY2UoZXhlY1JlZiwgdGhp
c1JlZiwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTY29w
ZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAgLTQ3NSw2ICs0OTYsOSBAQCBD
YWxsVHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldENhCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0
b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNh
bGxlZSgpKTsKICAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2Jq
ZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBA
IC00OTMsNyArNTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FsbEFzRnVuY3Rpb24oZXhl
Y1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5k
YXRhKCksICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTU3MCw2ICs1
OTQsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5oZXJpdHMoCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgogSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0
YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIAog
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CkBAIC01ODQs
NyArNjExLDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHkodG9SZWYoZXhlYyks
IHRoaXNSZWYsIGVudHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUpCkBAIC02MDEsNiArNjI4LDkgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmdldFN0YQogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2Jq
ZWN0KHRoaXNWYWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlk
ZSBwcm9wZXJ0eS4KQEAgLTYxMyw3ICs2NDMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0
aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhl
YykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBz
dGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoSlNP
YmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxB
c0Z1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG8gPSBKU0NhbGxiYWNrRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBu
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCBvLCBlbnRyeS0+YXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG8pOwpAQCAtNjIzLDEyICs2NTIsMTUgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9u
IHByb3BlcnR5IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN0YXRpYyBmdW5j
dGlvbiBwcm9wZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNGdW5jdGlvbiBjYWxsYmFjay4i
KSkpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRo
aXNWYWx1ZSk7CiAgICAgCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmop
OwpAQCAtNjQ2LDcgKzY3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50PjoKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eSh0b1JlZihleGVj
KSwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlKQpAQCAtNjU1LDcgKzY4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5IGNhbGxiYWNrIHJldHVy
bmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0LiIpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5IGNhbGxiYWNr
IHJldHVybmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0LiIpKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVHlwZWRBcnJheS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCwx
MSBAQCBpbmxpbmUgVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShKCiAKIHN0YXRpYyBK
U09iamVjdCogY3JlYXRlVHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlwZWRBcnJheVR5
cGUgdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICBzd2l0Y2ggKHR5cGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIxMyw3ICsxMjEz
LDcgQEAKIAkJNTNGNDBFOEQxRDU5MDFGMjAwOTlBMUI2IC8qIFdBU01QYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThDMUQ1OTAxRjIw
MDk5QTFCNiAvKiBXQVNNUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRThGMUQ1OTAyODIwMDk5QTFC
NiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5l
cmF0b3IuY3BwICovOyB9OwogCQk1M0Y0MEU5MTFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTAx
RDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLzsgfTsKLSAgICAgICAgICAgICAgICA1M0Y0
MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFC
NiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovOyB9OworCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUEx
QjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVy
YXRvci5oICovOyB9OwogCQk1M0Y0MEU5NTFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBh
cnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNG
NDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNG
NDBFOTcxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTYxRDVBN0JFQzAwOTlB
MUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwICovOyB9OwogCQk1M0Y2QkY2RDFDM0YwNjBBMDBG
NDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFF
NUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIxMDYsOCArMjEwNiwxMSBAQAog
CQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwICovOyB9OwogCQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyog
TExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJ
CUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAg
LyogTExJbnRDTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUZFMkU2QTdCMUQ2RUE2MkMwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkU2QTdBMUQ2RUE1
RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLzsgfTsKIAkJRkUzMThGREYxQ0FDOTgyNzAw
REZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREQxQ0FDOEM1MzAwREZD
QzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwICovOyB9OwogCQlGRTMx
OEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUx
Q0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsg
fTsKKwkJRkUzNDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzQyMjExMUQ2QjgxOEMwMDMy
QkU4OCAvKiBUaHJvd1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRkUzNDIyMTQxRDZCOTlDRjAwMzJCRTg4IC8qIFRocm93U2NvcGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0
MjIxMzFENkI5OUJBMDAzMkJFODggLyogVGhyb3dTY29wZUlubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNTFBRERCN0FEMDA1
NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAg
Ki87IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFBRERCN0FE
MDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU3MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZN
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAq
LzsgfTsKQEAgLTIxMzQsNiArMjEzNyw3IEBACiAJCUZFNTA2ODY3MUFFMjVFMjgwMDA5REFCNyAv
KiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNl
RHVtcC5jcHAgKi87IH07CiAJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1
OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87IH07CiAJCUZFNTkz
MkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQgLyogVGhyb3dTY29wZVN0YWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTYwMjlEODFENkUx
RTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZVN0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1h
Y3JvQXNzZW1ibGVyUHJpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJp
bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFNjhDNjM4MUI5MERFMEIwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzUxQjkw
REREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi87IH07CiAJCUZFN0JB
NjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8q
IEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBAIC0yMTU1LDggKzIxNTksNiBAQAogCQlGRUQ5NEYy
RTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNo
ZG9nLmNwcCAqLzsgfTsKIAkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQzE3
MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3Bw
ICovOyB9OwotCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QjI1Q0IyQzMw
OTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovOyB9OwotCQkxM0ZFQ0UwNkQzQjQ0
NUZDQjZDOTM0NjEgLyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg3OTUxMDYxNEM1NDBGRkI1NjFDMTI0IC8qIEpTTW9k
dWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3Ry
aW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KIApAQCAtMzQxOCw3ICszNDIwLDcgQEAKIAkJNTNGNDBFOEMxRDU5MDFG
MjAwOTlBMUI2IC8qIFdBU01QYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0FTTVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y0MEU4RTFE
NTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTUIzSVJHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNT3BzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0gICAgICAgICAgICAgICAgNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8q
IFdBU01CM0lSR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdB
U01CM0lSR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRjQwRTky
MUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXQVNNQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTW9kdWxlUGFyc2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBX
QVNNTW9kdWxlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdBU01Nb2R1bGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2
QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyMCw4ICs0
NDIyLDExIEBACiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50
Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9v
cC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJ
bnRDTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJFNkE3QTFENkVBNUZF
MDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaHJvd1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUz
MThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzE4
RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNDIyMTExRDZCODE4
QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGhyb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0MjIxMzFE
NkI5OUJBMDAzMkJFODggLyogVGhyb3dTY29wZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyb3dTY29wZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxh
clZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9sbGFyVk0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpT
RG9sbGFyVk1Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NDQ4LDYgKzQ0NTMsNyBAQAogCQlGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJy
ZWRTb3VyY2VEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
ZmVycmVkU291cmNlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTkz
MkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVk1FbnRyeVNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUVudHJ5U2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2MDI5RDgxRDZFMUUzMzAwMzAyMDREIC8qIFRocm93U2Nv
cGVTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJvd1Njb3BlU3Rh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzUxQjkwREREOTAwNDJC
Q0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQ
cmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVy
UHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VD
MDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NDc1LDggKzQ0ODEsNiBAQAogCQlGRURBNTBENTFCOTdGNEQ5MDA5QTNCNEYgLyogUGluZ1Bv
bmdTdGFja092ZXJmbG93VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQ
aW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdTdGFj
a092ZXJmbG93VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MDFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9
IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTTW9kdWxlTG9hZGVyLmg7IHBhdGggPSBKU01v
ZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxODc5NTEwNjE0QzU0
MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUZENkZDNTFENUU3OTcwMDA4RjJG
MEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC01NjAyLDcgKzU2MDYsNyBAQAogCQkJCTUz
RjQwRTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8sCiAJCQkJN0JDNTQ3RDIxQjY5
NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkwMjgyMDA5
OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3Iu
aCAqLywKKwkJCQk1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3Iu
aCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV0FTTUZ1bmN0aW9uUGFyc2Vy
LmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIu
Y3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2Vy
LmggKi8sCkBAIC02MTcwLDYgKzYxNzQsMTAgQEAKIAkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3
MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICovLAogCQkJCTBGQTJDMTc5MTdEN0NGODQwMDlE
MDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovLAogCQkJCTBGQTJDMTdBMTdEN0NGODQwMDlE
MDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLywKKwkJCQlGRTJFNkE3QTFENkVBNUZFMDA2MEY4
OTYgLyogVGhyb3dTY29wZS5jcHAgKi8sCisJCQkJRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8q
IFRocm93U2NvcGUuaCAqLywKKwkJCQlGRTM0MjIxMzFENkI5OUJBMDAzMkJFODggLyogVGhyb3dT
Y29wZUlubGluZXMuaCAqLywKKwkJCQlGRTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dT
Y29wZVN0YWNrLmggKi8sCiAJCQkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZl
RnJvbVZhbHVlLmggKi8sCiAJCQkJMEYyQjY2RDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJy
YXlBZGFwdG9ycy5oICovLAogCQkJCTBGMkI2NkQ5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFy
cmF5Q29udHJvbGxlci5jcHAgKi8sCkBAIC03MzY2LDYgKzczNzQsNyBAQAogCQkJCUJDRDIwMzRB
MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5NkI3MzFBMUJEQTA4RDEwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFMzQyMjE0MUQ2Qjk5Q0YwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkRE
IC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAw
NkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDMkFC
MTFDNjU0NEYyMDBBMThENzggLyogSGVhcFNuYXBzaG90LmggaW4gSGVhZGVycyAqLywKQEAgLTc2
NzIsNiArNzY4MSw3IEBACiAJCQkJQkMxOEM0MDUwRTE2RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEg
LyogRnVuY3Rpb25SYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEw
MzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUz
NDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQkUyQ0FFMTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNzY2RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29t
aW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzEzLDYgKzc3MjMsNyBAQAogCQkJ
CTBGRTA1MDFBMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hp
ZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0
NiAvKiBJbnRsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2MDI5RDkxRDZF
MUU0RjAwMzAyMDREIC8qIFRocm93U2NvcGVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
NzBBNDgxRDU0M0E5MDAwNkU3MjMyIC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAxQjFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY09mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTAxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDAzLDcgKzgwMTQsNyBAQAogCQkJCTBG
QjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlEQTAwQjAxQkQ1OTk0RTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIuaCBp
biBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1M0Y0MEU5MzFE
NUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRENGM0Q1NkIxQ0QyOTQ3MjAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVj
dHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJD
QSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTIxOCw2ICs5MjI5LDcg
QEAKIAkJCQkwRkNFRkFBQjE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRo
Q2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyog
QjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMkU2QTdCMUQ2RUE2MkMw
MDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgx
NjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDMxOURBMDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXph
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8q
IEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
OCArMTM4LDEwIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqIGUKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmIChzaXplIDwgMCkgewotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdh
dGl2ZSIpKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRp
dmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzaXplKSk7CkBAIC02
ODksMTIgKzY5MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJl
CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJn
dW1lbnQpOwogICAgIAogICAgIGlmICghYmFzZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIEpTU3RyaW5nKiBp
bnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghaW5wdXQpCkBA
IC03MzMsMTIgKzczNiwxMyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QXJndW1lbnQpOwogCiAgICAgaWYgKCFiYXNlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTg5Nyw5ICs5MDEsMTAgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdp
dAogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgKnZt
KTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpCi0gICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdo
IHBvc2l0aXZlIGludGVnZXIuIikpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIikpKSk7CiAKICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5OjpjcmVhdGUo
KnZtLCBhcnJheVN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4ocmVzdWx0KTsKQEAgLTEzNTEsOSArMTM1NiwxMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTWFrZVJvcGUyCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlZnQt
Pmxlbmd0aCgpLCByaWdodC0+bGVuZ3RoKCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4
ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEzNjQsOSArMTM3MCwx
MCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFrZVJvcGUzCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAo
c3VtT3ZlcmZsb3dzPGludDMyX3Q+KGEtPmxlbmd0aCgpLCBiLT5sZW5ndGgoKSwgYy0+bGVuZ3Ro
KCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTEzNzcsNiArMTM4NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25TdHJDYXQyKEUKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIEpTU3RyaW5nKiBzdHIxID0gSlNWYWx1ZTo6ZGVj
b2RlKGEpLnRvU3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOyAvLyBJ
bXBvc3NpYmxlLCBzaW5jZSB3ZSBtdXN0IGhhdmUgYmVlbiBnaXZlbiBwcmltaXRpdmVzLgpAQCAt
MTM4NCw3ICsxMzkyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0ckNhdDIo
RQogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxp
bnQzMl90PihzdHIxLT5sZW5ndGgoKSwgc3RyMi0+bGVuZ3RoKCkpKSB7Ci0gICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEz
OTUsNiArMTQwMyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
IAogICAgIEpTU3RyaW5nKiBzdHIxID0gSlNWYWx1ZTo6ZGVjb2RlKGEpLnRvU3RyaW5nKGV4ZWMp
OwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOyAvLyBJbXBvc3NpYmxlLCBzaW5jZSB3ZSBt
dXN0IGhhdmUgYmVlbiBnaXZlbiBwcmltaXRpdmVzLgpAQCAtMTQwNCw3ICsxNDEzLDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0ckNhdDMoRQogICAgIEFTU0VSVCghdm0uZXhj
ZXB0aW9uKCkpOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihzdHIxLT5sZW5ndGgo
KSwgc3RyMi0+bGVuZ3RoKCksIHN0cjMtPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNTA4LDcg
KzE1MTcsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092CiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiB9CiAKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25TaXplT2ZWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFy
Z3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKQEAgLTE2OTUsMTMgKzE3MDUsMTQg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogCiAgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBbJl0g
KGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZv
Qml0cyk7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93
SWZOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAg
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICAgICAgfQogCkBAIC0xNzA5LDcgKzE3MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyBXaGVuIHdlIGNhbid0IHN0YXRpY2FsbHkg
cHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJmb3JtIHRoZSBjaGVjayBvbiB0
aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGV4ZWMsIGlkZW50KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0ganNURFpWYWx1ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
RFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMTcyMyw2ICsxNzM0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFt
aWNWYQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIGltcGwpOwogICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0cyk7
CkBAIC0xNzM0LDEzICsxNzQ2LDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRE
eW5hbWljVmEKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBpZGVudCwgc2xvdCk7CiAgICAg
ICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBqc1REWlZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVERaRXJyb3Io
ZXhlYykpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAm
JiAhaGFzUHJvcGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgIHRo
cm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJv
cihleGVjLCBpZGVudCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDkgKzk1
LDEyIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlKEUKIAogSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHNjcmlwdFZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1ZS5pc1N0cmluZygpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhv
c3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0
cmluZy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBw
cm9ncmFtID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTEwNyw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpCiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9u
ID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBK
U0M6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMsIG1ha2VTb3VyY2UocHJvZ3JhbSks
IHNjb3BlRXh0ZW5zaW9uLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NywxMjAg
Kzc3LDE1NiBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVB
dHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhv
c3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVh
dGUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JbnRlcm5hbENvbnN0cnVjdG9yTmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmpl
Y3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
V2Vha01hcFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBTaXpl
KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPndlYWtNYXBFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vh
a1NldFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtTZXRTaXplKGV4
ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVj
dGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPndlYWtTZXRFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0
b3JFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pdGVyYXRvckVudHJp
ZXMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
ZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0lu
amVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNj
cmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5zdWJ0eXBlKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5mdW5jdGlvbkRldGFpbHMoZXhlYykpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVj
dGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPmdldEludGVybmFsUHJvcGVydGllcyhleGVjKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDkg
Kzc1LDEyIEBAIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2YVNjcmlwdENhbGwKIAogSlNW
YWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV4
ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3Qg
YmUgYSBzdHJpbmcuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJKU0phdmFTY3JpcHRDYWxsRnJhbWUuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CiAKICAg
ICBTdHJpbmcgc2NyaXB0ID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTg3LDcgKzkwLDcgQEAgSlNWYWx1
ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlVwogICAgIEpTT2JqZWN0KiBzY29wZUV4
dGVuc2lvbiA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaW1wbCgpLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKHNjcmlwdCwgc2NvcGVFeHRl
bnNpb24sIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICB0aHJvd1Njb3BlLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NiwxMTAgKzc2LDE0MyBAQCB2b2lkIEpT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6ZmluCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdp
dGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0
aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2Ny
aXB0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zY29wZURlc2NyaXB0
aW9ucyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENh
bGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPmNhbGxlcihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNK
YXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FzdGVkVGhpcy0+c291cmNlSUQoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+bGluZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVtbihleGVjKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRl
RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9u
TmFtZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3Jp
cHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5zY29wZUNoYWluKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0
ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoZXhlYykpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVR5
cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWls
RGVsZXRlZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc1RhaWxEZWxldGVk
KGV4ZWMpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNo
ZWRDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhY2hlZENhbGwuaAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX3ZtKGNhbGxGcmFtZS0+dm0oKSkK
ICAgICAgICAgICAgICwgbV9lbnRyeVNjb3BlKG1fdm0sIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9i
YWxPYmplY3QobV92bSkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgbV92bSk7CisKICAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewogICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6
ZShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJl
dGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxG
cmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVu
Y3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAg
ICAgICAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGNhbGxGcmFt
ZSk7CiAgICAgICAgICAgICBtX3ZhbGlkID0gIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCk7CiAg
ICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAy
MDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LTIwMTAsIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9v
LmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODgsNiArODgsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCkBAIC05NSwxMCArOTgsMTAgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmICghcHJvZ3JhbS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
cHJvZ3JhbTsKIAotICAgIFRvcENhbGxGcmFtZVNldHRlciB0b3BDYWxsRnJhbWUoY2FsbEZyYW1l
LT52bSgpLCBjYWxsRnJhbWUpOworICAgIFRvcENhbGxGcmFtZVNldHRlciB0b3BDYWxsRnJhbWUo
dm0sIGNhbGxGcmFtZSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFs
RW5hYmxlZCgpKSB7Ci0gICAgICAgIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2Fi
bGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVl
KGNhbGxGcmFtZSk7CkBAIC0xNDIsNyArMTQ1LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgbGl0ZXJh
bCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMuCi0g
ICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgQVNT
RVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIApAQCAtMTUxLDE3ICsxNTQsMjAgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIH0KIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbGVyRnJhbWUt
PnRoaXNWYWx1ZSgpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNhbGxGcmFtZS0+
dm0oKS5pbnRlcnByZXRlcjsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSB2bS5pbnRl
cnByZXRlcjsKICAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1l
LCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4pOwogfQogCiB1bnNpZ25lZCBzaXplT2ZWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKCFhcmd1
bWVudHMuaXNDZWxsKCkpKSB7CiAgICAgICAgIGlmIChhcmd1bWVudHMuaXNVbmRlZmluZWRPck51
bGwoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKLSAgICAgICAgY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBw
bHlQYXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsIGFyZ3VtZW50cykpOworICAgICAgICB0aHJvd1Nj
b3BlLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgCkBAIC0xNzYsNyArMTgyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhD
YWxsRnJhbWUqIGNhbGxGcgogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAg
ICAgY2FzZSBTeW1ib2xUeXBlOgotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNh
bGxGcmFtZSwgIGFyZ3VtZW50cykpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxs
RnJhbWUsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAgIGRl
ZmF1bHQ6CkBAIC0xOTgsMjEgKzIwNCwyNSBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKENhbGxG
cmFtZSogY2FsbEZyCiAKIHVuc2lnbmVkIHNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpCiB7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xv
dHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0
eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhy
b3dTY29wZSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKIHVuc2lnbmVk
IHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1
ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCkKIHsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVPZlZhcmFyZ3MoY2FsbEZyYW1lLCBhcmd1bWVudHMs
IGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAKICAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0g
Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xvdHMsIGxlbmd0
aCArIDEpOwogICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBtYXhBcmd1bWVudHMgfHwgIXZtLmVu
c3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVycygpKSkpIHsKLSAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIApAQCAtNzQyLDYgKzc1Miw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWMKIHsKICAgICBKU1Njb3BlKiBzY29wZSA9IHRoaXNPYmotPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxTY29wZSgpOwogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIEFTU0VSVCghdm0uZXhj
ZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwpAQCAtNzUwLDcg
Kzc2MSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vy
c2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsRnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dT
dGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lKSk7CiAKICAgICAvLyBGaXJz
dCBjaGVjayBpZiB0aGUgInByb2dyYW0iIGlzIGFjdHVhbGx5IGp1c3QgYSBKU09OIG9iamVjdC4g
SWYgc28sCiAgICAgLy8gd2UnbGwgaGFuZGxlIHRoZSBKU09OIG9iamVjdCBoZXJlLiBFbHNlLCB3
ZSdsbCBoYW5kbGUgcmVhbCBKUyBjb2RlCkBAIC03OTQsNyArODA1LDcgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZW50cnkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
RnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihjYWxsRnJhbWUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBK
U09OUFBhdGhbaV0ubV9wYXRoRW50cnlOYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBmYWlsZWRKU09OUDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgSlNP
TlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSk7CkBAIC04MjQsNyArODM1LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICAgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnJhbWUtPnZt
KCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihjYWxs
RnJhbWUsIGZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1Njb3Bl
LnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoY2FsbEZy
YW1lLCBmdW5jdGlvbikpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGpz
b25Bcmc7CiAgICAgICAgICAgICAgICAganNvbkFyZy5hcHBlbmQoSlNPTlBWYWx1ZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU09OUFBhdGguc2l6ZSgpID09IDEgPyBq
c1VuZGVmaW5lZCgpOiBiYXNlT2JqZWN0OwpAQCAtODYxLDE4ICs4NzIsMTggQEAgZmFpbGVkSlNP
TlA6CiAKICAgICAvLyBDb21waWxlIHNvdXJjZSB0byBieXRlY29kZSBpZiBuZWNlc3Nhcnk6CiAg
ICAgaWYgKEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0
aWVzKHZtLCBjYWxsRnJhbWUsIHNjb3BlKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
Y2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJyb3IpKTsKKyAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIGVycm9yKSk7CiAKICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewog
ICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7CiAgICAgICAgIGlmIChKU09iamVjdCog
ZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihj
YWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jaykpCi0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKSk7CiAgICAgICAg
IGNvZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAg
ICAgfQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxs
RnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKHRocm93U2NvcGUsIGNhbGxGcmFtZSk7CiAKICAgICBpZiAoc2NvcGUtPnN0cnVjdHVy
ZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQogICAgICAgICBzY29wZS0+ZmxhdHRlbkRp
Y3Rpb25hcnlPYmplY3Qodm0pOwpAQCAtODkxLDYgKzkwMiw4IEBAIGZhaWxlZEpTT05QOgogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2Jq
ZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0
YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBBU1NFUlQo
IXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCkBA
IC05MTMsMTMgKzkyNiwxMyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxs
RnJhCiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Nj
b3BlLCBjYWxsRnJhbWUpKTsKIAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAvLyBDb21w
aWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPihjYWxsRnJhbWUsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29wZSwg
Q29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBp
bGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZt
KCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKKyAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCBjb21waWxlRXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAg
ICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC05
MjcsNyArOTQwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQog
ICAgICAgICBuZXdDb2RlQmxvY2sgPSAwOwogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRy
aWdnZXJUZXJtaW5hdGlvbihjYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHRocm93U2NvcGUsIGNhbGxGcmFtZSk7CiAKICAg
ICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKICAgICBwcm90b0NhbGxGcmFtZS5pbml0
KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEo
KSk7CkBAIC05NTAsMTIgKzk2MywxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2Fs
bChDYWxsRnJhCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdM
aXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBBU1NF
UlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0
b3JCdXN5KCkpOwogICAgIC8vIFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhhdmUg
dG8gcmV0dXJuIHNvbWV0aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQogICAgIC8vIGFscmVhZHkgaW4g
YW4gaW52YWxpZCBzdGF0ZS4KICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCi0gICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkp
OworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0
aHJvd1Njb3BlLCBjYWxsRnJhbWUpKTsKIAogICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9IChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IG51
bGxwdHI7CkBAIC05NzQsMTMgKzk4OSwxMyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDb25zdHJ1Y3QoCiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFt
ZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cih0aHJvd1Njb3BlLCBjYWxsRnJhbWUpKTsKIAogICAgIGlmIChpc0pTQ29uc3RydWN0KSB7CiAg
ICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBj
b21waWxlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKIAogICAgICAgICBB
U1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3
YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC05ODgsNyArMTAwMyw3IEBAIEpTT2JqZWN0KiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3Q29kZUJsb2NrID0gMDsKIAog
ICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZy
YW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih0
aHJvd1Njb3BlLCBjYWxsRnJhbWUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJh
bWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9yLCBu
ZXdUYXJnZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTAxNSw2ICsxMDMwLDcgQEAg
SlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogQ2FsbEZyYW1lQ2xvc3Vy
ZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSog
cHJvdG9DYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlKiBhcmdzKQogewogICAgIFZNJiB2
bSA9ICpzY29wZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICAKICAgICBpZiAodm0uaXNDb2xsZWN0
b3JCdXN5KCkpCkBAIC0xMDI0LDcgKzEwNDAsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJl
dGVyOjpwcmVwYXJlRm9yCiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVGb3JDYWxsLCBu
ZXdDb2RlQmxvY2spOwogICAgIGlmIChlcnJvcikgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcik7CisgICAgICAgIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVD
bG9zdXJlKCk7CiAgICAgfQogICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKQEAgLTEwNDAsNyArMTA1Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJw
cmV0ZXI6OnByZXBhcmVGb3IKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1l
Q2xvc3VyZSYgY2xvc3VyZSkgCiB7CiAgICAgVk0mIHZtID0gKmNsb3N1cmUudm07Ci0gICAgCisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBBU1NFUlQoIXZtLmlz
Q29sbGVjdG9yQnVzeSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNI
b2xkaW5nQVBJTG9jaygpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCkBAIC0xMDQ5
LDcgKzEwNjYsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAg
ICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CiAKICAgICBpZiAoVU5M
SUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3Vy
ZS5vbGRDYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKHRocm93U2NvcGUsIGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKIAogICAgIC8vIEV4
ZWN1dGUgdGhlIGNvZGU6CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sIGNsb3N1cmUu
cHJvdG9DYWxsRnJhbWUpOwpAQCAtMTA2MCw3ICsxMDc3LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFs
RXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBKU1Njb3BlKiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7Ci0gICAgCisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBBU1NFUlQoc2NvcGUt
PnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CkBAIC0xMDcwLDcgKzEwODgsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICBWTUVudHJ5
U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5M
SUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOyAgICAgICAgCisgICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2Nv
cGUsIGNhbGxGcmFtZSkpOwogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzID0gZXZhbC0+bnVt
VmFyaWFibGVzKCk7CiAgICAgaW50IG51bUZ1bmN0aW9ucyA9IGV2YWwtPm51bWJlck9mRnVuY3Rp
b25EZWNscygpOwpAQCAtMTEwMSw3ICsxMTE5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShFdmFsRXhlY3V0YQogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7CiAgICAg
ICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEV2
YWxFeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVt
cENvZGVCbG9jayk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3Ip
KTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJs
b2NrKTsKICAgICB9CiAKQEAgLTExMTIsNyArMTEzMCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT52YXJpYWJsZShpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFt
ZSwgaWRlbnQsIHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGlj
YXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSksICIn
IikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCBjYWxsRnJhbWUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNh
dGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIici
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTExMjAsNyArMTEzOCw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAg
ICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBp
ZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxl
IGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgY2FsbEZyYW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2Jh
bCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwg
IiciKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTE0OSw3ICsxMTY3
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIH0KIAog
ICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZy
YW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih0
aHJvd1Njb3BlLCBjYWxsRnJhbWUpOwogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCkBAIC0xMTY1LDYgKzEx
ODMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCiB7CiAg
ICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOwogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwog
ICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwpAQCAtMTE3NSwxOSArMTE5NCwxOSBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAKICAgICBWTUVudHJ5U2NvcGUg
ZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gY2hl
Y2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBjYWxsRnJhbWUp
KTsKIAogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAg
ICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJs
b2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOwogICAg
ICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2Rl
QmxvY2spOwogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWlu
YXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbih0aHJvd1Njb3BlLCBjYWxsRnJhbWUpOwogCiAgICAgaWYgKHNjb3Bl
LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKICAgICAgICAgc2NvcGUt
PmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
NiArOTAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092CiB7CiAg
ICAgLy8gV2UgcGFzcyBpbiBvdXIgb3duIGNvZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFt
ZSBoYXNuJ3QgYmVlbiBwb3B1bGF0ZWQuCiAgICAgVk0qIHZtID0gY29kZUJsb2NrLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgKnZtKTsKIAogICAgIFZNRW50cnlGcmFt
ZSogdm1FbnRyeUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKQEAgLTk5LDQzICsx
MDAsNDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogICAgIH0K
IAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRy
eUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVy
RnJhbWUpOworICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGNhbGxlckZy
YW1lKTsKIH0KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd0RpdmlkZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CisK
ICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFt
ZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZt
RW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJv
cihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRpdmlzaW9u
IG92ZXJmbG93LiIpKSk7CisgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsZXJGcmFt
ZSwgY3JlYXRlRXJyb3IoY2FsbGVyRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiRGl2aXNpb24gYnkgemVy
byBvciBkaXZpc2lvbiBvdmVyZmxvdy4iKSkpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVGhyb3dPdXRPZkJvdW5kc0FjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
ICp2bSk7CisKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5
RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZt
RW50cnlGcmFtZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFj
ZXIodm0sIHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29w
ZSBlcnJvclNjb3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBj
cmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vz
cy4iKSkpOworICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0
ZUVycm9yKGNhbGxlckZyYW1lLCBBU0NJSUxpdGVyYWwoIk91dC1vZi1ib3VuZHMgYWNjZXNzLiIp
KSk7CiB9CiAjZW5kaWYKIAogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0
eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CiAKICAgICBpbnQzMl90IG1pc3Np
bmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAqdm0sIENv
ZGVGb3JDYWxsKTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVu
dHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENh
bGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwog
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50
cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsZXJGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUs
IGNhbGxlckZyYW1lKTsKICAgICB9CiAKICAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwpAQCAt
MTQ0LDEzICsxNTAsMTQgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0
eQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgKnZtKTsKIAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICp2bSwgQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApIHsKICAgICAgICAgVk1FbnRyeUZy
YW1lKiB2bUVudHJ5RnJhbWUgPSB2bS0+dG9wVk1FbnRyeUZyYW1lOwogICAgICAgICBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKICAgICAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyV2l0aFJlc3RvcmUgdHJhY2VyKHZtLCB2bUVudHJ5RnJh
bWUsIGNhbGxlckZyYW1lKTsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVy
RnJhbWUpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBjYWxs
ZXJGcmFtZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTI1NSw5
ICsyNjIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAg
IAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwotICAgIAorICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
KnZtKTsKKwogICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewotICAgICAgICB2bS0+dGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkp
OworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJ
blBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0yODQsMTEgKzI5MiwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7Ci0gICAgCisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCAqdm0pOworCiAgICAg
c3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBpZiAoIWJhc2UtPmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJblBh
cmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBA
IC03ODQsNiArNzkzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCAqdm0pOwogCiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogCkBAIC04MDksNyAr
ODE5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAg
ICB9CiAgICAgCiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7Ci0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9u
RXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
LAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBA
IC04MzYsNyArODQ2LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogICAgIH0KICAgICAKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAg
ICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC04
NDYsNiArODU2LDggQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCAq
dm0pOworCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5z
cGVjaWFsaXphdGlvbktpbmQoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICAKQEAgLTg1NSw3ICs4NjcsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklU
X09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2FjaGUgdGhl
c2Uga2luZHMgb2YgY2FsbHMuIFRoZXkgY2FuIGJlIGNvbW1vbiBhbmQgY3VycmVudGx5IHRoZXkg
YXJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDQ1OAotICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENh
bGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUuZm9yd2FyZChoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVB
c1ZhbHVlLCBjYWxsTGlua0luZm8pKTsKICAgICB9CiAKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUg
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKQEAgLTg4MiwxOSAr
ODk0LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBpZiAoIWlzQ2FsbChr
aW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVl
KSk7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgdGhyb3dT
Y29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVj
LCBjYWxsZWUpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoZW5jb2Rl
UmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUt
PmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPihleGVj
Q2FsbGVlLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CiAgICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBl
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dTY29wZS5mb3J3YXJkKGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+Z2V0
Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEtlZXBUaGVGcmFtZSkpOworICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEtlZXBUaGVGcmFtZSkpKTsKICAgICAgICAgfQogICAgICAgICBjb2RlQmxvY2sgPSAqY29k
ZUJsb2NrU2xvdDsKICAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CkBAIC05MDksNyArOTIx
LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIGVsc2UK
ICAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNh
bGxlZSwgY29kZVB0cik7CiAgICAgCi0gICAgcmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+
Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJh
bWUpKTsKKyAgICByZXR1cm4gdGhyb3dTY29wZS5mb3J3YXJkKGVuY29kZVJlc3VsdChjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5m
by0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhl
RnJhbWUpKSk7CiB9CiAKIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhG
dW5jdGlvbigKQEAgLTkxNyw2ICs5MjksOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZp
cnR1YWxGb3JXaXRoCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsICp2bSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBj
YWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCkBAIC05MzcsNyArOTUxLDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKTsKIAogICAgICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOworICAg
ICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNv
bnN0cnVjdG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpLAogICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhl
RnJhbWUpKTsKQEAgLTk0Niw3ICs5NjAsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZp
cnR1YWxGb3JXaXRoCiAgICAgICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhl
Y0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CiAgICAgICAgICAgICBKU09iamVjdCogZXJy
b3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPihleGVjQ2FsbGVlLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90
KTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUu
dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0
aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCks
CiAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFt
ZSkpOwpAQCAtOTU0LDcgKzk2OCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVh
bEZvcldpdGgKICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
ICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZnVu
Y3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENU
SVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC0xMTI5LDkgKzExNDMsMTEgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIFJlZ0V4cCogcmVnZXhwID0gc3RhdGljX2Nhc3Q8UmVn
RXhwKj4ocmVnZXhwUHRyKTsKICAgICBpZiAoIXJlZ2V4cC0+aXNWYWxpZCgpKSB7Ci0gICAgICAg
IHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ2V4cC0+
ZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBAIC0x
MTQ2LDkgKzExNjIsMTAgQEAgVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxl
VwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OwogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihleGVjKSkp
Ci0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oJnZtKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKIAogICAgIHJldHVy
biBudWxscHRyOwogfQpAQCAtMTE1NywxMyArMTE3NCwxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dTdGF0aWNFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGVycm9yTWVzc2FnZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3JN
ZXNzYWdlVmFsdWUuaXNTdHJpbmcoKSk7CiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGFzU3Ry
aW5nKGVycm9yTWVzc2FnZVZhbHVlKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKHJlZmVyZW5jZUVy
cm9yRmxhZykKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7CiAg
ICAgZWxzZQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBlcnJvck1lc3NhZ2UpOwogfQog
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiBleGVjLCBpbnQz
Ml90IGRlYnVnSG9va0lEKQpAQCAtMTg2MSwxMyArMTg4MCwxNCBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeUlkCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCFiYXNlT2Jq
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmot
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZCgmdm0sIHVpZCkpOwogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29k
ZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxl
dGUgcHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIApAQCAtMTg4MCw2
ICsxOTAwLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogCiAg
ICAgSlNPYmplY3QqIGJhc2VPYmogPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnRvT2Jq
ZWN0KGV4ZWMpOwogICAgIEpTVmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkp
OwpAQCAtMTg5OSw3ICsxOTIwLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlWYQogICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgcHJvcGVydHkpOwogICAgIH0KICAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICByZXR1cm4gY291
bGREZWxldGU7CiB9CiAKQEAgLTIwMTYsNiArMjAzNyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gYnl0ZWNvZGVQQzsKIApAQCAtMjAy
OSw3ICsyMDUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewog
ICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cisg
ICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICAgICAgfQogCkBAIC0yMDM4LDcgKzIwNjEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyBXaGVuIHdlIGNh
bid0IHN0YXRpY2FsbHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJmb3Jt
IHRoZSBjaGVjayBvbiB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0gc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpzVERaVmFs
dWUoKSkgewotICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVRE
WkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAgICAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjA1NSw2ICsyMDc4LDgg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSW5zdHJ1
Y3Rpb24qIHBjID0gYnl0ZWNvZGVQQzsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CkBAIC0yMDgyLDIwICsyMTA3LDIwIEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRUb1Njb3BlKEUKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2NvcGUs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBpZGVu
dCwgc2xvdCk7CiAgICAgICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBqc1RE
WlZhbHVlKCkpIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRo
cm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50
KSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZp
bmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24oZ2V0
UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSgp
LT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGV4
ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbChl
eGVjLCBjb2RlQmxvY2ssIHBjLCBzY29wZSwgZ2V0UHV0SW5mbywgc2xvdCwgaWRlbnQpOwpAQCAt
MjEwNSw5ICsyMTMwLDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVj
U3QKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2
bSk7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRFeGNlcHRpb25WYWx1ZSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
blZhbHVlKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblZh
bHVlKTsKIAogICAgIC8vIFJlc3VsdHMgc3RvcmVkIG91dC1vZi1iYW5kIGluIHZtLnRhcmdldE1h
Y2hpbmVQQ0ZvclRocm93ICYgdm0uY2FsbEZyYW1lRm9yQ2F0Y2gKICAgICBnZW5lcmljVW53aW5k
KHZtLCBleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAogI2RlZmluZSBMTElOVF9CRUdJ
Tl9OT19TRVRfUEMoKSBcCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsgICAgICBcCi0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpCisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOyBcCisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSkKIAogI2lmbmRlZiBOREVCVUcKICNkZWZpbmUgTExJTlRfU0VUX1BDX0ZPUl9TVFVC
UygpIGRvIHsgXApAQCAtOTIsNyArOTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKICNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCAwKQog
CiAjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblRv
VGhyb3cpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgIFwKICAgICAgICAgcGMgPSByZXR1cm5Ub1Ro
cm93KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJ
TlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE1Miw3ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKIAogI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIGV4Y2Vw
dGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUq
IF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihfX2N0X2V4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKF9fY3Rf
ZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICBcCiAgICAgICAgIExMSU5UX0NBTExfRU5EX0lN
UEwoMCwgY2FsbFRvVGhyb3coX19jdF9leGVjKSk7ICAgICAgICAgICAgICAgICBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKQEAgLTQ2Niw2ICs0NjcsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChy
ZXBsYWNlKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0gdm0udG9wVk1FbnRyeUZyYW1lOwogICAg
IENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUp
OwogICAgIGlmICghY2FsbGVyRnJhbWUpIHsKQEAgLTQ4Miw5ICs0ODUsOSBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzdGFja19jaGVjaykKICAgICBkYXRhTG9nRigiTnVtIGNhbGxlZSByZWdpc3Rl
cnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAg
ZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJz
KTsKIAotICAgIGRhdGFMb2dGKCJDdXJyZW50IE9TIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIsIGV4
ZWMtPnZtKCkuc29mdFN0YWNrTGltaXQoKSk7CisgICAgZGF0YUxvZ0YoIkN1cnJlbnQgT1Mgc3Rh
Y2sgZW5kIGlzIGF0ICVwLlxuIiwgdm0uc29mdFN0YWNrTGltaXQoKSk7CiAjaWYgIUVOQUJMRShK
SVQpCi0gICAgZGF0YUxvZ0YoIkN1cnJlbnQgQyBMb29wIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIs
IGV4ZWMtPnZtKCkuY2xvb3BTdGFja0xpbWl0KCkpOworICAgIGRhdGFMb2dGKCJDdXJyZW50IEMg
TG9vcCBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCB2bS5jbG9vcFN0YWNrTGltaXQoKSk7CiAjZW5k
aWYKIAogI2VuZGlmCkBAIC01MDIsNyArNTA1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3Rh
Y2tfY2hlY2spCiAjZW5kaWYKIAogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZt
KTsKLSAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSk7CisgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgY2FsbGVyRnJhbWUpOwogICAgIHBjID0gcmV0
dXJuVG9UaHJvdyhjYWxsZXJGcmFtZSk7CiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYyk7
CiB9CkBAIC0xMTg1LDYgKzExODgsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRs
ZUhvc3RDYWxsCiAgICAgCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOwogCiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogICAg
IGV4ZWNDYWxsZWUtPmNsZWFyUmV0dXJuUEMoKTsKQEAgLTEyMzcsNiArMTI0MSw4IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
ZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogCiAjaWYgTExJTlRfU0xPV19QQVRI
X1RSQUNJTkcKICAgICBkYXRhTG9nRigiUGVyZm9ybWluZyBjYWxsIHdpdGggcmVjb3JkZWQgUEMg
PSAlcFxuIiwgZXhlYy0+Y3VycmVudFZQQygpKTsKQEAgLTEyNDQsMTEgKzEyNTAsMTAgQEAgaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogICAgIAogICAgIEpTQ2VsbCog
Y2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwogICAg
IGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCi0gICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2Fs
bChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgICAgIHJldHVybiB0
aHJvd1Njb3BlLmZvcndhcmQoaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFz
VmFsdWUsIGtpbmQpKTsKICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IGNh
bGxlZS0+c2NvcGVVbmNoZWNrZWQoKTsKLSAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKIAogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwpAQCAtMTMxMSw4ICsxMzE2LDEwIEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjLCBleGVjQ2FsbGVlLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQog
Ci1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAg
Ly8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgogICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNh
bGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgpAQCAtMTMyOCwxOSArMTMzNSwxOSBAQCBp
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4CiAgICAgZXhlY0NhbGxlZS0+
c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CiAgICAgCiAgICAgQVNTRVJUKHBjWzVdLnUuY2FsbExpbmtJ
bmZvKTsKLSAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVB
c1ZhbHVlLCBwY1s1XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHRocm93U2NvcGUuZm9y
d2FyZChzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzVd
LnUuY2FsbExpbmtJbmZvKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
YWxsKQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwotICAgIHJldHVybiBnZW5lcmlj
Q2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndh
cmQoZ2VuZXJpY0NhbGwodm0sIGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCkpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0KQogewogICAgIExMSU5UX0JFR0lOX05P
X1NFVF9QQygpOwotICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0
cnVjdCk7CisgICAgcmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChnZW5lcmljQ2FsbCh2bSwgZXhl
YywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpCkBAIC0xNTE1LDcgKzE1MjIsNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgTExJTlRfUkVUVVJOKHNj
b3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVy
dHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICB9CiAKQEAgLTE1MjQsNyArMTUzMSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8KICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3Rh
dGljYWxseSBwcm92ZSB3ZSBuZWVkIGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNo
ZWNrIG9uIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGV4ZWMsIGlkZW50KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0ganNURFpWYWx1ZSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKGV4ZWMs
IHZtLCBwYywgc2NvcGUsIHNsb3QsIGlkZW50KTsKQEAgLTE2MTgsOSArMTYyNSwxMSBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvCiBleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3Rv
Q2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BD
YWxsRnJhbWU7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCAqdm0pOworCiAgICAg
aWYgKCFleGVjKQogICAgICAgICBleGVjID0gcHJvdG9GcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7
CisgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCiAgKgpAQCAtNzMsMTggKzczLDIwIEBAIHZvaWQgQXJyYXlDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSlNPYmplY3QqIGNvbnN0
cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVu
Z3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKK0pTVmFsdWUgY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1
aXJrKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUgbmV3VGFy
Z2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKCFsZW5ndGguaXNOdW1iZXIoKSkKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGV4ZWMsIHByb2ZpbGUsIGdsb2JhbE9i
amVjdCwgJmxlbmd0aCwgMSwgbmV3VGFyZ2V0KTsKICAgICAKICAgICB1aW50MzJfdCBuID0gbGVu
Z3RoLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChuICE9IGxlbmd0aC50b051bWJlcihleGVjKSkK
LSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5v
dWdoIHBvc2l0aXZlIGludGVnZXIuIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFy
cmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpKTsKICAg
ICByZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBwcm9maWxlLCBnbG9iYWxPYmplY3Qs
IG4sIG5ld1RhcmdldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEFy
cmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpT
VmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGNvbnN0cnVjdEFycmF5V2l0
aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUg
bmV3VGFyZ2V0KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVy
bmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsNyBAQAog
CiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0Lmgi
CisjaW5jbHVkZSAiVGhyb3dTY29wZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTYwLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhT
aXplUXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKK0pT
VmFsdWUgY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIHBy
b3RvdHlwZSA9IEpTVmFsdWUoKSk7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwog
CkBAIC02OCw2ICs2OSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25z
dHIKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXkKIGlubGlu
ZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmICghYXJndW1lbnRWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTgxLDcgKzg1LDcgQEAgaW5saW5lIGJvb2wgaXNBcnJheShFeGVj
U3RhdGUqIGV4ZWMsIEpTVgogCiAgICAgICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQ
cm94eU9iamVjdCo+KGFyZ3VtZW50KTsKICAgICAgICAgaWYgKHByb3h5LT5pc1Jldm9rZWQoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheS5p
c0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94eSB0aGF0IGhhcyBiZWVuIHJldm9rZWQi
KSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIkFycmF5LmlzQXJyYXkgY2Fubm90IGJlIGNhbGxlZCBvbiBhIFByb3h5IHRoYXQgaGFz
IGJlZW4gcmV2b2tlZCIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBhcmd1bWVudCA9IHByb3h5LT50YXJnZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw5IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
YXJndW1lbnRDbGFtcGVkSW4KIHRlbXBsYXRlPEpTQXJyYXk6OlNoaWZ0Q291bnRNb2RlIHNoaWZ0
Q291bnRNb2RlPgogdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2Jq
LCB1bnNpZ25lZCBoZWFkZXIsIHVuc2lnbmVkIGN1cnJlbnRDb3VudCwgdW5zaWduZWQgcmVzdWx0
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQo
Y3VycmVudENvdW50ID4gcmVzdWx0Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gY3VycmVu
dENvdW50IC0gcmVzdWx0Q291bnQ7CiAKQEAgLTI4NiwxNCArMjg5LDE0IEBAIHZvaWQgc2hpZnQo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGgKICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5
SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxz
ZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5
SW5kZXgodGhpc09iaiwgZXhlYywgdG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJ
bmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yICh1bnNp
Z25lZCBrID0gbGVuZ3RoOyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgewotICAgICAgICBpZiAo
IXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgayAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICBp
ZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGsgLSAxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTMwMiw2ICszMDUsOSBAQCB2
b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoCiB0ZW1wbGF0ZTxKU0FycmF5
OjpTaGlmdENvdW50TW9kZSBzaGlmdENvdW50TW9kZT4KIHZvaWQgdW5zaGlmdChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCB1bnNpZ25lZCBoZWFkZXIsIHVuc2lnbmVkIGN1cnJl
bnRDb3VudCwgdW5zaWduZWQgcmVzdWx0Q291bnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0Q291bnQgPiBjdXJyZW50Q291bnQpOwogICAg
IHVuc2lnbmVkIGNvdW50ID0gcmVzdWx0Q291bnQgLSBjdXJyZW50Q291bnQ7CiAKQEAgLTMxMCw3
ICszMTYsNyBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogCiAKICAg
ICAvLyBHdWFyZCBhZ2FpbnN0IG92ZXJmbG93LgogICAgIGlmIChjb3VudCA+IChVSU5UX01BWCAt
IGxlbmd0aCkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTMyNyw4ICszMzMsOCBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpc09iai0+cHV0QnlJbmRleElu
bGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2Jq
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmos
IGV4ZWMsIHRvKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgfSBlbHNlIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgdG8pKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTM2MSw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GCiAgICAgICAgIGN1c3RvbUpvaW5DYXNlID0gdHJ1ZTsKIAogICAgIGlmIChVTkxJS0VMWShj
dXN0b21Kb2luQ2FzZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIs
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIp
KTsKIAogICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1d
IGludGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBhcyB0aGUgdGhpcyB2YWx1
ZSBhbmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCiAgICAgaWYgKCFpc0pTQXJyYXkodGhpc09i
amVjdCkgfHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Okhvc3QgfHwgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uICE9IGFycmF5UHJvdG9GdW5jSm9pbikKQEAgLTY3NCw2ICs2ODAsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBT
dHJpY3RNb2RlKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKQEAgLTY5NCw4ICs3
MDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAg
IHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVy
YWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQogICAgICAgICBwdXRMZW5n
dGgoZXhlYywgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwpAQCAtNzQwLDExICs3NDks
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmICgh
dGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBnZXRMZW5n
dGgoZXhlYywgdGhpc09iamVjdCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtODEyLDcgKzgyMyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
IXRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIGxvd2VyKSkgewogICAgICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0
eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgICAgIH0KIApAQCAtODIyLDcgKzgzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHVwcGVyKSkgewogICAg
ICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC05MDIsNiAr
OTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIC8v
IDE1LjQuNC4xMgogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlm
ICghdGhpc09iaikKQEAgLTk2Niw3ICs5NzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBK
U0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhVbmRlY2lkZWQpLCBkZWxldGVDb3VudCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGVsZXRlQ291bnQ7ICsraykgewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsgKyBi
ZWdpbik7CkBAIC0xMTIzLDYgKzExMzUsOCBAQCBzdGF0aWMgYm9vbCBtb3ZlRWxlbWVudHMoRXhl
Y1N0YXRlKiBleGVjCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25jYXRBcHBlbmRPbmUoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGZpcnN0LCBKU1ZhbHVlIHNlY29uZCkKIHsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEFTU0VSVCghaXNK
U0FycmF5KHNlY29uZCkpOwogICAgIEFTU0VSVCghc2hvdWxkVXNlU2xvd1B1dChmaXJzdC0+aW5k
ZXhpbmdUeXBlKCkpKTsKICAgICBCdXR0ZXJmbHkqIGZpcnN0QnV0dGVyZmx5ID0gZmlyc3QtPmJ1
dHRlcmZseSgpOwpAQCAtMTEzNiw3ICsxMTUwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNv
bmNhdEFwcGVuZE9uZShFeAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24odHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRl
KHZtLCByZXN1bHRTdHJ1Y3R1cmUsIGZpcnN0QXJyYXlTaXplICsgMSk7CiAgICAgaWYgKCFyZXN1
bHQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogCiAgICAgaWYgKCFyZXN1bHQtPmFwcGVuZE1lbWNw
eShleGVjLCB2bSwgMCwgZmlyc3QpKSB7CiAgICAgICAgIGlmICghbW92ZUVsZW1lbnRzKGV4ZWMs
IHZtLCByZXN1bHQsIDAsIGZpcnN0LCBmaXJzdEFycmF5U2l6ZSkpIHsKQEAgLTExNTUsNiArMTE2
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1AKIHsKICAgICBB
U1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBKU0FycmF5
KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgCkBAIC0xMTk5LDcgKzEyMTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9QCiAgICAgU3RydWN0dXJlKiByZXN1bHRTdHJ1Y3R1cmUgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbih0eXBlKTsKICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHZtLCByZXN1bHRTdHJ1Y3R1cmUsIGZpcnN0QXJyYXlTaXplICsgc2Vj
b25kQXJyYXlTaXplKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAg
ICAgCiAgICAgaWYgKHR5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgIGRvdWJsZSog
YnVmZmVyID0gcmVzdWx0LT5idXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpLmRhdGEoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMSwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC02OCw2ICs2OCw3IEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0K
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbihmYWxzZSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmlu
ZygpKTsKQEAgLTc2LDcgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29s
ZWFuUHJvdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5zbWFsbFN0cmluZ3Mu
dHJ1ZVN0cmluZygpKTsKIAogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKEJvb2xlYW5PYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIGlm
IChhc0Jvb2xlYW5PYmplY3QodGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVh
bihmYWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5n
cy5mYWxzZVN0cmluZygpKTsKQEAgLTg3LDEyICs4OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJvb2xlYW5Qcm90CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9v
bGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzQm9vbGVhbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiAKICAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cyhCb29sZWFuT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQm9vbGVhbk9iamVj
dCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmlu
ZSBFTkRfSU1QTCgpIFJFVFVSTl9UV08ocGMsIGV4ZWMpCiAKICNkZWZpbmUgVEhST1coZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgIFwKKyAgICAgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7ICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb25Ub1Rocm93KTsg
IFwKICAgICAgICAgUkVUVVJOX1RPX1RIUk9XKGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE0MSwxMyArMTQyLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0
KSBSRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQogCi0jZGVmaW5lIENBTExfVEhST1co
ZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIEV4ZWNTdGF0ZSogY3RFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIEluc3RydWN0aW9uKiBjdFBDID0gKHBjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIENBTExfRU5EX0lNUEwoY3RFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY3RFeGVjKSk7ICAg
ICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KICNkZWZpbmUgQ0FMTF9DSEVDS19F
WENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgRXhlY1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0gKHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMsOCArNzMsMTAgQEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3Rh
dAogCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwg
SlNWYWx1ZSBiYXNlVmFsKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKCFiYXNlVmFsLmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlk
SW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsKSk7CisgICAgICAgIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFz
ZVZhbCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NSw3ICs4Nyw3IEBA
IGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAgICAgcmV0dXJu
IGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkpOwogCiAgICAgYXV0byBwcm9wZXJ0eSA9IHBy
b3BOYW1lLnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9u
KCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5KTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzksNyArMzksOSBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUq
CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CisKKyAgICB0aHJvd1Njb3Bl
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lO
RwogICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCB2bS0+ZXhjZXB0aW9uKCksICIu
XG4iKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc3RydWN0RGF0YS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMCArMzcs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIENvbnN0cnVjdERhdGEgY29u
c3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1
Y3REYXRhKGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKICAgICBpZiAoY29uc3Ry
dWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAKICAgICByZXR1cm4gY29uc3RydWN0
KGV4ZWMsIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBh
cmdzLCBjb25zdHJ1Y3Rvck9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWpp
bmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzIwLDkgKzMyMCwxMCBA
QCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBmb3JtYXRlRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgRGF0ZVRpbWVG
b3JtYXQgZm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCkKIHsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBEYXRlSW5z
dGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKIApAQCAtNTIy
LDEzICs1MjMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVj
LT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IERhdGUiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpOwog
CiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0Rh
dGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0
ZVRpbWUpCkBAIC01NjgsOSArNTcwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRo
aXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwpAQCAtNTc4
LDkgKzU4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlz
RGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmot
PmludGVybmFsTnVtYmVyKCksIExvY2FsZURhdGUpKTsKQEAgLTU4OCw5ICs1OTIsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExv
Y2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigp
LCBMb2NhbGVUaW1lKSk7CkBAIC01OTgsMTMgKzYwMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGUucHJvdG90eXBlW1N5
bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkRhdGUucHJv
dG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVj
dC4iKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNW
YWx1ZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2
ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1p
dGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKIAogICAgIEpTVmFsdWUgaGludFZh
bHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGV4ZWMsIGhpbnRWYWx1ZSk7CkBA
IC02MTksMTggKzYyNSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWUo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhl
Yy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNjQyLDkgKzY1MCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsgCiAKQEAgLTY1Niw5ICs2NjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5m
bygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3Rh
bmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NzAs
OSArNjgwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmog
PSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNjg0LDkgKzY5NSwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlz
VmFsdWUpOyAKIApAQCAtNjk4LDkgKzcxMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldFVUQ0RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzEy
LDkgKzcyNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFz
RGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03MjYsOSArNzQwLDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
RGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7
CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1Zh
bHVlKTsgCiAKQEAgLTc0MCw5ICs3NTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNl
KiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NTQsOSAr
NzcwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0o
KSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBh
c0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzY4LDkgKzc4NSwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlz
VmFsdWUpOyAKIApAQCAtNzgyLDkgKzgwMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJ
bnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAt
Nzk2LDkgKzgxNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhl
Yy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtODEwLDkgKzgzMCwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0
YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtODI0LDkgKzg0NSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERh
dGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
CiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1
ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwpA
QCAtODQwLDkgKzg2MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01p
bGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNl
KiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGRvdWJsZSBt
aWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwpAQCAtODU2LDkgKzg3OSwxMCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
dGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg3MCw5ICs4OTQsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAKQEAgLTg4NCw5ICs5MDksMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFy
Z3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0
VGltZVR5cGUpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFz
RGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmot
PmludGVybmFsTnVtYmVyKCk7CkBAIC05MjMsOSArOTQ5LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBzZXROZXdWYWx1ZUZyb21UaW0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1Zh
bHVlRnJvbURhdGVBcmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG51bUFyZ3NUb1VzZSwgV1RGOjpU
aW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhp
c0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKSB7CkBAIC0xMDM1LDkgKzEwNjIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNl
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOwpAQCAtMTA3OCw5ICsxMTA2LDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0
YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC0xMDk0LDYgKzExMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNP
TihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBl
eGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlz
KGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBA
IC0xMTEyLDEzICsxMTQyLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgidG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9JU09T
dHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwo
ZXhlYywgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBl
eGVjLT5lbXB0eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVzdWx0LmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgidG9JU09TdHJpbmcgZGlkIG5vdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgidG9JU09TdHJpbmcgZGlkIG5vdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUiKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCwzNCAr
MjAwLDM0IEBAIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmoKICAgICAg
ICAgfHwgZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
Yywgc291cmNlVVJMUHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgY2hhciogY29uc3RydWN0b3JOYW1lKQorSlNPYmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5u
b3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCiB7Ci0gICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwgY29uc3RydWN0b3JO
YW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwg
Y29uc3RydWN0b3JOYW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7
CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVj
dCogdGhyb3dUeXBlRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBleGVj
KQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMpKTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0pTT2JqZWN0KiB0
aHJvd1R5cGVFcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmluZyhlcnJvck1lc3NhZ2UpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgU3RyaW5nKGVycm9yTWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09i
amVjdCogdGhyb3dUeXBlRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKKyAgICBy
ZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgbWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUq
IGV4ZWMpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJy
b3IiKSkpOworICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKIH0KIAot
SlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVj
LCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQogCiBKU09iamVjdCogY3JlYXRl
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZUlu
bGluZXMuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogCkBAIC03MCwyMSArNzEsMjEgQEAgSlNP
YmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iagogLy8gTWV0aG9kcyB0byB0aHJv
dyBFcnJvcnMuCiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4g
ZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi1KU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIEFTQ0lJTGl0ZXJhbCBlcnJv
ck1lc3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLUpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpOwotaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRl
KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgp
LnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3Nh
Z2UpKTsgfQorSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5u
b3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKFRocm93U2NvcGUmLCBFeGVjU3RhdGUqLCBBU0NJ
SUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJv
d1R5cGVFcnJvcihUaHJvd1Njb3BlJiwgRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoVGhy
b3dTY29wZSYsIEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
U3ludGF4RXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKTsKK2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKFRocm93U2NvcGUmIHRo
cm93U2NvcGUsIEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7
IHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9y
KHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3Jh
cCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCi1pbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJv
d1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcikpOyB9Ci1pbmxp
bmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KLWlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFs
IGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIGVycm9yTWVzc2FnZSkpOyB9Ci1pbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0K
LWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93UmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSB2b2lkIHRocm93
Vk1FcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlv
biogZXhjZXB0aW9uKSB7IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9u
KTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKSk7IH0KK2lubGlu
ZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUs
IEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMpKTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBl
RXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBleGVjLCBBU0NJSUxpdGVy
YWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1
ZSB0aHJvd1ZNVHlwZUVycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBlcnJvck1lc3NhZ2UpKTsgfQoraW5saW5l
IEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUs
IEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBlcnJvck1l
c3NhZ2UpKTsgfQogCiBjbGFzcyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CiBwcml2YXRlOgpAQCAtMTA4LDcgKzEwOSw5IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93
VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNh
bGxlZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgfQogCkBAIC0xMjAsNyArMTIzLDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxl
ZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
bio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDEyICs2NywxNSBAQCB2b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgCiAvLyBFQ01BLTI2MiA1LjEsIDE1LjExLjQuNAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgLy8gMS4gTGV0IE8gYmUgdGhlIHRoaXMgdmFsdWUuCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKIAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMg
bm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBK
U09iamVjdCogdGhpc09iaiA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAKICAgICAvLyBHdWFyZCBh
Z2FpbnN0IHJlY3Vyc2lvbiEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkZ1enouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkZ1enouY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsMTYg
KzM4LDE4IEBAIHVuc2lnbmVkIG51bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNrcygpIHsKIC8vIENh
bGwgdGhpcyBvbmx5IGlmIHlvdSBrbm93IHRoYXQgZXhjZXB0aW9uIGZ1enppbmcgaXMgZW5hYmxl
ZC4KIHZvaWQgZG9FeGNlcHRpb25GdXp6aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciog
d2hlcmUsIHZvaWQqIHJldHVyblBDKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgQVNTRVJUKE9wdGlvbnM6OnVz
ZUV4Y2VwdGlvbkZ1enooKSk7CiAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoZXhlYy0+
dm0oKS5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAg
CiAgICAgc19udW1iZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MrKzsKICAgICAKICAgICB1bnNpZ25l
ZCBmaXJlVGFyZ2V0ID0gT3B0aW9uczo6ZmlyZUV4Y2VwdGlvbkZ1enpBdCgpOwogICAgIGlmIChm
aXJlVGFyZ2V0ID09IHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKSB7CiAgICAgICAgIHBy
aW50ZigiSlNDIEVYQ0VQVElPTiBGVVpaOiBUaHJvd2luZyBmdXp6IGV4Y2VwdGlvbiB3aXRoIGNh
bGwgZnJhbWUgJXAsIHNlZW4gaW4gJXMgYW5kIHJldHVybiBhZGRyZXNzICVwLlxuIiwgZXhlYywg
d2hlcmUsIHJldHVyblBDKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbigKKyAg
ICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigKICAgICAgICAgICAgIGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0aW9uIEZ1enoiKSkpOwogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yODks
MjMgKzI4OSwyMyBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAg
ICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDYW5ub3QgYWNjZXNzIHVuaW5p
dGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlT3V0T2ZN
ZW1vcnlFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoVGhy
b3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOwotICAgIHJl
dHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
YykpOworICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRocm93VGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBFcnJvckhhbmRsaW5nU2Nv
cGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CisgICAgcmV0dXJuIHRocm93
U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbigmdm0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkVycm9ySW5zdGFu
Y2UuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Miw5ICs1Myw5IEBAIEpTT2JqZWN0KiBjcmVh
dGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3QKIEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogSlNTdHJpbmcq
IGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKIAotSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqKTsK
LUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVj
U3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dPdXRPZk1lbW9yeUVycm9yKFRocm93U2NvcGUmLCBFeGVjU3RhdGUqKTsKK0pTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihUaHJvd1Njb3BlJiwg
RXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKFRocm93U2NvcGUmLCBFeGVjU3RhdGUqKTsKIAogCiBjbGFzcyBU
ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsNyBAQCBDb2RlQmxvY2sqIFNj
cmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIEpTT2JqZWN0KiYgZXhj
ZXB0aW9uKQogewogICAgIFZNKiB2bSA9IHNjb3BlLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgKnZtKTsKIAogICAgIEFTU0VSVCh2bS0+aGVhcC5pc0RlZmVycmVkKCkp
OwogICAgIEFTU0VSVChzdGFydENvbHVtbigpICE9IFVJTlRfTUFYKTsKQEAgLTMxOSw3ICszMjAs
NyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBm
aXJzdExpbmUoKSwgCiAgICAgICAgIGxhc3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVt
bigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewotICAgICAgICBleGNlcHRpb24g
PSB2bS0+dGhyb3dFeGNlcHRpb24oCisgICAgICAgIGV4Y2VwdGlvbiA9IHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oCiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwKICAg
ICAgICAgICAgIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5t
X3NvdXJjZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQyOSwyMCArNDMwLDIzIEBA
IGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0KIAogRXZhbEV4ZWN1dGFi
bGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFi
bGVzVW5kZXJURFopCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3Qt
PmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1l
c3NhZ2UoKSkpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgp
KSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIEV2YWxFeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVj
LT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0
VHlwZSk7Ci0gICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2Nr
KGV4ZWMsIGV4ZWN1dGFibGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAoIXVubGlua2Vk
RXZhbENvZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2suc2V0KGV4ZWMtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENv
ZGUpOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhl
Y3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTc2LDggKzc2LDExIEBAIENhbGxUeXBl
IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXQKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5j
dGlvbiBDb25zdHJ1Y3RvcgogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywg
Y29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFs
T2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICByZXR1cm4gdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFs
T2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFy
Z3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKIH0KIApAQCAtODYsNiArODksOSBAQCBKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCiAgICAgY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBp
bXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CkBA
IC0xMTYsMTQgKzEyMiwxNCBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25OYW1lLCAqZXhlYywgc291cmNlLCBleGNlcHRpb24s
IG92ZXJyaWRlTGluZU51bWJlcik7CiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NF
UlQoZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oZXhlYywgZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
bmV3VGFyZ2V0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJj
bGFzc1N0cnVjdHVyZSk7CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1
Y3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2
ICs4Myw4IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YSgKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkp
KSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0
aGlzVmFsdWUpOwpAQCAtMTEyLDE5ICsxMTQsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblBybwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodGhp
c1ZhbHVlKTsKICAgICAgICAgaWYgKG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkgJiBUeXBlT2ZT
aG91bGRDYWxsR2V0Q2FsbERhdGEpIHsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgICAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldENhbGxE
YXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAgICBp
ZiAob2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEp
ICE9IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNsYXNzSW5m
byA9IG9iamVjdC0+Y2xhc3NJbmZvKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgY2xh
c3NJbmZvLT5jbGFzc05hbWUsICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
fQogCiAvLyAxNS4zLjQuNSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAodGhpc0FyZyBbLCBhcmcx
IFssIGFyZzIsIC4uLl1dKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY0JpbmQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAg
IC8vIExldCBUYXJnZXQgYmUgdGhlIHRoaXMgdmFsdWUuCkBAIC0xMzQsMTEgKzEzOCwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXQsIGNhbGxE
YXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAvLyBQcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgY2Fs
bGFibGUuCiAgICAgQVNTRVJUKHRhcmdldC5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogdGFy
Z2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
CiAgICAgLy8gTGV0IEEgYmUgYSBuZXcgKHBvc3NpYmx5IGVtcHR5KSBpbnRlcm5hbCBsaXN0IG9m
IGFsbCBvZiB0aGUgYXJndW1lbnQgdmFsdWVzIHByb3ZpZGVkIGFmdGVyIHRoaXNBcmcgKGFyZzEs
IGFyZzIgZXRjKSwgaW4gb3JkZXIuCiAgICAgc2l6ZV90IG51bUJvdW5kQXJncyA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA+IDEgPyBleGVjLT5hcmd1bWVudENvdW50KCkgLSAxIDogMDsKQEAgLTE0
Niw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAg
ICAgaWYgKG51bUJvdW5kQXJncykgewogICAgICAgICBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgbnVtQm91bmRB
cmdzKTsKICAgICAgICAgaWYgKCFib3VuZEFyZ3MpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVj
KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUJvdW5kQXJn
czsgKytpKQogICAgICAgICAgICAgYm91bmRBcmdzLT5pbml0aWFsaXplSW5kZXgodm0sIGksIGV4
ZWMtPmFyZ3VtZW50KGkgKyAxKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDctMjAwOSwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODcsMTEgKzg3LDE0IEBAIEpTVmFsdWUgY2FsbEdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogYm9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwgRUNN
QU1vZGUgZWNtYU1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAo
Z2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBpZiAoZWNtYU1vZGUg
PT0gU3RyaWN0TW9kZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDEsNyArMTA0LDcgQEAgYm9v
bCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZQogICAgIGFyZ3MuYXBwZW5kKHZh
bHVlKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
c2V0dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxsRGF0YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwgYXJncyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJKHJl
dmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NywxMSArMzY3LDE0IEBAIHZvaWQgSW50bENv
bGxhdG9yOjpjcmVhdGVDb2xsYXRvcihFeGVjU3QKIAogSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNv
bXBhcmVTdHJpbmdzKEV4ZWNTdGF0ZSYgc3RhdGUsIFN0cmluZ1ZpZXcgeCwgU3RyaW5nVmlldyB5
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CisKICAgICAvLyAxMC4zLjQgQ29tcGFyZVN0cmluZ3MgYWJzdHJhY3Qgb3Bl
cmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2NvbGxhdG9yKSB7CiAgICAgICAgIGNy
ZWF0ZUNvbGxhdG9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFtX2NvbGxhdG9yKQotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkp
OwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMzc5
LDcgKzM4Miw3IEBAIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJlU3RyaW5ncyhFeGUKICAg
ICBVQ2hhckl0ZXJhdG9yIGl0ZXJhdG9yWSA9IGNyZWF0ZUl0ZXJhdG9yKHkpOwogICAgIGF1dG8g
cmVzdWx0ID0gdWNvbF9zdHJjb2xsSXRlcihtX2NvbGxhdG9yLmdldCgpLCAmaXRlcmF0b3JYLCAm
aXRlcmF0b3JZLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIikpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOwogICAg
IHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
clByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxNiArMTAzLDE4IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlz
IENvbGxhdG9yIG9iamVjdC4KICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWlj
Q2FzdDxJbnRsQ29sbGF0b3IqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghY29sbGF0
b3IpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xs
YXRvciIpKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9y
LT5ib3VuZENvbXBhcmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1d
IGlzIHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kQ29tcGFyZSkgewotICAgICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNv
bGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVp
bHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBi
LiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCkBAIC0xMzEsMTAgKzEz
MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTAuMy41IElu
dGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAg
ICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4o
c3RhdGUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwu
Q29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIEFT
Q0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9y
IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0
aW9ucygqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIwLDYgKzQyMCw5IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRG
b3JtYXRzRnJvbVAKIAogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGlt
ZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcmlnaW5h
bE9wdGlvbnMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTIuMS4xIEluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCAoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpIChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gSWYgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFsaXplZEludGxPYmplY3RdXSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IGRhdGVUaW1l
Rm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4KQEAgLTQ0MCw3ICs0NDMs
NiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUCiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gbG9jYWxlT3B0OwogCiAgICAgLy8gOC4gTGV0IG1hdGNoZXIgYmUg
R2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIsIMKrImxvb2t1cCIs
ICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgVk0mIHZtID0gZXhlYy52bSgpOwogICAg
IFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihleGVjLCBvcHRpb25zLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBmaXQiIH0s
ICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwi
IiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZBYnJ1cHQobWF0Y2hlcikuCiAgICAg
aWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODcsNyArNDg5LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgICAgICAvLyBkLiBMZXQgdHogYmUgQ2Fu
b25pY2FsaXplVGltZVpvbmVOYW1lKHR6KS4KICAgICAgICAgdHogPSBjYW5vbmljYWxpemVUaW1l
Wm9uZU5hbWUob3JpZ2luYWxUeik7CiAgICAgICAgIGlmICh0ei5pc051bGwoKSkgewotICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKCZleGVjLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCB0aW1l
IHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRp
bWUgem9uZTogJXMiLCBvcmlnaW5hbFR6LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC02NDcsNyArNjQ5LDcgQEAgdm9pZCBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IqIGdlbmVyYXRv
ciA9IHVkYXRwZ19vcGVuKGRhdGFMb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBB
U0NJSUxpdGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNjYzLDcgKzY2NSw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFs
aXplRGF0ZVQKICAgICB9CiAgICAgdWRhdHBnX2Nsb3NlKGdlbmVyYXRvcik7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxp
dGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjc0LDcgKzY3Niw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0
ZVQKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBtX2RhdGVG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4o
dWRhdF9vcGVuKFVEQVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBtX2xvY2FsZS51dGY4KCkuZGF0
YSgpLCB0aW1lWm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5s
ZW5ndGgoKSwgcGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgo
KSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
VGltZUZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4Myw2ICs4ODUsOSBAQCBKU09iamVjdCogSW50
bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wCiAKIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0
Ojpmb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAg
Ly8gMTIuMy40IEZvcm1hdERhdGVUaW1lIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4w
KQogICAgIGlmICghbV9pbml0aWFsaXplZERhdGVUaW1lRm9ybWF0KSB7CiAgICAgICAgIGluaXRp
YWxpemVEYXRlVGltZUZvcm1hdChleGVjLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpKTsK
QEAgLTg5MSw3ICs4OTYsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0KEV4
ZWNTCiAKICAgICAvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIsIHRoZW4gdGhyb3cg
YSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoImRhdGUg
dmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXQoKSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFs
KCJkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiKSk7
CiAKICAgICAvLyBEZWxlZ2F0ZSByZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtOTAzLDcgKzkwOCw3IEBAIEpTVmFsdWUgSW50
bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1MKICAgICAgICAgdWRhdF9mb3JtYXQobV9kYXRl
Rm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBudWxscHRy
LCAmc3RhdHVzKTsKICAgICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1h
dCBkYXRlIHZhbHVlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIikpOwog
CiAgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0
TGVuZ3RoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIw
NDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
KQorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA4LDYgKzEwOSw5IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJl
IHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgogICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRm
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkp
OwpAQCAtMTE1LDIzICsxMTksMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
RGF0ZVRpbQogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0
eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWR0ZikKLSAg
ICAgICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhp
c1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBkdGYgPSBq
c0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQo
c3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgogICAg
IGlmICghZHRmKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1h
dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBE
YXRlVGltZUZvcm1hdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKIAogICAgIEpTQm91bmRGdW5j
dGlvbiogYm91bmRGb3JtYXQgPSBkdGYtPmJvdW5kRm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhl
IFtbYm91bmRGb3JtYXRdXSBpbnRlcm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2Jq
ZWN0IGlzIHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kRm9ybWF0KSB7Ci0gICAgICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZHRmLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQt
aW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBU
aGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5n
dGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQogICAgICAgICBKU0Z1bmN0aW9uKiB0
YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVND
SUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1l
LCBOb0ludHJpbnNpYyk7CiAgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOwogICAg
ICAgICBpZiAoIWJvdW5kQXJncykKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSkpOwogCiAg
ICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1
ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
c3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJncywgMSwgQVND
SUlMaXRlcmFsKCJmb3JtYXQiKSk7CkBAIC0xNDYsMTYgKzE0OSwxOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAgICAgSW50bERh
dGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5k
IHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBh
dHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTM2NzkKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQotICAgICAgICBkYXRlVGltZUZvcm1hdCA9
IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdl
dChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1
YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKKyAgICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBq
c0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQo
c3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwo
IkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1h
dCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vr
b2xzYWtAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU2LDYg
KzE1Nyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckYKIHsKICAg
ICAvLyAxMS4xLjEgSW5pdGlhbGl6ZU51bWJlckZvcm1hdCAobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKSAoRUNNQS00MDIgMi4wKQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICAvLyAxLiBJZiBudW1iZXJG
b3JtYXQgaGFzIGFuIFtbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gaW50ZXJuYWwgc2xvdCB3aXRo
IHZhbHVlIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICAvLyAyLiBTZXQg
bnVtYmVyRm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4KQEAgLTE4Myw3
ICsxODUsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OwogCiAgICAgLy8gOC4gTGV0IG1hdGNoZXIgYmUg
R2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIsIMKrImxvb2t1cCIs
ICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3Ry
aW5nT3B0aW9uKHN0YXRlLCBvcHRpb25zLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPmxvY2Fs
ZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBi
ZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBT
dHJpbmcgbWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oc3RhdGUsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2Fs
ZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVz
dCBmaXQiKTsKICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4KICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNyw3ICsyMjksNyBAQCB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGCiAgICAgaWYgKCFjdXJyZW5j
eS5pc051bGwoKSkgewogICAgICAgICAvLyBhLiBJZiB0aGUgcmVzdWx0IG9mIElzV2VsbEZvcm1l
ZEN1cnJlbmN5Q29kZShjKSwgaXMgZmFsc2UsIHRoZW4gdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMgfHwgIWN1cnJlbmN5Lmlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7Ci0gICAgICAgICAgICBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIEFT
Q0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSIp
KSk7CisgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
UmFuZ2VFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1m
b3JtZWQgY3VycmVuY3kgY29kZSIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yMzYsNyArMjM4LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFs
aXplTnVtYmVyRgogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAg
ICAvLyAyMi4gSWYgcyBpcyAiY3VycmVuY3kiIGFuZCBjIGlzIHVuZGVmaW5lZCwgdGhyb3cgYSBU
eXBlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAoY3VycmVuY3kuaXNOdWxsKCkpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBt
dXN0IGJlIGEgc3RyaW5nIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDIwLDExICs0MjIsMTQgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVOdW1iZXJGb3JtYQogCiBKU1ZhbHVlIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgbnVtYmVyKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICAvLyAxMS4zLjQgRm9ybWF0TnVtYmVyIGFic3RyYWN0IG9wZXJhdGlv
biAoRUNNQS00MDIgMi4wKQogICAgIGlmICghbV9udW1iZXJGb3JtYXQpIHsKICAgICAgICAgY3Jl
YXRlTnVtYmVyRm9ybWF0KHN0YXRlKTsKICAgICAgICAgaWYgKCFtX251bWJlckZvcm1hdCkKLSAg
ICAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIikp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1i
ZXIuIikpKTsKICAgICB9CiAKICAgICAvLyBNYXAgbmVnYXRpdmUgemVybyB0byBwb3NpdGl2ZSB6
ZXJvLgpAQCAtNDQwLDcgKzQ0NSw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
TnVtYmVyKEUKICAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0KCks
IG51bWJlciwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICB9
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3Bl
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIikpKTsKIAogICAgIHJldHVybiBqc1N0cmluZygm
c3RhdGUsIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTgsNiArOTgsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTEuMy4z
IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAv
LyAxLiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0LgogICAgIEludGxOdW1iZXJG
b3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNW
YWx1ZSgpKTsKQEAgLTEwNSwyMiArMTA4LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckYKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBh
dGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFu
ZikKLSAgICAgICAgbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+
dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBuZiA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQo
c3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIW5mKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2Jq
ZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAg
ICAgCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgp
OwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYg
KCFib3VuZEZvcm1hdCkgewotICAgICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5mLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmlu
ZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHBy
b3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJ
bnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOwogICAgICAgICBK
U0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICAgICAgaWYgKCFib3VuZEFyZ3MpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0
ZSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IodGhyb3dTY29wZSwgc3RhdGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91
bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJvdW5kRm9ybWF0
ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdl
dE9iamVjdCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CkBAIC0x
MzUsMTYgKzEzNywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJG
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkg
KEVDTUEtNDAyIDIuMCkKICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5
bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAg
Ly8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00
MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAg
ICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+
dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBudW1i
ZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1Zh
bHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vi
c3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJG
b3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBAQCBib29sIGludGxCb29sZWFuT3B0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsCiAKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQs
IGNvbnN0IGNoYXIqIGZhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyA5LjIuOSBHZXRPcHRp
b24gKG9wdGlvbnMsIHByb3BlcnR5LCB0eXBlLCB2YWx1ZXMsIGZhbGxiYWNrKQogICAgIC8vIEZv
ciB0eXBlPSJzdHJpbmciLgogCkBAIC0xOTYsNyArMTk5LDcgQEAgU3RyaW5nIGludGxTdHJpbmdP
cHRpb24oRXhlY1N0YXRlJiBzdGF0ZQogICAgICAgICAvLyBkLiBJZiB2YWx1ZXMgaXMgbm90IHVu
ZGVmaW5lZCwgdGhlbgogICAgICAgICAvLyBpLiBJZiB2YWx1ZXMgZG9lcyBub3QgY29udGFpbiBh
biBlbGVtZW50IGVxdWFsIHRvIHZhbHVlLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgog
ICAgICAgICBpZiAodmFsdWVzLnNpemUoKSAmJiBzdGQ6OmZpbmQodmFsdWVzLmJlZ2luKCksIHZh
bHVlcy5lbmQoKSwgc3RyaW5nVmFsdWUpID09IHZhbHVlcy5lbmQoKSkgewotICAgICAgICAgICAg
c3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRl
LCBub3RGb3VuZCkpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBub3RGb3VuZCkpOwogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgfQogCkBAIC0yMTAsNiArMjEzLDkgQEAgU3RyaW5nIGludGxTdHJp
bmdPcHRpb24oRXhlY1N0YXRlJiBzdGF0ZQogCiB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCB1
bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjaykKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgLy8gOS4yLjkgR2V0TnVtYmVyT3B0aW9uIChvcHRpb25zLCBwcm9wZXJ0
eSwgbWluaW11bSwgbWF4aW11bSwgZmFsbGJhY2spIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4g
TGV0IG9wdHMgYmUgVG9PYmplY3Qob3B0aW9ucykuCiAgICAgSlNPYmplY3QqIG9wdHMgPSBvcHRp
b25zLnRvT2JqZWN0KCZzdGF0ZSk7CkBAIC0yMzQsNyArMjQwLDcgQEAgdW5zaWduZWQgaW50bE51
bWJlck9wdGlvbihFeGVjU3RhdGUmIHN0YQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IC8vIDEuIElmIHZhbHVlIGlzIE5hTiBvciBsZXNzIHRoYW4gbWluaW11bSBvciBncmVhdGVyIHRo
YW4gbWF4aW11bSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKCEo
ZG91YmxlVmFsdWUgPj0gbWluaW11bSAmJiBkb3VibGVWYWx1ZSA8PSBtYXhpbXVtKSkgewotICAg
ICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJy
b3IoJnN0YXRlLCAqcHJvcGVydHkucHVibGljTmFtZSgpICsgIiBpcyBvdXQgb2YgcmFuZ2UiKSk7
CisgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFu
Z2VFcnJvcigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNOYW1lKCkgKyAiIGlzIG91dCBvZiByYW5n
ZSIpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAgLTUyNSw2ICs1MzEs
OCBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiB7CiAgICAgLy8g
OS4yLjEgQ2Fub25pY2FsaXplTG9jYWxlTGlzdCAobG9jYWxlcykKICAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KTsKICAgICBWZWN0b3I8U3RyaW5nPiBzZWVuOwogCkBAIC01ODgsNyArNTk2LDcgQEAgVmVjdG9y
PFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChFeAogCiAgICAgICAgICAgICAvLyBpaWku
IElmIFR5cGUoa1ZhbHVlKSBpcyBub3QgU3RyaW5nIG9yIE9iamVjdCwgdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uLgogICAgICAgICAgICAgaWYgKCFrVmFsdWUuaXNTdHJpbmcoKSAmJiAha1Zh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgibG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Iikp
OworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBvYmplY3QiKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAgICAgICAgICAgICB9CiAK
QEAgLTYwMyw3ICs2MTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0
KEV4CiAgICAgICAgICAgICAvLyB2aWkuIExldCBjYW5vbmljYWxpemVkVGFnIGJlIENhbm9uaWNh
bGl6ZUxhbmd1YWdlVGFnKHRhZykuCiAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsaXplZFRh
ZyA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZy0+dmFsdWUoJnN0YXRlKSk7CiAgICAgICAg
ICAgICBpZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwg
U3RyaW5nOjpmb3JtYXQoImludmFsaWQgbGFuZ3VhZ2UgdGFnOiAlcyIsIHRhZy0+dmFsdWUoJnN0
YXRlKS51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQo
ImludmFsaWQgbGFuZ3VhZ2UgdGFnOiAlcyIsIHRhZy0+dmFsdWUoJnN0YXRlKS51dGY4KCkuZGF0
YSgpKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogICAgICAg
ICAgICAgfQogCkBAIC04NzEsNiArODc5LDkgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVz
b2x2ZUxvY2FsZShFeAogCiBzdGF0aWMgSlNBcnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICAvLyA5LjIuNiBMb29rdXBTdXBwb3J0ZWRMb2NhbGVzIChhdmFpbGFibGVMb2NhbGVzLCByZXF1
ZXN0ZWRMb2NhbGVzKQogCiAgICAgLy8gMS4gTGV0IHJMb2NhbGVzIGJlIENyZWF0ZUFycmF5RnJv
bUxpc3QocmVxdWVzdGVkTG9jYWxlcykuCkBAIC04ODAsMTEgKzg5MSwxMCBAQCBzdGF0aWMgSlNB
cnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhFCiAgICAgc2l6ZV90IGxlbiA9IHJlcXVlc3Rl
ZExvY2FsZXMuc2l6ZSgpOwogCiAgICAgLy8gMy4gTGV0IHN1YnNldCBiZSBhbiBlbXB0eSBMaXN0
LgotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBKU0FycmF5KiBzdWJz
ZXQgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRl
Y2lkZWQpLCAwKTsKICAgICBpZiAoIXN1YnNldCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUs
ICZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVy
YXRvck9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTQgKzM3LDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgaXRlcmF0b3IsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24g
PSBpdGVyYXRvci5nZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCisgICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24gPSBpdGVyYXRvci5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIENhbGxEYXRhIG5leHRGdW5jdGlvbkNh
bGxEYXRhOwogICAgIENhbGxUeXBlIG5leHRGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
bmV4dEZ1bmN0aW9uLCBuZXh0RnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKG5leHRGdW5jdGlv
bkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG5leHRGdW5jdGlvbkFyZ3VtZW50czsKICAg
ICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTUzLDcgKzU3LDcgQEAgSlNWYWx1ZSBpdGVyYXRv
ck5leHQoRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODksMTggKzkzLDIxIEBA
IEpTVmFsdWUgaXRlcmF0b3JTdGVwKEV4ZWNTdGF0ZSogZXhlYywgSlMKIAogdm9pZCBpdGVyYXRv
ckNsb3NlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBudWxscHRyOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgewogICAgICAgICBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKICAgICAg
ICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICB9Ci0gICAgSlNWYWx1ZSByZXR1cm5GdW5j
dGlvbiA9IGl0ZXJhdG9yLmdldChleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPnJldHVy
bktleXdvcmQpOworICAgIEpTVmFsdWUgcmV0dXJuRnVuY3Rpb24gPSBpdGVyYXRvci5nZXQoZXhl
Yywgdm0ucHJvcGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmV0dXJuRnVuY3Rpb24uaXNV
bmRlZmluZWQoKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICAgICAgdGhyb3dT
Y29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMDgsOSArMTE1LDkgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYQogICAgIENhbGxUeXBlIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShyZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKHJl
dHVybkZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTE4LDcgKzEyNSw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBKU1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChleGVj
LCByZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVuY3Rpb25DYWxsVHlwZSwgcmV0dXJuRnVuY3Rpb25D
YWxsRGF0YSwgaXRlcmF0b3IsIHJldHVybkZ1bmN0aW9uQXJndW1lbnRzKTsKIAogICAgIGlmIChl
eGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNl
cHRpb24pOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNiw3ICsxMzMsNyBAQCB2b2lkIGl0
ZXJhdG9yQ2xvc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaW5uZXJSZXN1bHQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE0NywxNCArMTU0LDE4IEBAIFN0cnVjdHVy
ZSogY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3RTdHIKIAogSlNPYmplY3QqIGNyZWF0ZUl0ZXJh
dG9yUmVzdWx0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBkb25l
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHJlc3VsdE9iamVj
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+aXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAgcmVzdWx0T2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgZG9uZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZG9uZSkp
OwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHZhbHVlUHJvcGVydHlP
ZmZzZXQsIHZhbHVlKTsKKyAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdCh2bSwgZG9uZVByb3Bl
cnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZG9uZSkpOworICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0
KHZtLCB2YWx1ZVByb3BlcnR5T2Zmc2V0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdE9iamVj
dDsKIH0KIAogSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
VmFsdWUgaXRlcmFibGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgCiAgICAgSlNWYWx1ZSBpdGVyYXRvckZ1
bmN0aW9uID0gaXRlcmFibGUuZ2V0KHN0YXRlLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLml0ZXJh
dG9yU3ltYm9sKTsKICAgICBpZiAoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwpAQCAtMTYyLDcgKzE3Myw3IEBAIEpTVmFsdWUgaXRlcmF0b3JGb3JJdGVy
YWJsZShFeGVjU3RhdGUqIHMKICAgICBDYWxsRGF0YSBpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGE7
CiAgICAgQ2FsbFR5cGUgaXRlcmF0b3JGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaXRl
cmF0b3JGdW5jdGlvbiwgaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoaXRlcmF0
b3JGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTcyLDcgKzE4Myw3IEBA
IEpTVmFsdWUgaXRlcmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHMKICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKIAogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUs
IHN0YXRlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTIsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDksIDIwMTItMjAxMywgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTEzMSw2ICsxMzEsOSBA
QCB2b2lkIEpTQXJyYXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiAvLyBEZWZpbmVkIGlu
IEVTNS4xIDE1LjQuNS4xCiBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0
KTsKIAogICAgIC8vIDMuIElmIFAgaXMgImxlbmd0aCIsIHRoZW4KQEAgLTE2Miw3ICsxNjUsNyBA
QCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0CiAgICAgICAgIHVuc2ln
bmVkIG5ld0xlbiA9IGRlc2NyaXB0b3IudmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAg
Ly8gZC4gSWYgbmV3TGVuIGlzIG5vdCBlcXVhbCB0byBUb051bWJlciggRGVzYy5bW1ZhbHVlXV0p
LCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAobmV3TGVuICE9IGRl
c2NyaXB0b3IudmFsdWUoKS50b051bWJlcihleGVjKSkgewotICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTI0Nyw2ICsyNTAsOSBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjCiAvLyBFQ01BIDE1LjQuNS4xCiBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0FycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShp
c1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQpAQCAtMjU1LDcgKzI2MSw3IEBA
IGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXQKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgdW5zaWdu
ZWQgbmV3TGVuZ3RoID0gdmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmICh2YWx1ZS50
b051bWJlcihleGVjKSAhPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5ld0xlbmd0aCkpIHsKLSAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKKyAgICAgICAgICAg
IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+c2V0TGVuZ3Ro
KGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CkBAIC00NjgsNyArNDc0LDkg
QEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogYm9vbCBKU0FycmF5
OjphcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5k
ZXgsIEpTQzo6SlNBcnJheSogb3RoZXJBcnJheSkKIHsKICAgICBMT0dJVCgpOwotICAgIAorCisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIWNhbkZhc3RD
b3B5KHZtLCBvdGhlckFycmF5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00OTQsNyAr
NTAyLDcgQEAgYm9vbCBKU0FycmF5OjphcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgbmV3TGVuZ3RoKSkg
ewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBBU1NFUlQoY29weVR5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwpAQCAtNTExLDYg
KzUxOSw5IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKIHsKICAg
ICBMT0dJVCgpOwogICAgIAorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1f
YnV0dGVyZmx5LmdldCgpOwogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNl
IEFycmF5Q2xhc3M6CkBAIC01MTksOSArNTMwLDkgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgo
RXhlY1N0YXRlKiBleGVjLAogICAgICAgICBpZiAobmV3TGVuZ3RoID49IE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KAogICAgICAgICAgICAgICAgIGV4ZWMsIG5ld0xlbmd0aCwgdGhyb3dFeGNlcHRpb24sCi0gICAg
ICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAg
ICAgICBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgfQotICAgICAgICBjcmVhdGVJ
bml0aWFsVW5kZWNpZGVkKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCk7CisgICAgICAgIGNyZWF0ZUlu
aXRpYWxVbmRlY2lkZWQodm0sIG5ld0xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKQEAgLTUzNSwxMSArNTQ2LDExIEBA
IGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAgICAg
ICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihuZXdMZW5ndGgsIGNvdW50RWxlbWVudHMoKSkp
KSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAg
ICAgICAgICAgICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAgICAg
ICAgIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgZW5z
dXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5ld0xlbmd0aCA+
IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmICghZW5zdXJlTGVu
Z3RoKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgbmV3
TGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU0OCw3ICs1NTksNyBAQCBib29sIEpTQXJy
YXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aFRv
Q2xlYXIgPSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpIC0gbmV3TGVuZ3RoOwogICAgICAgICB1
bnNpZ25lZCBjb3N0VG9BbGxvY2F0ZU5ld0J1dHRlcmZseSA9IDY0OyAvLyBhIGhldXJpc3RpYy4K
ICAgICAgICAgaWYgKGxlbmd0aFRvQ2xlYXIgPiBuZXdMZW5ndGggJiYgbGVuZ3RoVG9DbGVhciA+
IGNvc3RUb0FsbG9jYXRlTmV3QnV0dGVyZmx5KSB7Ci0gICAgICAgICAgICByZWFsbG9jYXRlQW5k
U2hyaW5rQnV0dGVyZmx5KGV4ZWMtPnZtKCksIG5ld0xlbmd0aCk7CisgICAgICAgICAgICByZWFs
bG9jYXRlQW5kU2hyaW5rQnV0dGVyZmx5KHZtLCBuZXdMZW5ndGgpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtNTc3LDYgKzU4OCw5IEBAIEpTVmFsdWUgSlNBcnJh
eTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBMT0dJVCgpOwogICAgIAorICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAgIAogICAg
IHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKQEAgLTYyOCw3ICs2NDIsNyBAQCBKU1ZhbHVlIEpT
QXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
b3JhZ2UtPmxlbmd0aCgpOwogICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAgICAgaWYg
KCFpc0xlbmd0aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
ICAgIH0KIApAQCAtNjYwLDcgKzY3NCw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgLy8gQ2FsbCB0aGUg
W1tEZWxldGVdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyBpbmR4IGFuZCB0
cnVlLgogICAgIGlmICghZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXMsIGV4ZWMsIGluZGV4KSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAgICAgLy8gQ2FsbCB0aGUgW1tQdXRdXSBp
bnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyAibGVuZ3RoIiwgaW5keCwgYW5kIHRy
dWUuCkBAIC02NzYsMjMgKzY5MCwyNiBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhCiB7CiAgICAgTE9HSVQoKTsKICAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOiB7Ci0gICAgICAgIGNyZWF0ZUluaXRp
YWxVbmRlY2lkZWQoZXhlYy0+dm0oKSwgMCk7CisgICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lk
ZWQodm0sIDApOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgQXJyYXlXaXRoVW5kZWNpZGVkOiB7Ci0gICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1
ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZSh2
bSwgdmFsdWUpOwogICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjogewogICAgICAgICBpZiAo
IXZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUoZXhl
Yy0+dm0oKSwgdmFsdWUpOworICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUodm0sIHZh
bHVlKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC03MDYsOSArNzIzLDkgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3Ro
ID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgp
KS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAg
ICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAg
ICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTcyMCwxNSArNzM3LDE1IEBAIHZvaWQg
SlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICAgICAgQVNTRVJUKGxlbmd0aCA8
PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA8IGJ1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91
cygpW2xlbmd0aF0uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIGJ1
dHRlcmZseS0+Y29udGlndW91cygpW2xlbmd0aF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5ndGggKyAxKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1B
WF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1
dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC03MzgsMTMgKzc1NSwxMyBAQCB2b2lkIEpTQXJy
YXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlX
aXRoRG91YmxlOiB7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAg
ICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKKyAgICAgICAgICAgIGNv
bnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwogICAgICAgICAgICAgcHVzaChleGVjLCB2YWx1
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZG91YmxlIHZhbHVl
QXNEb3VibGUgPSB2YWx1ZS5hc051bWJlcigpOwogICAgICAgICBpZiAodmFsdWVBc0RvdWJsZSAh
PSB2YWx1ZUFzRG91YmxlKSB7Ci0gICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3Vz
KGV4ZWMtPnZtKCkpOworICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyh2bSk7
CiAgICAgICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtNzU4LDkgKzc3NSw5IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1B
WF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1
dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC03ODUsNyArODAyLDcgQEAgdm9pZCBKU0FycmF5
OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICAvLyBGYXN0IGNhc2UgLSBwdXNo
IHdpdGhpbiB2ZWN0b3IsIGFsd2F5cyB1cGRhdGUgbV9sZW5ndGggJiBtX251bVZhbHVlc0luVmVj
dG9yLgogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKICAgICAg
ICAgaWYgKGxlbmd0aCA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBz
dG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdLnNldCh2bSwgdGhpcywgdmFsdWUp
OwogICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAg
ICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNzkzLDEwICs4MTAsMTAgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYQogCiAgICAgICAgIC8vIFB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgaW52YWxpZCBsZW5ndGgg
KDJeMzEtMSkgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9yLgog
ICAgICAgICBpZiAoc3RvcmFnZS0+bGVuZ3RoKCkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0
b3JhZ2UtPmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2
bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVl
KTsKICAgICAgICAgICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBz
dGVwIDMuZC4KICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAg
ICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDUyLDcgKzEwNjksMTAgQEAgYm9vbCBKU0FycmF5
OjpzaGlmdENvdW50V2l0aEFueUluZGV4aW5nVAogYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRX
aXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5z
aWduZWQgY291bnQsIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBMT0dJVCgpOwotICAg
IAorCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwog
CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwpAQCAtMTA3MSwxMyAr
MTA5MSwxMyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAgICAg
ICAgIHN0b3JhZ2UgPSBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICBzdG9y
YWdlLT5tX2luZGV4QmlhcyAtPSBjb3VudDsKICAgICAgICAgc3RvcmFnZS0+c2V0VmVjdG9yTGVu
Z3RoKHZlY3Rvckxlbmd0aCArIGNvdW50KTsKLSAgICAgICAgc2V0QnV0dGVyZmx5V2l0aG91dENo
YW5naW5nU3RydWN0dXJlKGV4ZWMtPnZtKCksIG5ld0J1dHRlcmZseSk7CisgICAgICAgIHNldEJ1
dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKICAgICB9
IGVsc2UgaWYgKCFtb3ZlRnJvbnQgJiYgdmVjdG9yTGVuZ3RoIC0gbGVuZ3RoID49IGNvdW50KQog
ICAgICAgICBzdG9yYWdlID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOwot
ICAgIGVsc2UgaWYgKHVuc2hpZnRDb3VudFNsb3dDYXNlKGV4ZWMtPnZtKCksIG1vdmVGcm9udCwg
Y291bnQpKQorICAgIGVsc2UgaWYgKHVuc2hpZnRDb3VudFNsb3dDYXNlKHZtLCBtb3ZlRnJvbnQs
IGNvdW50KSkKICAgICAgICAgc3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwogICAgIGVsc2Ugewot
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0xMDk3LDYgKzExMTcsOSBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhCiAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgp
OwogICAgIAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKQEAgLTExMTIsMTAgKzExMzUs
MTAgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICAv
LyBXZSBtYXkgaGF2ZSB0byB3YWxrIHRoZSBlbnRpcmUgYXJyYXkgdG8gZG8gdGhlIHVuc2hpZnQu
IFdlJ3JlIHdpbGxpbmcgdG8gZG8gc28KICAgICAgICAgLy8gb25seSBpZiBpdCdzIG5vdCBob3Jy
aWJseSBzbG93LgogICAgICAgICBpZiAob2xkTGVuZ3RoIC0gc3RhcnRJbmRleCA+PSBNSU5fU1BB
UlNFX0FSUkFZX0lOREVYKQotICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJh
eVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZShleGVj
LT52bSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFn
ZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAg
ICAgIAotICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBvbGRMZW5ndGggKyBj
b3VudCkpIHsKLSAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIG9sZExlbmd0aCArIGNvdW50KSkgeworICAgICAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwpAQCAtMTEyNSw3ICsxMTQ4LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRX
aXRoQW55SW5kZXhpbgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+
IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBidXR0ZXJmbHktPmNvbnRp
Z3VvdXMoKVtpXS5nZXQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJ
bmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRl
eCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwogICAgICAgICB9CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gb2xkTGVuZ3RoOyBpLS0gPiBzdGFydEluZGV4OykgewpAQCAtMTE0
OCwxMCArMTE3MSwxMCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGlu
CiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVudGlyZSBhcnJheSB0byBkbyB0
aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBkbyBzbwogICAgICAgICAvLyBvbmx5IGlmIGl0
J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAgIGlmIChvbGRMZW5ndGggLSBzdGFydEluZGV4
ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0gICAgICAgICAgICByZXR1cm4gdW5zaGlmdENv
dW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlT
dG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uo
dm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG9s
ZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgb2xkTGVuZ3RoICsgY291bnQpKSB7
CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0g
bV9idXR0ZXJmbHkuZ2V0KCk7CkBAIC0xMTYxLDcgKzExODQsNyBAQCBib29sIEpTQXJyYXk6OnVu
c2hpZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExl
bmd0aDsgaS0tID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIGRvdWJsZSB2ID0gYnV0dGVy
Zmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodiAh
PSB2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFn
ZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShl
eGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5k
ZXg7KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDkgQEAgU3RydWN0dXJlKiBKU0FycmF5QnVmZmVy
Q29uc3RydWN0b3I6OmNyZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
QXJyYXlCdWZmZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPQogICAgICAgICBqc0Nhc3Q8SlNB
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIApAQCAtOTQsMTkg
Kzk3LDIxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICAK
ICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCAxKTsKICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGFy
cmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgSlNBcnJh
eUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGFycmF5
QnVmZmVyU3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZm
ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiQXJyYXlC
dWZmZXIiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
IkFycmF5QnVmZmVyIikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
MDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTQgKzM3LDE3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3Rv
RnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAgCiAgICAg
SlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2Ygc2xpY2Ug
bXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIHNsaWNlIG11
c3QgYmUgYW4gYXJyYXkgYnVmZmVyLiIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJTbGljZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlNs
aWNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKSk7CiAgICAgCiAgICAgaW50MzJf
dCBiZWdpbiA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtNjAsMTEgKzYzLDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmEKICAgICAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0J1
ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7CiAgICAgaWYgKCFu
ZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKTsK
ICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOwog
ICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVGhyb3dTY29wZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVz
LmgiCiAKICNlbmRpZiAvLyBKU0NJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBt
a0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
Ny0yMDA4LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC03OCw2ICs3OCw4IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJl
clNsb3dDYXNlKEV4ZWNTdGEKIAogSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2Uo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CiAgICAgQVNTRVJUKCFpc0NlbGwoKSk7CiAKICAgICBpZiAoaXNJbnQzMigpIHx8IGlz
RG91YmxlKCkpCkBAIC04Niw4ICs4OCw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNs
b3dDYXNlKEV4ZWMKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRl
Qm9vbGVhbihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAKICAgICBBU1NFUlQoaXNV
bmRlZmluZWRPck51bGwoKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICB2bS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7Cisg
ICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9y
KGV4ZWMsICp0aGlzKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEwOCw2ICsxMDks
OSBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEV4ZWNTdGF0CiAKIEpTT2JqZWN0
KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChpc1N0cmluZygpKQog
ICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJv
dG90eXBlKCk7CkBAIC0xMjEsOCArMTI1LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNp
emVQcm90b3R5cGUoRQogICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5ib29sZWFuUHJvdG90eXBlKCk7CiAKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CisgICAgdGhyb3dTY29wZS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEzMCw2ICsxMzMsNyBAQCBKU09iamVjdCogSlNW
YWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1
cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90
LmlzU3RyaWN0TW9kZSgpKTsKQEAgLTE0NCw3ICsxNDgsNyBAQCBib29sIEpTVmFsdWU6OnB1dFRv
UHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmotPmdldFBy
b3RvdHlwZURpcmVjdCgpOwogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgewog
ICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU2LDcgKzE2
MCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAg
aWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
cyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC0x
ODAsMTIgKzE4NCwxNSBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSog
CiAgICAgfQogICAgIAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU1Zh
bHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoKnRoaXMsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIHB1dFRv
UHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFs
dWUsIHNsb3QpOwpAQCAtMjAxLDcgKzIwOCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRp
dmVCeUluZGV4KEV4ZWMKICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAo
c2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0zMjYsMTMgKzMzMywxNSBAQCBib29sIEpTVmFsdWU6OmlzVmFs
aWRDYWxsZWUoKQogCiBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycm9yKSBjb25zdAogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBhdXRvIGVycm9yVmFsdWUgPSBbJl0gKCkgLT4gSlNTdHJpbmcqIHsKICAgICAgICAg
aWYgKHJldHVybkVtcHR5U3RyaW5nT25FcnJvcikKICAgICAgICAgICAgIHJldHVybiBqc0VtcHR5
U3RyaW5nKGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9OwogICAgIAotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFpc1N0cmluZygpKTsKICAgICBpZiAo
aXNJbnQzMigpKSB7CiAgICAgICAgIGF1dG8gaW50ZWdlciA9IGFzSW50MzIoKTsKQEAgLTM1MSw3
ICszNjAsNyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjCiAgICAg
aWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZp
bmVkU3RyaW5nKCk7CiAgICAgaWYgKGlzU3ltYm9sKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmlu
ZyIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRl
cmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0
dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjA0ODcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02MzMsOCArNjMzLDExIEBAIGlubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OnRvUHJpbWl0aXZlKEV4ZWMKIAogaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9Q
cmVmZXJyZWRQcmltaXRpdmVUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJpbWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5n
LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRl
cmFsKCJQcmltaXRpdmUgaGludCBpcyBub3QgYSBzdHJpbmcuIikpOwogICAgICAgICByZXR1cm4g
Tm9QcmVmZXJlbmNlOwogICAgIH0KIApAQCAtNjQ5LDcgKzY1Miw3IEBAIGlubGluZSBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlIHRvUHJlZmVycmUKICAgICBpZiAoV1RGOjplcXVhbChoaW50U3RyaW5n
LCAic3RyaW5nIikpCiAgICAgICAgIHJldHVybiBQcmVmZXJTdHJpbmc7CiAKLSAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50IHRvIG1h
dGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1iZXInLCAnc3RyaW5nJy4iKSk7CisgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBwcmltaXRp
dmUgaGludCB0byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmluZycuIikp
OwogICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CiB9CiAKQEAgLTEwMzEsOSArMTAzNCwxMiBAQCBp
bmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpCiAKIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU1ZhbHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDE2ICs0NywxOCBA
QCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVy
LAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwogICAg
IGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0
IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKSk7CisgICAgICAgIHRocm93Vk1FcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBv
ZiByYW5nZSBvZiBidWZmZXIiKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9m
ZnNldCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJCeXRlIG9mZnNl
dCBpcyBub3QgYWxpZ25lZCIpKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5dGUgb2Zmc2V0IGlz
IG5vdCBhbGlnbmVkIikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAogICAg
ICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0
aW9uQ29udGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VSVChjb250ZXh0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIyLDEyICsxMjIsMTUgQEAg
U3RydWN0dXJlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGVTdAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRh
Vmlldyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERh
dGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2Yg
RGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyIpKTsKICAgICAKICAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZz
ZXQpIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNl
dCkiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE0Myw3ICsxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwog
ICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5n
dGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiKSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CiAK
ICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsKICAgICB1bmlvbiB7CkBAIC0xNjcsMTIgKzE3MCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBn
ZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNE
YXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVz
dCBiZSBhIERhdGFWaWV3IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBt
dXN0IGJlIGEgRGF0YVZpZXciKSk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFuZCB2YWx1ZSki
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFu
ZCB2YWx1ZSkiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTE5OCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nl
c3MiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIp
KSk7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGFW
aWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0yMjAsMjcgKzIyNiwzNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmll
dyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMg
fHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4
cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHZpZXctPmpzQnVmZmVyKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpT
RGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBl
eHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1
ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHlu
YW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5
cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJEYXRhVmlldy5w
cm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmJ5dGVPZmZzZXQo
KSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpKSk7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0
ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpKSk7CiB9CiAKIGNvbnN0
IENsYXNzSW5mbyBKU0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGdW5jdGlvbikgfTsKQEAgLTMyMSw2ICszMjMs
OSBAQCBzdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKEV4CiAKIEVuY29kZWRK
U1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKICAgICBKU1Zh
bHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oZXhlYywgdGhpc09iaik7CkBAIC0z
MzUsNyArMzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKAog
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwog
ICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYWxsZXIpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBz
dHJpY3QgY2FsbGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQg
dG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNDI0LDE0ICs0Mjks
MTYgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TgogYm9vbCBKU0Z1
bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2VsbCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNP
YmplY3QpKSkKLSAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChvcmRpbmFyeVNldFNsb3co
ZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwg
c2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlCb3VuZE5hbWVJZk5l
ZWRlZCh2bSwgZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUuZm9yd2FyZChCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSB7CkBAIC00NDMsMjEgKzQ1MCwyMSBAQCBib29s
IEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEg
ZnVuY3Rpb24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNp
bmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5
U2xvdCBkb250Q2FjaGUodGhpc09iamVjdCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKSk7CiAgICAgfQogICAgIGlmICh0aGlzT2JqZWN0
LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkgJiYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGxlcikpIHsKICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgdGhlIHByb3BlcnR5
IHRvIGJlIHJlaWZpZWQsIGlmIHRoaXMgaXMgbm90IGFscmVhZHkgdGhlIGNhc2UhCiAgICAgICAg
IGJvb2wgb2theSA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2theSwgb2theSk7Ci0gICAgICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
ICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICB9CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPmNhbGxlcikgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVk
ZWQodm0sIGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhyb3dT
Y29wZS5mb3J3YXJkKEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC00
ODMsNiArNDkwLDggQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIAog
Ym9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
ICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAg
ICB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFtZUlmTmVlZGVkKHZtLCBleGVjLCBwcm9wZXJ0eU5h
bWUpOwpAQCAtNTIzLDI3ICs1MzIsMjcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iagogICAgICAKICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50
KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNl
cHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRl
c2NyaXB0b3IuZW51bWVyYWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAo
dGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVy
YWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQ
cmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4
Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
QXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxl
IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBpZiAoIXZhbHVlQ2hlY2spIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9u
KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0
aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdfaAogCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
clZpZXcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlSW5saW5lcy5oIgogI2luY2x1ZGUgIlRvTmF0
aXZlRnJvbVZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTY4LDEyICsxNjksMTUgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgc2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgICAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgICAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlID0gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4o
ZXhlYywganNWYWx1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoaXNOZXV0ZXJlZCgpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjA0ODcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODAsOCArODAsMTEgQEAgU3RydWN0
dXJlKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cgogdGVtcGxhdGU8dHlwZW5hbWUgVmll
d0NsYXNzPgogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdG
cm9tSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1
ZSBpdGVyYXRvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wu
SXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBkaWQgbm90IHJldHVybiBhbiBvYmplY3Qu
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVND
SUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBkaWQgbm90
IHJldHVybiBhbiBvYmplY3QuIikpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgc3RvcmFn
ZTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTE4LDggKzEyMSwxMCBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
CiBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFs
dWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbGVu
Z3RoT3B0KQogewotICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShmaXJz
dEFyZ3VtZW50KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCisgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGZpcnN0QXJndW1lbnQpOwogCiAgICAgaWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVy
ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4oZmlyc3RWYWx1ZSkpIHsKICAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBqc0J1ZmZlci0+aW1wbCgpOwpAQCAtMTI5LDcg
KzEzNCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAg
ICAgICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGlmICgoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUgVmlld0NsYXNzOjpl
bGVtZW50U2l6ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMs
ICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlw
bGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1Jh
bmdlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkFycmF5QnVmZmVyIGxlbmd0aCBtaW51cyB0aGUg
Ynl0ZU9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgZWxlbWVudCBzaXplIik7CiAgICAg
ICAgICAgICBsZW5ndGggPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpIC8gVmlld0Ns
YXNzOjplbGVtZW50U2l6ZTsKIAogICAgICAgICB9CkBAIC0xMzksNyArMTQ0LDcgQEAgaW5saW5l
IEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgIEFTU0VSVCghb2Zmc2V0ICYm
ICFsZW5ndGhPcHQpOwogICAgIAogICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdl
VHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIEFycmF5QnVmZmVyIGZvciB0aGUgZmlyc3QgYXJndW1l
bnQuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50
LiIpKTsKICAgICAKICAgICAvLyBGb3IgZXZlcnl0aGluZyBidXQgRGF0YVZpZXcsIHdlIGFsbG93
IGNvbnN0cnVjdGlvbiB3aXRoIGFueSBvZjoKICAgICAvLyAtIEFub3RoZXIgYXJyYXkuIFRoaXMg
Y3JlYXRlcyBhIGNvcHkgb2YgdGhlIG9mIHRoYXQgYXJyYXkuCkBAIC0xNzQsNyArMTc5LDcgQEAg
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICAgICAgICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShpdGVyYXRvckZ1bmMsIGNhbGxEYXRhKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9s
Lkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxlZC4iKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVu
dCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKIAogICAgICAgICAgICAgICAgICAgICBBcmdMaXN0IGFy
Z3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGwoZXhl
YywgaXRlcmF0b3JGdW5jLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJndW1lbnRzKTsK
QEAgLTIwNiwxNSArMjExLDE1IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXIKICAgICBpZiAoZmlyc3RWYWx1ZS5pc0ludDMyKCkpCiAgICAgICAgIGxlbmd0aCA9IGZp
cnN0VmFsdWUuYXNJbnQzMigpOwogICAgIGVsc2UgaWYgKCFmaXJzdFZhbHVlLmlzTnVtYmVyKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFs
aWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBh
cmd1bWVudCIpKTsKICAgICBlbHNlIHsKICAgICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50
PihmaXJzdFZhbHVlLmFzTnVtYmVyKCkpOwogICAgICAgICBpZiAobGVuZ3RoICE9IGZpcnN0VmFs
dWUuYXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IChmcmFjdGlvbmFsIGxl
bmd0aHMgbm90IGFsbG93ZWQpIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJn
dW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBub3QgYWxsb3dlZCkiKSk7CiAgICAgfQogCiAgICAg
aWYgKGxlbmd0aCA8IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgIlJl
cXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSIpOwog
ICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxlbmd0aCk7CiB9
CiAKQEAgLTIyNCw2ICsyMjksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEdlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gYXNJbnRlcm5h
bEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKICAgICBTdHJ1Y3R1cmUqIHBhcmVudFN0cnVjdHVy
ZSA9IGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xh
c3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwgcGFyZW50U3RydWN0dXJlKTsKQEAgLTIzNCw3ICsyNDIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlCiAKICAgICBpZiAoIWFyZ0NvdW50KSB7CiAg
ICAgICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZp
ZXcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkRhdGFWaWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4i
KSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkRhdGFWaWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudC4iKSk7CiAKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xh
c3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIDApKTsKICAgICB9CkBAIC0yNjgsNyArMjc2LDkg
QEAgQ29uc3RydWN0VHlwZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbgogdGVtcGxhdGU8dHlw
ZW5hbWUgVmlld0NsYXNzPgogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGV4ZWMsIFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBWaWV3Q2xhc3M6OmluZm8oKS0+Y2xh
c3NOYW1lKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsMTUgKzQ4LDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0
KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1
Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAo
IWNvbnRleHQpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0K
LSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KGV4
ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0o
KSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcodm0sIGNv
bnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTY0LDE3ICs2NiwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIENvbnN0
cnVjdGlvbkNvbnRleHQgY29udGV4dCgKLSAgICAgICAgZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBs
ZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwKKyAgICAgICAgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksCiAgICAgICAgIENv
bnN0cnVjdGlvbkNvbnRleHQ6OkRvbnRJbml0aWFsaXplKTsKICAgICBpZiAoIWNvbnRleHQpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KGV4ZWMtPnZt
KCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KGV4ZWMtPnZtKCksIGNv
bnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgICAg
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5o
ZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOworICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTgzLDIyICs4NywyNCBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5l
CiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0g
cGFzc2VkQnVmZmVyOwogICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aChi
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5ndGggb3V0IG9m
IHJhbmdlIG9mIGJ1ZmZlciIpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZl
ciIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZm
ZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemUpKSB7Ci0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCAiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSk7CisgICAgICAgIHRocm93U2NvcGUu
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQnl0ZSBvZmZzZXQg
aXMgbm90IGFsaWduZWQiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBD
b25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZt
LCBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PihleGVjLT52
bSgpLmhlYXApKQotICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyhleGVjLT52bSgpLCBj
b250ZXh0KTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgICAg
ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0u
aGVhcCkpCisgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKKyAg
ICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC0xMjgsMTAgKzEzNCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKICAgICBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAg
ICAgaWYgKGNhbkFjY2Vzc1JhbmdlUXVpY2tseShvZmZzZXQsIGxlbmd0aCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgY29uc2lzdGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0
aCBhcmUgb3V0IG9mIGJvdW5kcyIpKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGNvbnNpc3Rpbmcgb2Ygb2Zmc2V0IGFu
ZCBsZW5ndGggYXJlIG91dCBvZiBib3VuZHMiKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC0yOTAsOCArMjk4LDEwIEBAIEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGEKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBFbmNvZGVkSlNWYWx1ZSBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dGhyb3dOZXV0ZXJlZFR5cGVkQXJyYXlUeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QsIFByb3BlcnR5TmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOwogICAgIEFTU0VSVF9VTlVTRUQob2JqZWN0LCBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqPihKU1ZhbHVlOjpkZWNvZGUob2JqZWN0KSktPmlzTmV1dGVyZWQoKSk7Ci0gICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRh
Y2hlZEVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29w
ZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3
KiBzcGVjaWVzQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGV4ZW1wbGFyLCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgY29uc3QgRnVuY3RvciYgZGVmYXVsdENvbnN0cnVj
dG9yKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gZXhlbXBsYXItPmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1Nyw3
IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnUKICAgICBpZiAoY29u
c3RydWN0b3IuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRDb25zdHJ1Y3Rv
cigpOwogICAgIGlmICghY29uc3RydWN0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImNvbnN0cnVjdG9yIFByb3BlcnR5IHNob3VsZCBu
b3QgYmUgbnVsbCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91bGQgbm90IGJlIG51bGwiKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzMsMTEgKzc2LDExIEBAIGlu
bGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnUKICAgICAgICAgaWYgKCF2aWV3
LT5pc05ldXRlcmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdmlldzsKIAotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic3Bl
Y2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpKTsKKyAg
ICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoInNwZWNpZXMg
Y29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciKSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk4LDExICsxMDEsMTQgQEAgaW5saW5lIHVuc2lnbmVkIGFy
Z3VtZW50Q2xhbXBlZEluZGV4RnJvbQogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNT
ZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyAyMi4yLjMuMjIKICAgICBW
aWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVl
KCkpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25l
IGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsK
IAogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDIpIHsKQEAgLTExMCwyNyArMTE2LDI3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKG9m
ZnNldE51bWJlciA8IDApCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZXhl
YywgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVJhbmdlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIk9mZnNldCBzaG91bGQgbm90IGJl
IG5lZ2F0aXZlIik7CiAgICAgICAgIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om1pbihvZmZzZXROdW1iZXIsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSkpOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwog
CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgSlNP
YmplY3QqIHNvdXJjZUFycmF5ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXNvdXJjZUFycmF5KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHNob3Vs
ZCBiZSBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIG9i
amVjdCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICBpZiAoaXNUeXBlZFZpZXcoc291
cmNlQXJyYXktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSB7CiAgICAgICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiBzb3VyY2VWaWV3ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3
Kj4oc291cmNlQXJyYXkpOwogICAgICAgICBpZiAoc291cmNlVmlldy0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKIAogICAgICAgICBsZW5ndGggPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZl
clZpZXcqPihzb3VyY2VBcnJheSktPmxlbmd0aCgpOwogICAgIH0gZWxzZQotICAgICAgICBsZW5n
dGggPSBzb3VyY2VBcnJheS0+Z2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgbGVuZ3RoID0gc291cmNlQXJyYXktPmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogCiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTQyLDExICsxNDgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5
V2l0aGluKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyAyMi4yLjMuNQogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKKyAg
ICAvLyAyMi4yLjMuNQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xh
c3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwogCiAgICAgbG9uZyBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsK
ICAgICBsb25nIHRvID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAw
LCBsZW5ndGgpOwpAQCAtMTY1LDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2VuZXJpY1R5cGUKICAgICBsb25nIGNvdW50ID0gc3RkOjptaW4obGVuZ3RoIC0gc3RkOjpt
YXgodG8sIGZyb20pLCBmaW5hbCAtIGZyb20pOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1
dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlw
ZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIG1lbW1vdmUoYXJyYXkg
KyB0bywgYXJyYXkgKyBmcm9tLCBjb3VudCAqIHRoaXNPYmplY3QtPmVsZW1lbnRTaXplKTsKQEAg
LTE3Nyw5ICsxODUsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRl
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVj
dCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTE5Myw3ICsyMDMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9y
TWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9
IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAgICAgYXV0byB0YXJnZXRPcHRpb24gPSBWaWV3
Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbih2YWx1ZVRvRmlu
ZCk7CkBAIC0yMjEsMTQgKzIzMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIC8vIDIyLjIuMy4xMwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKKyAgICAvLyAyMi4yLjMu
MTMKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdl
KTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtMjM4LDcg
KzI1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0
ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRh
Y2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBl
KiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAgICAgYXV0byB0YXJnZXRPcHRp
b24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbih2
YWx1ZVRvRmluZCk7CkBAIC0yNTgsOSArMjcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2VuZXJpY1R5cGUKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9
IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmpl
Y3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
dHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gMjIuMi4zLjE0CiAgICAgYXV0
byBqb2luV2l0aFNlcGFyYXRvciA9IFsmXSAoU3RyaW5nVmlldyBzZXBhcmF0b3IpIC0+IEVuY29k
ZWRKU1ZhbHVlIHsKQEAgLTI4OSwyMSArMzA0LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Nj
b3BlLCBleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsK
ICAgICByZXR1cm4gam9pbldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yU3RyaW5nLT52aWV3KGV4ZWMp
LmdldCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhP
ZihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gMjIuMi4zLjE2CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKworICAgIC8v
IDIyLjIuMy4xNgogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVh
c3Qgb25lIGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVu
dCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCkBA
IC0zMjYsNyArMzQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKICAgICBpZiAo
dGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBhdXRvIHRhcmdldE9w
dGlvbiA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
KHZhbHVlVG9GaW5kKTsKICAgICBpZiAoIXRhcmdldE9wdGlvbikKQEAgLTM4MywxMCArNDAwLDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIHRlbXBsYXRlPHR5
cGVuYW1lIFZpZXdDbGFzcz4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIC8vIDIyLjIuMy4yMQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxW
aWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1
dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlw
ZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIHN0ZDo6cmV2ZXJzZShh
cnJheSwgYXJyYXkgKyB0aGlzT2JqZWN0LT5sZW5ndGgoKSk7CkBAIC0zOTcsMTAgKzQxNywxMyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIC8vIDIyLjIuMy4yNQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3
Q2xhc3MqPihleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdGhpc09iamVjdC0+c29ydCgpOwogCkBAIC00MTAsMTMg
KzQzMywxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICAvLyAyMi4yLjMuMjYKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCisgICAgLy8gMjIuMi4zLjI2CiAgICAgSlNGdW5jdGlv
biogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBW
aWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAg
IHVuc2lnbmVkIHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtNDI4LDcg
KzQ1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0
ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRh
Y2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBDbGFtcCBlbmQgdG8gYmVnaW4uCiAgICAgZW5k
ID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7CkBAIC00NDgsNyArNDczLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogCiAgICAgQVNTRVJUKCFyZXN1bHQtPmlzTmV1
dGVyZWQoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwog
CiAgICAgLy8gV2UgcmV0dXJuIGVhcmx5IGhlcmUgc2luY2Ugd2UgZG9uJ3QgYWxsb2NhdGUgYSBi
YWNraW5nIHN0b3JlIGlmIGxlbmd0aCBpcyAwIGFuZCBtZW1tb3ZlIGRvZXMgbm90IGxpa2UgbnVs
bHB0cnMKICAgICBpZiAoIWxlbmd0aCkKQEAgLTQ5NCwxMyArNTE5LDE1IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gMjIuMi4z
LjIzCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKworICAgIC8vIDIyLjIuMy4yMwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgVmlld0NsYXNzKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBHZXQgdGhl
IGxlbmd0aCBoZXJlOyBsYXRlciBhc3NlcnQgdGhhdCB0aGUgbGVuZ3RoIGRpZG4ndCBjaGFuZ2Uu
CiAgICAgdW5zaWduZWQgdGhpc0xlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwpAQCAtNTUy
LDcgKzU3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHJlc3VsdCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAotICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3
Iik7CisgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgInNwZWNpZXMgY29uc3Ry
dWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwMiwxOSArMTIwMiwyMiBAQCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sq
IEpTR2xvYmFsT2JqZWN0CiAKIFVubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclRE
WikKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSA/IERl
YnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlID0gZXhlY3V0YWJsZS0+ZXhlY3V0YWJsZUluZm8oKS5ldmFsQ29udGV4dFR5cGUoKTsKICAg
ICAKLSAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0oKS5j
b2RlQ2FjaGUoKS0+Z2V0RXZhbENvZGVCbG9jaygKLSAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwg
ZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0
cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVz
VW5kZXJURFopOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSB2bS5jb2RlQ2FjaGUoKS0+Z2V0RXZhbENvZGVCbG9jaygKKyAgICAgICAgdm0sIGV4ZWN1dGFi
bGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlh
Ymxlc1VuZGVyVERaKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dl
cigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRl
cigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JP
YmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAgICAgdGhyb3dWTUVycm9y
KHRocm93U2NvcGUsIGNhbGxGcmFtZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRh
YmxlLT5zb3VyY2UoKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEy
MjMsMTYgKzEyMjYsMTkgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6
YwogCiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVh
dGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUGFyc2VyRXJyb3Ig
ZXJyb3I7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVi
dWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKLSAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKLSAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0
YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2Vy
TW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygK
KyAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dlck1vZGUsIGVycm9yKTsKIAogICAgIGlmICho
YXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1l
LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1l
c3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291
cmNlKCkpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgZXJy
b3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9u
IDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDA5LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNh
KQogICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKgpAQCAtNzYsMTEgKzc2
LDE0IEBAIHN0YXRpYyBCaXRtYXA8MjU2PiBtYWtlQ2hhcmFjdGVyQml0bWFwKGMKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgSlNWYWx1ZSBlbmNvZGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RFc2NhcGUsIGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTgu
Mi42LjEuMSBSdW50aW1lIFNlbWFudGljczogRW5jb2RlICggc3RyaW5nLCB1bmVzY2FwZWRTZXQg
KQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVuY29kZQogCi0g
ICAgYXV0byB0aHJvd0V4Y2VwdGlvbiA9IFtleGVjXSB7Ci0gICAgICAgIHJldHVybiBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiU3RyaW5nIGNvbnRhaW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOworICAg
IGF1dG8gdGhyb3dFeGNlcHRpb24gPSBbJnRocm93U2NvcGUsIGV4ZWNdIHsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwgVVRGLTE2IHNlcXVlbmNl
LiIpKSk7CiAgICAgfTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKQEAgLTE2Myw2ICsx
NjYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBBTFdBWVNfSU5MSU5FCiBzdGF0
aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDaGFyVHlwZSogY2hhcmFj
dGVycywgaW50IGxlbmd0aCwgY29uc3QgQml0bWFwPDI1Nj4mIGRvTm90VW5lc2NhcGUsIGJvb2wg
c3RyaWN0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBp
bnQgayA9IDA7CiAgICAgVUNoYXIgdSA9IDA7CkBAIC0yMDMsNyArMjA5LDcgQEAgc3RhdGljIEpT
VmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgYwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGNoYXJMZW4gPT0gMCkgewogICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVycm9yIikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVUkkgZXJyb3IiKSkpOwogICAgICAgICAgICAg
ICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3QiIG1vZGUgaXMg
dGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gRm9yIHRoYXQsIGl0
J3MgZ29vZCB0byBzdXBwb3J0IHRoZSB3b25reSAiJXUiIHN5bnRheCBmb3IgY29tcGF0aWJpbGl0
eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgICAgIGlmIChrIDw9IGxlbmd0aCAtIDYgJiYgcFsx
XSA9PSAndScKQEAgLTY0MCwxMyArNjQ2LDE2IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VGbG9hdChT
dHJpbmdWaWV3IHMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2
YWwoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHggPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh4KTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFi
bGVkKCkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
dmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkp
OworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJv
cihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBAIC04
NDUsMTIgKzg1NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNV
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
fQogICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAn
Y2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gc3RyaWN0IG1vZGUuIik7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKyAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiJ2FyZ3VtZW50cycs
ICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2Rl
LiIpOwogfQogCiBjbGFzcyBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yIHsKQEAgLTg4Nyw4
ICs5MDAsMTEgQEAgcHJpdmF0ZToKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlz
VmFsdWUoKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxs
IHRvIG9iamVjdCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCisgICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0
byBvYmplY3QiKSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkp
OwogCkBAIC05NDQsOCArOTYwLDExIEBAIGJvb2wgY2hlY2tQcm90b1NldHRlckFjY2Vzc0FsbG93
ZWQoRXhlY1MKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9T
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIp
KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCisgICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKSk7
CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAKQEAgLTk2Miw3ICs5
ODEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQCiAgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7CiAgICAgdGhpc09iamVjdC0+
c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDExICsxMTAsMTQgQEAgdm9pZCBK
U01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleAogCiBib29sIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9k
dWxlRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJl
IGltbXV0YWJsZS4KICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0g
dGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKICAgICBpZiAocmVzb2x1dGlv
bi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5Niw5IEBAIHZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGQKIAog
Ym9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtZ2V0b3ducHJvcGVydHktcAogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKQEAgLTEy
NSw3ICsxMjgsNyBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAg
ICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9k
dWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCB0cmFtcG9s
aW5lU2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldCk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSB0YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwg
ZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKKyAgICAgICAgYm9v
bCBmb3VuZCA9IHRhcmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3Bl
cnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRy
YW1wb2xpbmVTbG90KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogCiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9w
ZXJ0eU5hbWUpOwpAQCAtMTMzLDcgKzEzNiw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmdldE93blByb3AKIAogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGgg
VERaIHZhbHVlLCB0aHJvdyBhIHJlZmVyZW5jZSBlcnJvci4KICAgICAgICAgaWYgKCF2YWx1ZSkg
ewotICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsK
KyAgICAgICAgICAgIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCBleGVjLCBjcmVhdGVURFpFcnJv
cihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMTU4
LDE2ICsxNjEsMjIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcAog
CiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZl
cgogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTE4OSwxNyArMTk4LDIzIEBAIHZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3AKIAogYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCiAgICAg
aWYgKHNob3VsZFRocm93KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBl
eHRlbnNpYmxlLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhh
dCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihleGVj
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhIG1vZHVsZSBu
YW1lc3BhY2Ugb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoInx0aGlzfCBzaG91bGQgYmUgYSBtb2R1bGUgbmFt
ZXNwYWNlIG9iamVjdCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnBy
b3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCksIG9iamVjdCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZp
c2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2NzgsOSBAQCBzdGF0aWMgdm9pZCBn
ZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSogCiAKIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBK
U01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLWdldG1vZHVsZW5hbWVzcGFjZQogICAgIGlmIChtX21vZHVsZU5hbWVzcGFjZU9i
amVjdCkKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOwpAQCAt
NjkxLDExICs2OTQsMTEgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3Jk
OgogICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0g
cmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUuZ2V0KCkp
KTsKICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgY2FzZSBSZXNv
bHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhl
YywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcobmFtZS5nZXQo
KSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQuIikpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAg
ICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGlu
ZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmll
cy4iKSk7CisgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1h
a2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29s
dmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CkBAIC03MDcs
MjkgKzcxMCwzMyBAQCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVSZWNvcmQ6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+
dm0oKSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRo
aXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQo
dm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlz
LCB1bmFtYmlndW91c05hbWVzKSk7CiAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmdldCgpOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSk7CiAgICAg
aWYgKCFleGVjdXRhYmxlKSB7Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAg
ICAgIHRocm93U3ludGF4RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgZXhlY3V0YWJsZSk7CisgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQodm0sIHRo
aXMsIGV4ZWN1dGFibGUpOwogICAgIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKGV4ZWMsIGV4ZWN1
dGFibGUpOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlv
bgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUtPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKTsKLSAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVj
LT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7Ci0KLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50
ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFs
dWUoKSwgdGhpcyk7CiAKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCiAgICAgLy8g
c2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDkuCkBAIC03NDIsMTUgKzc0OSwxNSBAQCB2b2lkIEpT
TW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9u
IHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUp
OwogICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50
YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFt
ZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZv
dW5kLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJp
bmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXM6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBt
YWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0
byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAgIHRocm93
U3ludGF4RXJyb3IodGhyb3dTY29wZSwgZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBv
cnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwo
KSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRp
bmdzLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVz
b2x1dGlvbjo6VHlwZTo6RXJyb3I6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVs
dCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAg
ICAgICAgICAgIHRocm93U3ludGF4RXJyb3IodGhyb3dTY29wZSwgZXhlYywgbWFrZVN0cmluZygi
SW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNv
bHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CkBAIC03NzYs
MTUgKzc4MywxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0CiAg
ICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2
ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAgICAgICAgIHN3aXRj
aCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6
Ok5vdEZvdW5kOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0
cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9y
dE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5k
aW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGlz
IG5vdCBmb3VuZC4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBj
YXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKLSAgICAgICAgICAgICAgICB0aHJvd1N5
bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0
cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZl
ZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGlu
ZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSks
ICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdz
LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1
dGlvbjo6VHlwZTo6RXJyb3I6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUg
cmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dTeW50YXhFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmlu
ZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50
cmllcy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OlJlc29sdmVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcs
NiArMjk3LDggQEAgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OSW1wbChKU1ZhbHVlIAogU3Ry
aW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRW
YWx1ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBKU09iamVjdCogaG9s
ZGVyLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICAvLyBDYWxsIHRoZSB0b0pTT04gZnVuY3Rpb24uCiAgICAgdmFsdWUg
PSB0b0pTT04odmFsdWUsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpA
QCAtMzY4LDcgKzM3MCw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZp
ZXIKICAgICAvLyBIYW5kbGUgY3ljbGUgZGV0ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24g
dGhlIHN0YWNrLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNp
emUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9i
amVjdCkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwo
IkpTT04uc3RyaW5naWZ5IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVy
YWwoIkpTT04uc3RyaW5naWZ5IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikp
OwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeUZhaWxlZDsKICAgICAgICAgfQogICAgIH0K
QEAgLTU4OSwxMCArNTkxLDEzIEBAIGVudW0gV2Fsa2VyU3RhdGUgeyBTdGF0ZVVua25vd24sIEFy
cmF5U3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFN0YXJ0U3RhdGUs
IE9iamVjdFN0YXJ0VmlzaXRNZW1iZXIsIE9iamVjdEVuZFZpc2l0TWVtYmVyIH07CiBORVZFUl9J
TkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogeworICAgIFZN
JiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTYsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBwcm9wZXJ0eVN0YWNrOwogICAgIFZlY3Rvcjx1aW50MzJfdCwgMTYsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiBpbmRleFN0YWNrOwotICAgIExvY2FsU3RhY2s8SlNPYmplY3QsIDE2PiBvYmpl
Y3RTdGFjayhtX2V4ZWMtPnZtKCkpOwotICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5
U3RhY2sobV9leGVjLT52bSgpKTsKKyAgICBMb2NhbFN0YWNrPEpTT2JqZWN0LCAxNj4gb2JqZWN0
U3RhY2sodm0pOworICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5U3RhY2sodm0pOwog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBhcnJheUxlbmd0
aFN0YWNrOwogICAgIAogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTYsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBzdGF0ZVN0YWNrOwpAQCAtNjA3LDcgKzYxMiw3IEBAIE5FVkVSX0lOTElORSBKU1Zh
bHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5p
c09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0FycmF5KGFzT2JqZWN0KGlu
VmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoSlNBcnJheTo6aW5mbygpKSk7
CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6
ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMpOwogCiAgICAg
ICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGluVmFsdWUpOwogICAgICAgICAg
ICAgICAgIGFycmF5U3RhY2sucHVzaChhcnJheSk7CkBAIC02NjMsNyArNjY4LDcgQEAgTkVWRVJf
SU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VS
VChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0FycmF5
KGFzT2JqZWN0KGluVmFsdWUpKSAmJiAhYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKEpTQXJy
YXk6OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBh
cnJheVN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgbV9l
eGVjKTsKIAogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChpblZh
bHVlKTsKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7CkBAIC03MzYs
MzEgKzc0MSwzNCBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1CiAg
ICAgfQogICAgIEpTT2JqZWN0KiBmaW5hbEhvbGRlciA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1f
ZXhlYyk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmluYWxIb2xkZXIpOwotICAgIGZpbmFs
SG9sZGVyLT5tZXRob2RUYWJsZSgpLT5wdXQoZmluYWxIb2xkZXIsIG1fZXhlYywgbV9leGVjLT52
bSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllciwgb3V0VmFsdWUsIHNsb3QpOworICAg
IGZpbmFsSG9sZGVyLT5tZXRob2RUYWJsZSgpLT5wdXQoZmluYWxIb2xkZXIsIG1fZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7CiAgICAgcmV0
dXJuIGNhbGxSZXZpdmVyKGZpbmFsSG9sZGVyLCBqc0VtcHR5U3RyaW5nKG1fZXhlYyksIG91dFZh
bHVlKTsKIH0KIAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMgogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04ucGFyc2UgcmVx
dWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJK
U09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIiKSkpOwogICAgIEpTU3Ry
aW5nOjpTYWZlVmlldyBzb3VyY2UgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCiAgICAgSlNWYWx1ZSB1bmZp
bHRlcmVkOwotICAgIExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+dm0oKSk7CisgICAgTG9jYWxTY29w
ZSBzY29wZSh2bSk7CiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICBMaXRlcmFs
UGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzb3Vy
Y2UubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBhcnNl
ci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29u
UGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIu
Z2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBMaXRlcmFsUGFyc2Vy
PFVDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSwgc291cmNlLmxl
bmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5
TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJlZCkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNl
ci5nZXRFcnJvck1lc3NhZ2UoKSkpOyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJz
ZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpCkBAIC03NzEsMTggKzc3OSwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTT05Qcm90b0Z1CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9u
ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFdhbGtlcihleGVjLCBMb2NhbDxKU09iamVjdD4oZXhlYy0+dm0o
KSwgYXNPYmplY3QoZnVuY3Rpb24pKSwgY2FsbFR5cGUsIGNhbGxEYXRhKS53YWxrKHVuZmlsdGVy
ZWQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdhbGtlcihleGVjLCBMb2NhbDxKU09i
amVjdD4odm0sIGFzT2JqZWN0KGZ1bmN0aW9uKSksIGNhbGxUeXBlLCBjYWxsRGF0YSkud2Fsayh1
bmZpbHRlcmVkKSk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1IDE1LjEyLjMKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8g
aW5wdXQgdG8gc3RyaW5naWZ5IikpKTsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkp
OwotICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKLSAgICBMb2NhbDxVbmtub3duPiByZXBsYWNlcihleGVjLT52bSgpLCBleGVj
LT5hcmd1bWVudCgxKSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gc3BhY2UoZXhlYy0+dm0oKSwgZXhl
Yy0+YXJndW1lbnQoMikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gaW5wdXQgdG8gc3RyaW5n
aWZ5IikpKTsKKyAgICBMb2NhbFNjb3BlIHNjb3BlKHZtKTsKKyAgICBMb2NhbDxVbmtub3duPiB2
YWx1ZSh2bSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIExvY2FsPFVua25vd24+
IHJlcGxhY2VyKHZtLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgTG9jYWw8VW5rbm93bj4gc3Bh
Y2Uodm0sIGV4ZWMtPmFyZ3VtZW50KDIpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmluZ2lm
aWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgsIDIwMDksIDIwMTIt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9y
ZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtMTI4Niw2ICsxMjg2LDcgQEAgdm9pZCBKU09iamVjdDo6c2V0
UHJvdG90eXBlRGlyZWN0KFZNJiB2bQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJv
b2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGV4ZWMs
IE5vdFN0cmljdE1vZGUpID09IHRoaXMpOwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURp
cmVjdCgpID09IHByb3RvdHlwZSkKQEAgLTEyOTcsNyArMTI5OCw3IEBAIGJvb2wgSlNPYmplY3Q6
OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKIAogICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAg
ICAgICAgIGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0x
MzA2LDcgKzEzMDcsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7
CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRoaXMpIHsKICAgICAgICAgICAgIGlmIChz
aG91bGRUaHJvd0lmQ2FudFNldCkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMg
X19wcm90b19fIHZhbHVlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJvdG90eXBlKS0+bWV0aG9kVGFi
bGUodm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCkBAIC0xNTQ4LDYg
KzE1NDksOSBAQCBlbnVtIGNsYXNzIFR5cGVIaW50TW9kZSB7IFRha2VzSGludCwgRG9lCiB0ZW1w
bGF0ZTxUeXBlSGludE1vZGUgbW9kZSA9IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50Pgog
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7
CkBAIC0xNTYzLDEzICsxNTY3LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWkKICAgICAgICAgSlNTdHJpbmcqIGhpbnRTdHJpbmcgPSBudWxscHRyOwogICAgICAg
ICBzd2l0Y2ggKGhpbnQpIHsKICAgICAgICAgY2FzZSBOb1ByZWZlcmVuY2U6Ci0gICAgICAgICAg
ICBoaW50U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MuZGVmYXVsdFN0cmluZygpOwor
ICAgICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5kZWZhdWx0U3RyaW5nKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQcmVmZXJOdW1iZXI6Ci0gICAgICAg
ICAgICBoaW50U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCk7
CisgICAgICAgICAgICBoaW50U3RyaW5nID0gdm0uc21hbGxTdHJpbmdzLm51bWJlclN0cmluZygp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHJlZmVyU3RyaW5nOgotICAgICAg
ICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygp
OworICAgICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmco
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhbGxBcmdzLmFwcGVu
ZChoaW50U3RyaW5nKTsKQEAgLTE1ODAsMzcgKzE1ODQsNDAgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBjYWxsVG9QcmltaQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQg
PyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC50
b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiBtb2RlID09
IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50ID8gSlNWYWx1ZSgpIDogdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wudG9QcmltaXRpdmUgcmV0
dXJuZWQgYW4gb2JqZWN0IikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEVDTUEgNy4x
LjEKIEpTVmFsdWUgSlNPYmplY3Q6Om9yZGluYXJ5VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVj
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyIGRlZmF1bHQgdmFsdWUgbWV0aG9kcyB0aGVyZSBhcmUg
b24gb2JqZWN0J3MgcHJvdG90eXBlIGNoYWluIGFyZQogICAgIC8vIGJlaW5nIHdhdGNoZWQuCi0g
ICAgdGhpcy0+c3RydWN0dXJlKCktPnN0YXJ0V2F0Y2hpbmdJbnRlcm5hbFByb3BlcnRpZXNJZk5l
Y2Vzc2FyeUZvckVudGlyZUNoYWluKGV4ZWMtPnZtKCkpOworICAgIHRoaXMtPnN0cnVjdHVyZSgp
LT5zdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzSWZOZWNlc3NhcnlGb3JFbnRpcmVDaGFp
bih2bSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlOwogICAgIGlmIChoaW50ID09IFByZWZlclN0cmlu
ZykgewogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKGV4ZWMsIHRoaXMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgaGludCk7Ci0gICAgICAgIGlmICh2YWx1
ZSkKKyAgICAgICAgaWYgKHRocm93U2NvcGUuY2hlY2sodmFsdWUpKQogICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOwogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKGV4ZWMs
IHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsKLSAgICAgICAgaWYg
KHZhbHVlKQorICAgICAgICBpZiAodGhyb3dTY29wZS5jaGVjayh2YWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdmFsdWU7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9Qcmlt
aXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwg
aGludCk7Ci0gICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgaWYgKHRocm93U2NvcGUuY2hlY2so
dmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB2YWx1ZSA9IGNhbGxU
b1ByaW1pdGl2ZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZywgaGludCk7Ci0gICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgaWYgKHRocm93U2NvcGUu
Y2hlY2sodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAogICAgIEFT
U0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKKyAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJObyBkZWZhdWx0IHZh
bHVlIikpOwogfQogCiBKU1ZhbHVlIEpTT2JqZWN0OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQp
CkBAIC0xNjU5LDEyICsxNjY2LDE0IEBAIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBKU09iamVjdDo6
ZmluZFByb3AKIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgCiAK
ICAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJbnN0
YW5jZVZhbHVlICE9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGhhc0luc3RhbmNl
VmFsdWUsIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KSB7Ci0gICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRo
aXMpKTsKKyAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
SW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvcmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlv
bihleGVjLCB0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtMTY3OSw3ICsxNjg4LDcgQEAgYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRl
KiBleAogICAgICAgICByZXR1cm4gZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBnZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkpOwogICAgIGlmIChpbmZvLmlt
cGxlbWVudHNIYXNJbnN0YW5jZSgpKQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5j
dXN0b21IYXNJbnN0YW5jZSh0aGlzLCBleGVjLCB2YWx1ZSk7Ci0gICAgdm0udGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9u
KGV4ZWMsIHRoaXMpKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihleGVjLCB0aGlzKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNjkyLDE1ICsxNzAxLDE3IEBAIGJvb2wgSlNP
YmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBKU09iamVjdDo6ZGVmYXVs
dEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90
bykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmpl
Y3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxs
ZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2
bSwgZXhlYyk7CkBAIC0yMTcwLDYgKzIxODEsOSBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9J
bnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIGJv
b2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRl
cyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5k
ZXhpbmdTaGFwZSk7CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwogCkBA
IC0yMTc5LDggKzIxOTMsNiBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuCiAgICAgLy8gb3IgZXF1YWwgdG8gdGhlIHZlY3RvciBsZW5ndGguCiAgICAgQVNTRVJUKGkg
Pj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgCi0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAogICAgICAg
ICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9yVmVj
dG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAgICAg
IHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKQEAgLTIxOTQsNyArMjIwNiw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICB9CiAKICAgICBpZiAoIWVuc3VyZUxl
bmd0aCh2bSwgaSArIDEpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgp
OwpAQCAtMjIzMiw2ICsyMjQ0LDcgQEAgdGVtcGxhdGUgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRl
eEJleW9uZAogYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAg
IC8vIGkgc2hvdWxkIGJlIGEgdmFsaWQgYXJyYXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRo
ZSBjdXJyZW50IHZlY3Rvci4KICAgICBBU1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAt
MjI1OSw3ICsyMjcyLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0bywgb3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAt
IGFsbG9jYXRlIGEgc3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCi0gICAgICAgIG1hcCA9IGFs
bG9jYXRlU3BhcnNlSW5kZXhNYXAoZXhlYy0+dm0oKSk7CisgICAgICAgIG1hcCA9IGFsbG9jYXRl
U3BhcnNlSW5kZXhNYXAodm0pOwogICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0
aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIApAQCAtMjI2OSw3ICsyMjgyLDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAvLyBQ
cm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAg
ICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IGkgKyAxOwpAQCAtMjI3OSw3ICsyMjkyLDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIFdlIGFy
ZSBjdXJyZW50bHkgdXNpbmcgYSBtYXAgLSBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8g
YmUgZG9pbmcgc28uCiAgICAgLy8gV2Ugd2lsbCBjb250aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1h
cCBpZiBTcGFyc2VNb2RlIGlzIHNldCwgYSB2ZWN0b3Igd291bGQgYmUgdG9vIHNwYXJzZSwgb3Ig
aWYgYWxsb2NhdGlvbiBmYWlscy4KICAgICB1bnNpZ25lZCBudW1WYWx1ZXNJbkFycmF5ID0gc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciArIG1hcC0+c2l6ZSgpOwotICAgIGlmIChtYXAtPnNw
YXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0lu
QXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAg
IGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgs
IG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aCh2bSwgbGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0ZXIgaW5jcmVhc2VWZWN0b3JM
ZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgpAQCAtMjkxMSw2ICsyOTI0LDkgQEAg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjUwogYm9vbCB2YWxpZGF0ZUFu
ZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgYm9vbCBpc0V4dGVuc2libGUsCiAgICAgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlzQ3VycmVudERlZmluZWQs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgY3VycmVudCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5ldyBwcm9wZXJ0eSB3ZSBjYW4ganVz
dCBwdXQgaXQgb24gbm9ybWFsbHkKICAgICAvLyBTdGVwIDIuCiAgICAgaWYgKCFpc0N1cnJlbnRE
ZWZpbmVkKSB7CkBAIC0yOTE4LDcgKzI5MzQsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9w
ZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIC8vIFN0ZXAgMi5hCiAgICAgICAgIGlmICghaXNFeHRl
bnNpYmxlKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmlu
ZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5z
aWJsZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFvYmplY3QpCkBAIC0yOTQxLDEyICsyOTU3LDEyIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBs
eVByb3BlcnR5RGVzY3JpcHRvcigKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsK
ICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUg
b2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFu
Z2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAhPSBj
dXJyZW50LmVudW1lcmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQot
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1
dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjk1NSw3ICsyOTcxLDcgQEAgYm9vbCB2YWxpZGF0
ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIC8vIEEgZ2VuZXJpYyBkZXNjcmlwdG9y
IGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBleGlzdGluZyBwcm9wZXJ0
eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSkgewogICAgICAgICBp
ZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmIG9iamVjdCkgewotICAg
ICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHko
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJy
ZW50KSwgY3VycmVudCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yOTY2
LDE0ICsyOTgyLDE0IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigK
ICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0gY3VycmVudC5pc0RhdGFE
ZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nl
c3NNZWNoYW5pc21FcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBy
ZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJl
bnQpOwogICAgIH0KIApAQCAtMjk4MywxMyArMjk5OSwxMyBAQCBib29sIHZhbGlkYXRlQW5kQXBw
bHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUo
KSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkgJiYgZGVzY3JpcHRvci53
cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRp
bmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUo
KSkgewogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlKCkgJiYgIXNhbWVWYWx1
ZShleGVjLCBjdXJyZW50LnZhbHVlKCksIGRlc2NyaXB0b3IudmFsdWUoKSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2
YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CkBAIC0yOTk4LDcgKzMwMTQsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2Ny
aXB0b3IoCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJp
ZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMzAwOCwxNyArMzAy
NCwxNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgaWYg
KCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSAmJiAhKGN1cnJlbnQuc2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIGN1cnJlbnQuc2V0dGVyKCksIGRlc2NyaXB0b3Iuc2V0dGVyKCkpKSkgewog
ICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIHNldHRl
ciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRv
ci5nZXR0ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAmJiBKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9yLmdldHRlcigp
KSkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRo
ZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1
cnJlbnQuYXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3IpIHsKICAgICAgICAgICAgIGlmICh0
aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9y
KSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVND
SUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzAy
NiwzMyArMzA0MiwzMyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3Io
CiAgICAgLy8gU3RlcCAxMC8xMS4KICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgSlNWYWx1ZSBhY2Nlc3NvciA9IG9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSk7CisgICAgSlNWYWx1ZSBhY2Nlc3NvciA9IG9iamVjdC0+Z2V0RGlyZWN0
KHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghYWNjZXNzb3IpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlcjsKICAgICBib29sIGdldHRlclNl
dHRlckNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAoYWNjZXNzb3IuaXNDdXN0b21HZXR0ZXJTZXR0
ZXIoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVj
LT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICBnZXR0ZXJTZXR0
ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKICAgICAgICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRl
clNldHRlcio+KGFjY2Vzc29yKTsKICAgICAgICAgaWYgKGN1c3RvbUdldHRlclNldHRlci0+c2V0
dGVyKCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT52bSgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
Rm9yR2V0dGVyU2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpUeXBlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAg
IGdldHRlclNldHRlci0+c2V0U2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uRm9yR2V0dGVyU2V0dGVyKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
OjpUeXBlOjpTZXR0ZXIpKTsKICAgICAgICAgaWYgKGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVy
KCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVjLT52bSgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uRm9y
R2V0dGVyU2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpUeXBlOjpHZXR0ZXIpKTsKKyAgICAgICAgICAgIGdl
dHRlclNldHRlci0+c2V0R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdl
dEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uRm9yR2V0dGVyU2V0dGVyKGV4ZWMsIHByb3BlcnR5
TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpU
eXBlOjpHZXR0ZXIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoYWNjZXNzb3IuaXNH
ZXR0ZXJTZXR0ZXIoKSk7CiAgICAgICAgIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0dGVyKGFj
Y2Vzc29yKTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKSB7Ci0g
ICAgICAgIGdldHRlclNldHRlciA9IGdldHRlclNldHRlci0+d2l0aFNldHRlcihleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCkp
OworICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhTZXR0ZXIodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7CiAg
ICAgICAgIGdldHRlclNldHRlckNoYW5nZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAoZGVzY3Jp
cHRvci5nZXR0ZXJQcmVzZW50KCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0
dGVyLT53aXRoR2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
ZGVzY3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7CisgICAgICAgIGdldHRlclNldHRlciA9IGdldHRl
clNldHRlci0+d2l0aEdldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNj
cmlwdG9yLmdldHRlck9iamVjdCgpKTsKICAgICAgICAgZ2V0dGVyU2V0dGVyQ2hhbmdlZCA9IHRy
dWU7CiAgICAgfQogICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAm
JiAhZ2V0dGVyU2V0dGVyQ2hhbmdlZCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNj
cmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KTsKICAgICBvYmplY3Qt
PnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRy
cyB8IEFjY2Vzc29yKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMyMDAsNiArMzIxNiw5IEBAIHZv
aWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEoKIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvaW5kZXguaHRtbCNzZWMtZ2V0bWV0aG9k
CiBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBDYWxsRGF0YSYg
Y2FsbERhdGEsIENhbGxUeXBlJiBjYWxsVHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIG1ldGhv
ZCA9IGdldChleGVjLCBpZGVudCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMyMDgsMTMgKzMyMjcsMTMgQEAgSlNWYWx1
ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZQogICAgICAgICBpZiAobWV0aG9kLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgZXJyb3JNZXNzYWdlKTsKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgY2FsbFR5cGUgPSBtZXRob2QuYXND
ZWxsKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1ldGhvZC5hc0NlbGwoKSwgY2FsbERh
dGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAKICNpbmNsdWRl
ICJQdXREaXJlY3RJbmRleE1vZGUuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNp
bmNsdWRlICJSdW50aW1lVHlwZS5oIgotCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVk
ZSAiVGhyb3dTY29wZUlubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIgpAQCAtNjUsMTAgKzY1LDEx
IEBAIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXk7CiBjbGFzcyBTdHJ1Y3R1cmU7CitjbGFzcyBUaHJvd1Njb3BlOwog
c3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBIYXNoVGFibGVWYWx1ZTsKIAotSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
OworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKFRocm93U2NvcGUm
LCBFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIGV4dGVybiBKU19FWFBPUlREQVRBIGNvbnN0
IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcjsKIGV4dGVybiBKU19F
WFBPUlREQVRBIGNvbnN0IGNoYXIqIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NN
ZWNoYW5pc21FcnJvcjsKIApAQCAtMTY1NSw2ICsxNjU2LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IEFkZEZ1bmN0aW9uPiAvLyBBZGQgZgogdm9pZCBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYXJyYXlMaWtlVmFsdWUsIFJ1bnRpbWVUeXBlTWFzayBsZWdh
bFR5cGVzRmlsdGVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgQWRkRnVuY3Rpb24gYWRk
RnVuY3Rpb24pCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1bHQ7CiAgICAg
SlNWYWx1ZSBsZW5ndGhQcm9wZXJ0eSA9IGFycmF5TGlrZVZhbHVlLmdldChleGVjLCBleGVjLT52
bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpAQCAt
MTY3MSw3ICsxNjc0LDcgQEAgdm9pZCBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShFeGVjU3RhdGUq
IAogCiAgICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBydW50aW1lVHlwZUZvclZhbHVlKG5leHQp
OwogICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
MTAgKzU2LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUYKIC8v
IEVDTUEgOC42LjIuMgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
IAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkp
KQogICAgICAgICByZXR1cm4gb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpA
QCAtNzAsMTAgKzcyLDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0SW5saW5l
KEoKICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFs
dWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3Qt
PmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKGV4ZWMsIHZtLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAg
ICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJ
bnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkpOworICAgICAgICBBU1NF
UlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0
U3RvcmVUbyh2bSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC05NCwxMiArOTQsMTMgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6YWRk
T3duSW50ZXJuYQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gZXhlYy0+bmV3VGFyZ2V0KCk7CiAgICAgaWYg
KG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAKICAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFs
T2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTExMiw3ICsxMTMsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm9taXNl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlByb21pc2Ui
KSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JD
YW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIlByb21p
c2UiKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNQcm9taXNlQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDkgKzEzOSwxMiBAQCBib29sIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om5leHQoRXhlY1N0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvcGVydHlOYW1lSXRlcmF0b3JGdW5jTmV4
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2Fs
bCBQcm9wZXJ0eU5hbWVJdGVyYXRvci5uZXh0KCkgb24gYSBub24tUHJvcGVydHlOYW1lSXRlcmF0
b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFByb3BlcnR5
TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBvYmplY3Qi
KSkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0KGV4ZWMs
IHJlc3VsdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zODAsMTEg
KzM4MCwxNCBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVCiAKIHZv
aWQgSlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIGNsZWFyRmliZXJzKCk7CiAgICAgQVNTRVJUKGlzUm9wZSgpKTsKICAgICBB
U1NFUlQobV92YWx1ZS5pc051bGwoKSk7CiAgICAgaWYgKGV4ZWMpCi0gICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93
U2NvcGUsIGV4ZWMpOwogfQogCiBKU1ZhbHVlIEpTU3RyaW5nOjp0b1ByaW1pdGl2ZShFeGVjU3Rh
dGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03MSwxNyArNzEsMTkgQEAgcHVibGljOgogCiAgICAgSlNWYWx1ZSBidWlsZChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
ICAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICAgICAgaWYgKCFtX29r
YXkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsK
ICAgICAgICAgaWYgKG1faXM4Qml0KSB7CiAgICAgICAgICAgICBidWZmZXI4LnNocmlua1RvRml0
KCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcjgpKTsKICAgICAgICAgfQog
ICAgICAgICBidWZmZXIxNi5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBpZiAoIWJ1ZmZlcjE2LmRh
dGEoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikp
OwogICAgIH0KIApAQCAtMTI3LDkgKzEyOSwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250
cml2aWFsU3RyaW5nKEV4CiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZS4u
LiBTdHJpbmdUeXBlcz4KIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmdUeXBlJiBzdHJpbmcsIGNvbnN0IFN0cmluZ1R5cGVz
Ji4uLiBzdHJpbmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IFdURjo6dHJ5TWFr
ZVN0cmluZyhzdHJpbmcsIHN0cmluZ3MuLi4pOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgV1RGTW92ZShyZXN1bHQpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAkocmV2aXNpb24gMjA0
ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNiArODEsOSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBq
b2luU3RyaW5ncyhjb25zdCBWCiAKIGlubGluZSB1bnNpZ25lZCBKU1N0cmluZ0pvaW5lcjo6am9p
bmVkTGVuZ3RoKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIHVuc2ln
bmVkIG51bWJlck9mU3RyaW5ncyA9IG1fc3RyaW5ncy5zaXplKCk7CiAgICAgaWYgKCFudW1iZXJP
ZlN0cmluZ3MpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTEsNyArOTQsNyBAQCBpbmxpbmUgdW5z
aWduZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAg
ICAgaWYgKHRvdGFsTGVuZ3RoLnNhZmVHZXQocmVzdWx0KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92
ZXJmbG93KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OSw2ICsxMDIsOSBAQCBpbmxp
bmUgdW5zaWduZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKIEpTVmFsdWUgSlNTdHJpbmdK
b2luZXI6OmpvaW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQVNTRVJUKG1f
c3RyaW5ncy5zaXplKCkgPD0gbV9zdHJpbmdzLmNhcGFjaXR5KCkpOwogCiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gam9pbmVkTGVuZ3RoKHN0YXRlKTsKQEAgLTExNSw3ICsxMjEsNyBAQCBKU1ZhbHVl
IEpTU3RyaW5nSm9pbmVyOjpqb2luKEV4ZWNTdGF0ZSYgCiAgICAgICAgIHJlc3VsdCA9IGpvaW5T
dHJpbmdzPFVDaGFyPihtX3N0cmluZ3MsIG1fc2VwYXJhdG9yLCBsZW5ndGgpOwogCiAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUs
ICZzdGF0ZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmcoJnN0YXRlLCBXVEZNb3ZlKHJlc3VsdCkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pv
aW5lci5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZ0pvaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsMTYgKzYwLDIwIEBAIGlu
bGluZSBKU1N0cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoRXgKICAgICA6IG1fc2VwYXJhdG9y
KHNlcGFyYXRvcikKICAgICAsIG1faXNBbGw4Qml0KG1fc2VwYXJhdG9yLmlzOEJpdCgpKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5UmVzZXJ2ZUNhcGFjaXR5KHN0
cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIH0KIAogaW5s
aW5lIEpTU3RyaW5nSm9pbmVyOjpKU1N0cmluZ0pvaW5lcihFeGVjU3RhdGUmIHN0YXRlLCBMQ2hh
ciBzZXBhcmF0b3IsIHVuc2lnbmVkIHN0cmluZ0NvdW50KQogICAgIDogbV9zaW5nbGVDaGFyYWN0
ZXJTZXBhcmF0b3Ioc2VwYXJhdG9yKQogICAgICwgbV9zZXBhcmF0b3IgeyAmbV9zaW5nbGVDaGFy
YWN0ZXJTZXBhcmF0b3IsIDEgfQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmlu
Z3MudHJ5UmVzZXJ2ZUNhcGFjaXR5KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dT
Y29wZSwgJnN0YXRlKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpTU3RyaW5nSm9pbmVyOjph
cHBlbmQoU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nJiYgc3RyaW5nKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlw
dG9yLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTY2LDYgKzE2Nyw3IEBAIHRlbXBsYXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBz
eW1ib2xUYWJsZVAKIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJvbFRhYmxlT2JqZWN0
VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIFdhdGNo
cG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
cmVnOwpAQCAtMTgyLDcgKzE4NCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJv
bFRhYmxlT2IKICAgICAgICAgQVNTRVJUKCFmYXN0RW50cnkuaXNOdWxsKCkpOwogICAgICAgICBp
ZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAg
ICAgICAgICAgIGlmIChzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCi0gICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcHV0UmVzdWx0
ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjAwLDkg
KzIwMiw5IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJvbFRhYmxlT2IKICAgICAv
LyB0aGUgcmlnaHQgZm9yIGJhcnJpZXJzIHRvIGJlIGFibGUgdG8gdHJpZ2dlciBHQy4gQW5kIEkg
ZG9uJ3Qgd2FudCB0byBob2xkIFZNCiAgICAgLy8gbG9ja3Mgd2hpbGUgR0MnaW5nLgogICAgIGlm
IChzeW1ib2xUYWJsZVB1dE1vZGUgPT0gU3ltYm9sVGFibGVQdXRNb2RlOjpJbnZhbGlkYXRlKQot
ICAgICAgICBzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KGV4ZWMtPnZtKCks
IG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOworICAgICAgICBzeW1ib2xU
YWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KHZtLCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHJlZywgc2V0KTsKICAgICBlbHNlCi0gICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hX
YXRjaHBvaW50U2V0KGV4ZWMtPnZtKCksIG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVn
LCBzZXQpOworICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh2bSwgb2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CiAgICAgcHV0UmVzdWx0ID0gdHJ1
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NSw3ICs2NSw5IEBAIFN0
cnVjdHVyZSogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjoKIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
JVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CiB9CiAKIENv
bnN0cnVjdFR5cGUgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDcgKzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8
SlNVaW50MTZBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgY2FzZSBOb3RUeXBlZEFycmF5OiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKQEAgLTcyLDIwICs3MiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1
bWVudC5pc0NlbGwoKSB8fCAhaXNUeXBlZFZpZXcoYXJndW1lbnQuYXNDZWxsKCktPmNsYXNzSW5m
bygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyIp
KTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJV
bmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRo
ZSB2aWV3IikpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2Jq
ZWN0LT5sZW5ndGgoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0
b3JhZ2VUeXBlOwogICAgIEFTU0VSVChpc1R5cGVkVmlldyh0eXBlKSk7CkBAIC05NCwxMTEgKzk4
LDEzOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0
IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKTsKIH0KIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCBleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk7CiB9CiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFz
dEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9G
VU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBF
X0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0pvaW4oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
dWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVE
QVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENB
TExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0
IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIw
NDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDE2IEBAIHZvaWQgTWFwQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE1hcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMs
ICJNYXAiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
Ik1hcCIpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2Jh
bE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2Jh
bE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTY5LDExICs3NCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFk
ZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYykpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUs
IFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAg
ICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5lcy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDQsNiArMjA0LDkgQEAgaW5saW5lIHZvaWQgTWFwRGF0YUltcGw8RW50cnksIEpT
SXRlcmF0bwogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnksIHR5cGVuYW1lIEpTSXRlcmF0b3I+CiBp
bmxpbmUgQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjplbnN1
cmVTcGFjZUZvckFwcGVuZChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIGlmIChtX2NhcGFjaXR5ID4gbV9zaXplKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IApAQCAtMjExLDcgKzIxNCw3IEBAIGlubGluZSBDaGVja2VkQm9vbGVhbiBNYXBEYXRhSW1wbDxF
bnRyeSwKICAgICB2b2lkKiBuZXdTdG9yYWdlID0gbnVsbHB0cjsKICAgICBEZWZlckdDIGRlZmVy
KCpleGVjLT5oZWFwKCkpOwogICAgIGlmICghZXhlYy0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3Jh
Z2Uob3duZXIsIHJlcXVpcmVkU2l6ZSAqIHNpemVvZihFbnRyeSksICZuZXdTdG9yYWdlKSkgewot
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0PEVudHJ5Kj4obmV3U3RvcmFn
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
SXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDgsOSArNDgsMTIgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVu
Y05leHQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52
bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNYXBJ
dGVyYXRvciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPihjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgY2FsbCBNYXBJdGVyYXRvci5uZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0Iikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCBjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgTWFwSXRlcmF0b3IubmV4
dCgpIG9uIGEgbm9uLU1hcEl0ZXJhdG9yIG9iamVjdCIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICBpZiAoaXRlcmF0b3ItPm5leHQoY2FsbEZyYW1lLCByZXN1bHQpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMyArODgsMTYgQEAgdm9pZCBNYXBQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCogZ2V0
TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFs
dWUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgY3JlYXRl
Tm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgSlNNYXAqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih0
aGlzVmFsdWUpOwogICAgIGlmICghbWFwKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxG
cmFtZSwgQVNDSUlMaXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVj
dCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBBU0NJ
SUxpdGVyYWwoIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0IikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG1hcDsKQEAgLTE1MywyNiAr
MTU2LDM1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW4KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNWYWx1ZXMoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBqc0R5bmFt
aWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2Jq
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVlIGl0ZXJhdG9yIGZvciBh
IG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU01hcEl0
ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVl
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBNYXAgdmFsdWUg
aXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1
ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJp
ZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNYXAqIHRo
aXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIGVudHJ5
IGl0ZXJhdG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09i
aiwgSXRlcmF0ZUtleVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZy
YW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRo
aXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByb3RvRnVuY0tleXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBmb3IgYSBub24tTWFwIG9iamVjdC4iKSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZS0+
dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3Ry
dWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBrZXkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcml2YXRlRnVuY0lzTWFwKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDksNiArMTA5LDggQEAg
TW9kdWxlTG9hZGVyUHJvdG90eXBlOjpNb2R1bGVMb2FkZXJQcm90bwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xMjcsNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZQogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJDb21tZW50
TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewot
ICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBzb3VyY2VDb2RlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgfQogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9kZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDggKzcyLDEx
IEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4ZWNTdGF0ZSogZXgKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChjYWxsZXJJc1N0cmljdChleGVjKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVy
IikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxNSArMzY0LDE4IEBA
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCAKIC8vIHRvIGFyZ3VtZW50
LXBsdXMtb25lIHNpZ25pZmljYW50IGZpZ3VyZXMpLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1Zh
bHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICAvLyBH
ZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQ7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZDsKICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhl
YywgMCwgMjAsIGRlY2ltYWxQbGFjZXNJbkV4cG9uZW50LCBpc1VuZGVmaW5lZCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoInRvRXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAi
KSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQg
bXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIElu
ZmluaXR5LgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkKQEAgLTM5NSwxNSArMzk4LDE4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIG1ldGhvZCB3aWxs
IGluc3RlYWQgZmFsbGJhY2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihleGVjLT50aGlz
VmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIC8v
IEdldCB0aGUgYXJndW1lbnQuIAogICAgIGludCBkZWNpbWFsUGxhY2VzOwogICAgIGJvb2wgaXNV
bmRlZmluZWQ7IC8vIFRoaXMgaXMgaWdub3JlZDsgdW5kZWZpbmVkIHRyZWF0ZWQgYXMgMC4KICAg
ICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMCwgMjAsIGRlY2ltYWxQbGFj
ZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9GaXhlZCgpIGFyZ3VtZW50IG11c3Qg
YmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4
ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUu
Ny40LjUuNyBzdGF0ZXMgIklmIHggPj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIK
ICAgICAvLyBUaGlzIGFsc28gY292ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNr
IHNvIHRoYXQgTmFOCkBAIC00MjgsMTUgKzQzNCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG51bWJlclByb3RvCiAvLyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBl
eHBvbmVudGlhbCByZXByZXNlbnRhdGlvbi4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwg
eCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIC8vIEdldCB0aGUg
YXJndW1lbnQuIAogICAgIGludCBzaWduaWZpY2FudEZpZ3VyZXM7CiAgICAgYm9vbCBpc1VuZGVm
aW5lZDsKICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMSwgMjEsIHNp
Z25pZmljYW50RmlndXJlcywgaXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b1ByZWNpc2lv
bigpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMSIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5k
IDIxIikpKTsKIAogICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBp
cyB0cmVhdGVkIGFzIFRvU3RyaW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ4NSwyMiAr
NDk0LDIzIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgaW50ZWdlclZhbHUKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKICAgICBpZiAo
IXRvVGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFJh
ZGl4RnJvbUFyZ3MoZXhlYyk7CiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFu
ZCAzNiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJn
dW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKIAogICAgIGludDMyX3QgaW50ZWdl
clZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91YmxlVmFsdWUpOwogICAgIGlmIChpbnRl
Z2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCiAgICAgICAgIHJldHVybiBpbnRlZ2VyVmFsdWVUb1N0
cmluZyhleGVjLCByYWRpeCwgaW50ZWdlclZhbHVlKTsKIAotICAgIGlmIChyYWRpeCA9PSAxMCkg
ewotICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyh2bSwgdm0tPm51bWVyaWNTdHJpbmdzLmFkZChkb3VibGVWYWx1ZSkp
KTsKLSAgICB9CisgICAgaWYgKHJhZGl4ID09IDEwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKCZ2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkp
OwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZVZhbHVlKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJU
b1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKSk7CkBAIC01MTEsMTkgKzUyMSwyNSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihl
eGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkudG9TdHJpbmcoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1ZhbHVl
T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVy
KHRoaXNWYWx1ZSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFdU
Rjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwg
anNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVlKSkt
PnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNv
bXBhdGlibGUgIiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywg
dGhpc1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcih4KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE3LDEzICsyMTcsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yU2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1Zh
bHVlIG9iamVjdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG9iamVjdFZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsK
IAogICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICgh
cHJvdG9WYWx1ZS5pc09iamVjdCgpICYmICFwcm90b1ZhbHVlLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0
VmFsdWUudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MjMyLDcgKzIzNSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QK
ICAgICBpZiAoIWNoZWNrUHJvdG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogCi0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gdHJ1ZTsKICAg
ICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBw
cm90b1ZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgQVNTRVJUX1VOVVNFRChkaWRT
ZXRQcm90b3R5cGUsIHZtLmV4Y2VwdGlvbigpIHx8IGRpZFNldFByb3RvdHlwZSk7CkBAIC0zNDQs
OCArMzQ2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb3duRW51bWVyYWIKIGJv
b2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2MpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghaW4uaXNPYmplY3Qo
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5
IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBt
dXN0IGJlIGFuIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
SlNPYmplY3QqIGRlc2NyaXB0aW9uID0gYXNPYmplY3QoaW4pOwpAQCAtMzkwLDcgKzM5NCw3IEBA
IGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFn
ZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
ICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUp
IHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkdl
dHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5j
dGlvbi4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC00MDUsNyArNDA5LDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqIGV4ZQogICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQs
IGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJTZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxNywxMiArNDIxLDEy
IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBpZiAoZGVzYy52YWx1ZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2Vu
dCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHku
ICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChkZXNjLndyaXRhYmxlUHJl
c2VudCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRl
ciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24g
cHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQzMCwxOSArNDM0LDIyIEBAIGJvb2wgdG9Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRp
ZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2NvcGUuZm9yd2FyZCh0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpKTsK
ICAgICBKU09iamVjdCogTyA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsK
ICAgICBpZiAoIXRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBk
ZXNjcmlwdG9yKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KSk7CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAo
IWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOwogICAgIEFTU0VSVCghZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOwotICAgIE8tPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVP
d25Qcm9wZXJ0eShPLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTyk7CisgICAgTy0+bWV0aG9kVGFibGUodm0pLT5kZWZp
bmVPd25Qcm9wZXJ0eShPLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOwor
ICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoSlNWYWx1ZTo6ZW5jb2RlKE8pKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvYmplY3QsIEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQpAQCAtNDg1LDggKzQ5MiwxMSBAQCBzdGF0
aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7CiAgICAgSlNPYmplY3Qq
IHRhcmdldE9iaiA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBKU09iamVjdCog
cHJvcHMgPSBleGVjLT5hcmd1bWVudCgxKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIXByb3Bz
KQpAQCAtNDk2LDE2ICs1MDYsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSBwcm90byA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8u
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4i
KSk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3RvLmlzT2JqZWN0KCkKICAgICAgICAg
PyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBhc09iamVjdChwcm90bykpCiAgICAgICAgIDog
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5u
dWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudCgx
KS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5ld09iamVj
dCk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0
b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRv
ciBsaXN0IG11c3QgYmUgYW4gT2JqZWN0LiIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGRlZmluZVByb3BlcnRpZXMoZXhlYywgbmV3T2JqZWN0LCBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgxKSkpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTEyNyw2ICsxMjcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0LDcgKzEzNyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBKU1ZhbHVlIGdldCA9IGV4ZWMt
PmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0
YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDYsMTMgKzE0OSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1
ZSk7CiAKICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMTYwLDcgKzE2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG8KICAgICBKU1ZhbHVlIHNldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNh
bGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6
Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIp
KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0
eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNzIsNyArMTc4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2Ny
aXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRy
dWU7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blBy
b3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxk
VGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJv
dyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAt
MjY5LDYgKzI3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8K
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKICAgICBpZiAodGhpc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkT2JqZWN0U3Ry
aW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0cmluZygpKTsKQEAgLTI5OCw5ICsz
MDYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgbmV3U3RyaW5nID0gV1RGOjp0cnlN
YWtlU3RyaW5nKCJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIik7CisgICAgICAgIFN0cmluZyBuZXdTdHJpbmcg
PSBXVEY6OnRyeU1ha2VTdHJpbmcoIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIik7CiAgICAgICAgIGlmICghbmV3U3RyaW5n
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAK
ICAgICAgICAgYXV0byByZXN1bHQgPSBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBuZXdTdHJpbmcp
OwogICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0cmluZ1Zh
bHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFnU2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUtMjAwOSwgMjAxMy0yMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC00MCw2ICs0MCw3IEBAIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUK
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpbnQzMl90IGxlbmd0aDEgPSBz
MS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgxKQpAQCAtNDgsNyArNDksNyBAQCBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiAgICAgaWYgKCFsZW5ndGgyKQogICAg
ICAgICByZXR1cm4gczE7CiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBs
ZW5ndGgyKSkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAog
ICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgczEsIHMyKTsKIH0KQEAgLTU2LDEz
ICs1NywxNCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHUxLCBjb25zdCBTdHJpbmcmIHUyLCBjb25zdCBTdHJpbmcmIHUzKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgKnZtKTsKIAog
ICAgIGludDMyX3QgbGVuZ3RoMSA9IHUxLmxlbmd0aCgpOwogICAgIGludDMyX3QgbGVuZ3RoMiA9
IHUyLmxlbmd0aCgpOwogICAgIGludDMyX3QgbGVuZ3RoMyA9IHUzLmxlbmd0aCgpOwogICAgIAog
ICAgIGlmIChsZW5ndGgxIDwgMCB8fCBsZW5ndGgyIDwgMCB8fCBsZW5ndGgzIDwgMCkKLSAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAKICAgICBpZiAoIWxl
bmd0aDEpCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBqc1N0cmluZyh2bSwgdTIpLCBq
c1N0cmluZyh2bSwgdTMpKTsKQEAgLTcyLDcgKzc0LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3RyaW5nKEV4ZWNTdGF0ZQogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywganNTdHJp
bmcodm0sIHUxKSwganNTdHJpbmcodm0sIHUyKSk7CiAKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGlu
dDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIsIGxlbmd0aDMpKQotICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5n
KHZtLCB1MykpOwogfQpAQCAtODAsMTIgKzgyLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N0cmluZyhFeGVjU3RhdGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdp
c3RlckFycmF5KEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgKnZtKTsKICAgICBKU1JvcGVTdHJpbmc6OlJvcGVCdWlsZGVyIHJvcGVCdWls
ZGVyKCp2bSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewog
ICAgICAgICBKU1ZhbHVlIHYgPSBzdHJpbmdzWy1zdGF0aWNfY2FzdDxpbnQ+KGkpXS5qc1ZhbHVl
KCk7CiAgICAgICAgIGlmICghcm9wZUJ1aWxkZXIuYXBwZW5kKHYudG9TdHJpbmcoZXhlYykpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKQEAgLTk0LDEzICs5NywxNCBA
QCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmdGcm9tUmVnaXN0CiBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTdHJpbmdGcm9tQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0
aGlzVmFsdWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCAqdm0pOwogICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIgcm9w
ZUJ1aWxkZXIoKnZtKTsKICAgICByb3BlQnVpbGRlci5hcHBlbmQodGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENv
dW50KCk7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudChpKTsKICAg
ICAgICAgaWYgKCFyb3BlQnVpbGRlci5hcHBlbmQodi50b1N0cmluZyhleGVjKSkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICB9CiAKICAg
ICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw5IEBAIFByb3h5Q29uc3RydWN0b3I6OlByb3h5
Q29uc3RydWN0b3IoVk0mIHYKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFrZVJldm9jYWJsZVByb3h5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRz
OiB0aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUg
bmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhl
IGhhbmRsZXIiKSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFyZ0xpc3QgYXJn
cyhleGVjKTsKQEAgLTgwLDcgKzgxLDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFrZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJl
dm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUg
Y2Fubm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiKSk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKKyAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5LnJldm9jYWJs
ZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxlZCIpKTsKIH0KIAog
dm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIq
IG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC05Myw4ICs5NSw5IEBAIHZv
aWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0KIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAg
aWYgKGV4ZWMtPm5ld1RhcmdldCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQcm94eSBjb25z
dHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQ
cm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CiAKICAgICBBcmdMaXN0
IGFyZ3MoZXhlYyk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDApOwpAQCAtMTEwLDcg
KzExMyw4IEBAIENvbnN0cnVjdFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3QKIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlByb3h5IikpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsICJQcm94eSIpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlDb25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA0
ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MSwxOSArNjEsMjAgQEAgU3RydWN0dXJlKiBQcm94eU9iamVjdDo6
c3RydWN0dXJlRm9yVGFyZwogCiB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcikKIHsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQg
YmUgYW4gT2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2JqZWN0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChQcm94eU9iamVjdCogdGFyZ2V0QXNQ
cm94eSA9IGpzRHluYW1pY0Nhc3Q8UHJveHlPYmplY3QqPih0YXJnZXQpKSB7CiAgICAgICAgIGlm
ICh0YXJnZXRBc1Byb3h5LT5oYW5kbGVyKCkuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94eSdzIGhhbmRsZXIgaXMgYW5v
dGhlciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91bGQgbm90IGhhdmUgYmVlbiBy
ZXZva2VkIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJJZiBhIFByb3h5J3MgaGFuZGxlciBpcyBhbm90aGVyIFByb3h5IG9iamVj
dCwgdGhlIG90aGVyIFByb3h5IHNob3VsZCBub3QgaGF2ZSBiZWVuIHJldm9rZWQiKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFoYW5kbGVyLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBIFBy
b3h5J3MgJ2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVy
JyBzaG91bGQgYmUgYW4gT2JqZWN0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
OCw4ICs5OSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWQKIHN0
YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3h5T2JqZWN0
KiBwcm94eU9iamVjdCwgSlNWYWx1ZSByZWNlaXZlciwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgp
KSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMTcsNyArMTE5LDcgQEAgc3RhdGljIEpTVmFsdWUgcGVy
Zm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94
eU9iamVjdC0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JN
ZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhh
bmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC0xNDEsMTAgKzE0MywxMCBA
QCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlCiAgICAgaWYgKHRhcmdl
dC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cikpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNj
cmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAg
ICAgICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwgdHJhcFJlc3Vs
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUg
YW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBzaG91bGQgYmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IHRhcmdldCdzIHByb3BlcnR5IikpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0
JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkg
c2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSIpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgZGVzY3JpcHRvci5nZXR0ZXIoKS5pc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXRyYXBSZXN1bHQuaXNVbmRlZmluZWQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94
eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBw
cm9wZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUg
YWNjZXNzb3IgcHJvcGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIikp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjcsOCArMTY5LDkgQEAgYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybUdldChFeGVjU3RhdGUqIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVy
bmFsTWV0aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKQEAgLTE4Miw3ICsxODUsNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9
IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2
b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAzLDcgKzIwNiw3IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkgJiYgIXRyYXBSZXN1bHQuaXNP
YmplY3QoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
cmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBi
ZSBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBiZSBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMTYsNyArMjE5LDcgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgICAgICBpZiAoIWlzVGFy
Z2V0UHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKCF0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXaGVuIHRo
ZSByZXN1bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgaXMgdW5kZWZpbmVkIHRoZSB0
YXJnZXQgbXVzdCBiZSBjb25maWd1cmFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiB0aGUgcmVzdWx0IG9mICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUg
Y29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXNuJ3Qgd29yayBpZiAndGFyZ2V0JyBpcyBhbm90aGVy
IFByb3h5LiBXZSBkb24ndCBoYXZlIGlzRXh0ZW5zaWJsZSBpbXBsZW1lbnRlZCBpbiBhIHdheSB0
aGF0IGZpdHMgdy8gUHJveHlzLgpAQCAtMjI4LDcgKzIzMSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb21lIHVwIHdp
dGggYSB0ZXN0IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUgaG93IHRvIGJlY2F1c2UKICAg
ICAgICAgICAgIC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBhbGwgZmllbGRzIFtbQ29uZmln
dXJhYmxlXV0gZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0Mzc2Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyByZXR1cm5zIHVu
ZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxkIGJlIGV4dGVuc2libGUiKSk7
CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwg
dGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxkIGJlIGV4dGVuc2libGUiKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjQ2LDEzICsyNDksMTMgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgIGJvb2wgdmFsaWQgPSB2
YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG51bGxwdHIsIHByb3BlcnR5
TmFtZSwgaXNFeHRlbnNpYmxlLAogICAgICAgICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1Rh
cmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmluZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwg
dGhyb3dFeGNlcHRpb24pOwogICAgIGlmICghdmFsaWQpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGlibGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwo
IlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGZhaWxzIHRoZSBJc0NvbXBh
dGlibGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmICghdHJhcFJlc3VsdEFzRGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkg
ewogICAgICAgICBpZiAoIWlzVGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCB8fCB0YXJn
ZXRQcm9wZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yJyBjYW4ndCBiZSBub24tY29uZmlndXJhYmxlIHdoZW4gdGhlICd0YXJnZXQn
IGRvZXNuJ3QgaGF2ZSBpdCBhcyBhbiBvd24gcHJvcGVydHkgb3IgaWYgaXQgaXMgYSBjb25maWd1
cmFibGUgb3duIHByb3BlcnR5IG9uICd0YXJnZXQnIikpOworICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUg
J3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBh
IGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzMsOCArMjc2LDkgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5p
c1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCogdGFyZ2V0ID0g
dGhpcy0+dGFyZ2V0KCk7CkBAIC0yODksNyArMjkzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUhhc1Byb3BlcnR5KEV4ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5o
YW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBB
U0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMyMCwxNCArMzI0LDE0IEBAIGJvb2wgUHJveHlP
YmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKGlzUHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAg
aWYgKCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0
cnVlJyBmb3Igbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzIikpOworICAgICAgICAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAn
aGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcyIp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAg
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3Qg
cmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmplY3Qgd2l0aCBh
IGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCByZXR1
cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIG9iamVjdCB3aXRoIGEgY29u
ZmlndXJhYmxlIHByb3BlcnR5IikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzM4LDggKzM0MiwxMCBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlCiAKIGJvb2wgUHJveHlPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdENvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPnZtKCku
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgeworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBzbG90LmRpc2FibGVDYWNoaW5n
KCk7CkBAIC0zNzYsOCArMzgyLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0
UHV0RnVuYwogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0UHV0KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAg
ICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMzg2LDcgKzM5Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhl
Y1N0YXRlKiAKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwog
ICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC00MTgsMTEgKzQyNSwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtUHV0KEV4ZWNTdGF0ZSogCiAgICAgaWYgKHRhcmdldC0+Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpIHsKICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYm
ICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICghc2FtZVZhbHVlKGV4
ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwgcHV0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBv
biBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0
JyBzaG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5
IG9uIHRoZSAndGFyZ2V0JyIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEg
bm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNo
b3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9yIGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24g
dGhlICd0YXJnZXQnIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9y
KCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgZGVzY3JpcHRvci5zZXR0ZXIoKS5p
c1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFi
bGUgYWNjZXNzb3IgcHJvcGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNl
IikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJh
YmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxz
ZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ2
OCwxNCArNDc1LDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWwK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwor
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KICAgICBQcm94eU9i
amVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAg
SlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVy
VmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRs
ZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxE
YXRhOwpAQCAtNTE3LDE0ICs1MjUsMTUgQEAgQ2FsbFR5cGUgUHJveHlPYmplY3Q6OmdldENhbGxE
YXRhKEpTQ2VsbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVBy
b3h5Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIGlmIChVTkxJS0VM
WSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29w
ZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAg
ICB9CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+
Y2FsbGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsK
ICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAg
IEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTU1MSw3ICs1NjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmICgh
cmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1l
dGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tIFByb3h5IGhh
bmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hvdWxkIGJlIGFuIG9iamVjdCIpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTU3Miw4ICs1ODEsOSBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uCiBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0RGVsZXRlKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtNTgyLDcgKzU5Miw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhl
Y1N0YXQKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAg
IGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC02MTMsNyArNjIzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURl
bGV0ZShFeGVjU3RhdAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGlm
ICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpKSB7CiAgICAgICAgIGlmICghZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewot
ICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhh
bmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4g
dGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUiKSk7CisgICAgICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkg
aGFuZGxlcidzICdkZWxldGVQcm9wZXJ0eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hl
biB0aGUgdGFyZ2V0J3MgcHJvcGVydHkgaXMgbm90IGNvbmZpZ3VyYWJsZSIpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTY0OCwxNCArNjU4LDE1IEBA
IGJvb2wgUHJveHlPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhh
bmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFs
cmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTY4NCw3ICs2OTUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4
dGVuc2lvCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKHRhcmdldElzRXh0ZW5zaWJsZSkgewotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ3ByZXZlbnRF
eHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggaXRzIHRhcmdldCBpcyBl
eHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsKKyAgICAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdz
ICdwcmV2ZW50RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0
YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03MDAsMTQgKzcx
MSwxNSBAQCBib29sIFByb3h5T2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhKU09iCiBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAo
aGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5
QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtNzM5LDExICs3NTEsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0
ZW5zaWJsZShFeAogICAgIGlmICh0cmFwUmVzdWx0QXNCb29sICE9IGlzVGFyZ2V0RXh0ZW5zaWJs
ZSkgewogICAgICAgICBpZiAoaXNUYXJnZXRFeHRlbnNpYmxlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIXRyYXBSZXN1bHRBc0Jvb2wpOwotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAgcmV0dXJu
ZWQgZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIHRydWUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCBy
ZXR1cm5lZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhh
dmUgcmV0dXJuZWQgdHJ1ZSIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VCghaXNUYXJnZXRFeHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNC
b29sKTsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQ
cm94eSBvYmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUg
dGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIp
KTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJQcm94eSBvYmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUg
d2hlbiB0aGUgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5l
ZCBmYWxzZSIpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTc1OCw4ICs3NzAsOSBAQCBi
b29sIFByb3h5T2JqZWN0Ojppc0V4dGVuc2libGUoSlNPYmplY3QqCiBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03NzMsNyArNzg2LDcgQEAgYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJl
dm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTgxOCwxMSArODMxLDExIEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKIAogICAgIGlmICghaXNUYXJn
ZXREZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICBpZiAoIXRhcmdldElzRXh0ZW5zaWJsZSkg
ewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5
J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQcm94eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmlu
ZWQgYW5kIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUiKSk7CisgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVm
aW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3VnaCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCBhbmQg
dGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFsc2UpIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdz
ICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi1jb25maWd1cmFi
bGUgZmllbGQgZXZlbiB0aG91Z2ggZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQcm94
eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBub24tY29uZmlndXJhYmxlIGZpZWxkIGV2
ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJveHkncyB0YXJnZXQg
cmV0dXJuZWQgdW5kZWZpbmVkIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTgzNSwxMSArODQ4LDExIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZp
bmVPd25Qcm9wZXIKICAgICBib29sIHRocm93RXhjZXB0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBp
c0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5hbWUsIHRhcmdldElzRXh0ZW5zaWJsZSwgZGVzY3Jp
cHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3VycmVudCwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlm
ICghaXNDb21wYXRpYmxlRGVzY3JpcHRvcikgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBk
ZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRo
ZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0
cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlzIGNvbXBh
dGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgaWYgKHNldHRpbmdDb25maWd1cmFibGVUb0ZhbHNlICYmIHRh
cmdldERlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBu
b3QgZGVmaW5lIGEgbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4g
dGhvdWdoIHRoZSBpbnB1dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBz
byIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgbm9u
LWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRoZSBpbnB1
dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyIpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTg1NSwxMyArODY4LDE0IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2IKIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZv
cm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHRyYXBSZXN1bHQsIEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEpT
VmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFs
dWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2
b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NTEsNyAr
OTY1LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAg
Zm9yIChVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA6IHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMp
IHsKICAgICAgICAgaWYgKHJlbW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGlt
cGwpID09IElzTm90Q29udGFpbmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29u
ZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0
aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyAn
dGFyZ2V0JyBoYXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBs
KSwgIicgdGhhdCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAi
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC05NjEsMTMgKzk3
NSwxMyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOCiAKICAgICBm
b3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Q29uZmlndXJhYmxlS2V5cykgewog
ICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tlZFJlc3VsdEtleXMoaW1wbCkg
PT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBoYXMg
Y29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBp
biB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3Qn
cyBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBoYXMgY29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBT
dHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25L
ZXlzJyB0cmFwIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKHVuY2hlY2tlZFJlc3VsdEtleXMuc2l6ZSgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhv
ZCByZXR1cm5lZCBhIGtleSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgbm9uLWV4dGVuc2li
bGUgdGFyZ2V0IikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQg
YSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRzIG5vbi1leHRlbnNpYmxlIHRhcmdldCIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTEwMDQsMTQgKzEwMTgsMTUgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZShFeAogICAgIEFTU0VSVChwcm90b3R5
cGUuaXNPYmplY3QoKSB8fCBwcm90b3R5cGUuaXNOdWxsKCkpOwogCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAo
VU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgSlNW
YWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1
ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZv
a2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEw
MzksNyArMTA1NCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgK
ICAgICAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKICAgICAgICAgaWYgKHNob3VsZFRo
cm93SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBp
dCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4
cGVjdGVkIHRvIHN1Y2NlZWQiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5l
ZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4g
VGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTA1Myw3ICsxMDY4LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybVNldFByb3RvdHlwZShFeAogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHByb3RvdHlwZSwgdGFyZ2V0
UHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFy
Z2V0IGlzIG5vbi1leHRlbnNpYmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3Qg
dGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSBy
ZXR1cm5lZCBmYWxzZSIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1cm5lZCB0
cnVlIHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBwcm90b3R5
cGUgdmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2YWx1ZS4g
SXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTEwNjgsMTQgKzEwODMsMTUgQEAgYm9vbCBQcm94eU9iamVjdDo6c2V0UHJv
dG90eXBlKEpTT2JqZWN0KgogSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2Fm
ZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZh
bHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTA5Nyw3ICsxMTEz
LDcgQEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogCiAgICAgaWYgKCF0cmFwUmVzdWx0LmlzT2JqZWN0KCkgJiYgIXRy
YXBSZXN1bHQuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVp
dGhlciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldFBy
b3RvdHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIikp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTExMSw3ICsxMTI3LDcg
QEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQogICAgIGlmICh2bS5l
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBpZiAoIXNhbWVWYWx1
ZShleGVjLCB0YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdnZXRQcm90b3R5cGVPZicgdHJh
cCBmb3IgYSBub24tZXh0ZW5zaWJsZSB0YXJnZXQgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1
ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvdG90eXBlIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZ2V0UHJvdG90eXBlT2Yn
IHRyYXAgZm9yIGEgbm9uLWV4dGVuc2libGUgdGFyZ2V0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUg
dmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3RvdHlwZSIpKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxl
Y3RPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZmxlY3RPYmplY3QuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMjYg
Kzk1LDI5IEBAIHZvaWQgUmVmbGVjdE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuY29uc3RydWN0CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50
KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0
cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0
cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlOwogICAgIGlmICghdGFy
Z2V0LmlzQ29uc3RydWN0b3IoY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25z
dHJ1Y3RvciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBKU1Zh
bHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDMpIHsKICAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMik7CiAgICAgICAgIGlm
ICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0
cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVz
ZW50IikpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1
aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVzZW50IikpKTsK
ICAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgSlNPYmpl
Y3QqIGFyZ3VtZW50c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihleGVjLT5hcmd1
bWVudCgxKSk7CiAgICAgaWYgKCFhcmd1bWVudHNPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNv
bnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25k
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAKICAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlr
ZShleGVjLCBhcmd1bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCBBU0NJSUxp
dGVyYWwoIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIiksIFsmXSAoSlNWYWx1ZSB2YWx1
ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVl
KTsKQEAgLTEyOSw5ICsxMzIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5k
ZWZpbmVwcm9wZXJ0eQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVl
IHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1
bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5kZWZp
bmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsK
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ1LDI1ICsxNTEsMzEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogICAgIC8vIFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvciB3aGVuIHRoZSBkZWZpbmVPd25Qcm9w
ZXJ0eSBvcGVyYXRpb24gZmFpbHMuCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IGZhbHNlOwogICAg
IEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRo
cm93KSkpOwogfQogCiAvLyBGSVhNRTogUmVmbGVjdC5lbnVtZXJhdGUgaXMgcmVtb3ZlZCBpbiBF
Q01BIDIwMTYgZHJhZnQuCiAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtcmVmbGVjdC5lbnVtZXJhdGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdEVudW1lcmF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJn
ZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVm
bGVjdC5lbnVtZXJhdGUgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVy
YXRvclN0cnVjdHVyZSgpLCBhc09iamVjdCh0YXJnZXQpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgY29u
c3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5
S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MCw5ICsxOTIs
MTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6
Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2Ny
aXB0b3IKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CiAKICAgICBhdXRvIGtleSA9IGV4ZWMtPmFyZ3VtZW50KDEp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MTk0LDE4ICsyMDksMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRwcm90
b3R5cGVvZgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJv
dG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdl
dCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBi
ZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXRQcm90b3R5
cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoZXhl
YywgYXNPYmplY3QodGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LmlzZXh0ZW5zaWJsZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0IikpKTsKIAogICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+
aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIx
NiwyMCArMjM3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qub3dua2V5cwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Qub3du
S2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1l
bnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG93blByb3Bl
cnR5S2V5cyhleGVjLCBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2Rl
OjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwog
fQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnByZXZl
bnRleHRlbnNpb25zCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQ
cmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIGJv
b2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHJldmVudEV4dGVu
c2lvbnMob2JqZWN0LCBleGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwpAQCAtMjM4
LDkgKzI2NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXQgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Iikp
KTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIAogICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKQEAgLTI1NCwyNSArMjg0LDI3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamUKICAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhh
cHBlbiBpbiBzdHJpY3QgbW9kZS4KICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFs
c2U7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIHNob3VsZFRocm93SWZDYW50
U2V0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpOwog
fQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHBy
b3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQ
cm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGFy
Z2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3Rv
dHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAg
IEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3RvLmlzT2Jq
ZWN0KCkgJiYgIXByb3RvLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXRQcm90b3R5cGVP
ZiByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVs
bCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVp
cmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsK
IAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAgaWYgKCFj
aGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgYm9v
bCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG8s
IHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOSBAQCBp
bmxpbmUgU3RydWN0dXJlKiBnZXRSZWdFeHBTdHJ1Y3R1cmUoRXhlCiAKIGlubGluZSBSZWdFeHBG
bGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmbGFncykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgaWYgKGZsYWdzLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBOb0ZsYWdzOwog
ICAgIEpTU3RyaW5nKiBmbGFnc1N0cmluZyA9IGZsYWdzLnRvU3RyaW5nKGV4ZWMpOwpAQCAtMjIy
LDEzICsyMjUsMTUgQEAgaW5saW5lIFJlZ0V4cEZsYWdzIHRvRmxhZ3MoRXhlY1N0YXRlKiBleAog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRGbGFn
czsKICAgICBpZiAocmVzdWx0ID09IEludmFsaWRGbGFncykKLSAgICAgICAgdGhyb3dTeW50YXhF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhw
IGNvbnN0cnVjdG9yLiIpKTsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0
cnVjdG9yLiIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIHJl
Z0V4cENyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgbmV3VGFyZ2V0LCBKU1ZhbHVlIHBhdHRlcm5BcmcsIEpTVmFsdWUgZmxhZ3NBcmcp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBwYXR0ZXJuID0gcGF0dGVybkFyZy5pc1VuZGVmaW5l
ZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMzksNyArMjQ0LDcgQEAgc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVhdGUoRXhl
Y1N0YXRlKgogCiAgICAgUmVnRXhwKiByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVy
biwgZmxhZ3MpOwogICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB2
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVy
cm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsK
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2V0UmVnRXhwU3RydWN0dXJlKGV4ZWMsIGds
b2JhbE9iamVjdCwgbmV3VGFyZ2V0KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsOCBAQCBNYXRjaFJlc3VsdCBSZWdF
eHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXhFbmRGdW5jPgog
SlNWYWx1ZSBjb2xsZWN0TWF0Y2hlcyhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcq
IHN0cmluZywgY29uc3QgU3RyaW5nJiBzLCBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3Is
IFJlZ0V4cCogcmVnRXhwLCBjb25zdCBGaXhFbmRGdW5jJiBmaXhFbmQpCiB7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSBj
b25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAsIHN0cmluZywgcywgMCk7CiAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKQEAgLTE5Nyw3ICsxOTksNyBA
QCBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZNJiB2bSwgRXhlY1N0YXRlCiAgICAgICAgICAgICBN
YXRjaFJlc3VsdCBzYXZlZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgICAgIGRvIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXJyYXktPmxlbmd0aCgpICsgbWF0Y2hDb3VudCA+PSBNQVhfU1RPUkFH
RV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjA0ODcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVnRXhwLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZUlubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAgICAgCkBAIC00MywyMiArNDQsMjggQEAgcHVibGljOgogCiAgICAgYm9vbCBzZXRM
YXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbGFzdEluZGV4KQogICAgIHsKKyAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7
CiAgICAgICAgICAgICBtX2xhc3RJbmRleC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVy
KGxhc3RJbmRleCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBib29sIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbGFzdElu
ZGV4LCBib29sIHNob3VsZFRocm93KQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAgICAg
aWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAgICAgICBtX2xhc3RJ
bmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFzdEluZGV4KTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgSlNWYWx1ZSBnZXRMYXN0SW5kZXgoKSBjb25zdApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCwxMiBAQCB2b2lkIFJlZ0V4cFByb3Rv
dHlwZTo6dmlzaXRDaGlsZHJlbihKU0NlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEwOSw5ICsxMTIsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCAiQnVpbHRpbiBSZWdFeHAgZXhlYyBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghc3RyaW5nKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTIwLDkgKzEy
NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBKU1N0cmluZyogc3Ry
aW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFz
dHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xMzMsOSArMTQyLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIFJl
Z0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAt
MTQzLDcgKzE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8K
ICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKICAg
ICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBj
b25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5u
b3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVy
LiIpKTsKICAgICAgICAgcmVnRXhwID0gYXNSZWdFeHBPYmplY3QoYXJnMCktPnJlZ0V4cCgpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
QEAgLTE1NiwxNSArMTY4LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAg
aWYgKGZsYWdzID09IEludmFsaWRGbGFncykKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVN5bnRheEVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAg
Y29uc3RydWN0b3IuIikpKTsKICAgICAgICAgfQotICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNy
ZWF0ZShleGVjLT52bSgpLCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIHJlZ0V4cCA9IFJlZ0V4
cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgfQogCiAgICAgaWYgKCFyZWdFeHAt
PmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVn
RXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogCi0gICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+
c2V0UmVnRXhwKGV4ZWMtPnZtKCksIHJlZ0V4cCk7CisgICAgYXNSZWdFeHBPYmplY3QodGhpc1Zh
bHVlKS0+c2V0UmVnRXhwKHZtLCByZWdFeHApOwogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1
ZSktPnNldExhc3RJbmRleChleGVjLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNWYWx1ZSk7CiB9CkBAIC0yMTIsOSArMjI0LDEyIEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NTdHJp
bmcgZmxhZ3NTdHJpbmcoRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogCkBAIC0yMjIsNyArMjM3LDYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgIGlmIChKU1Zh
bHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNPYmplY3QtPmdl
dChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOwogICAgIGlmICh2bS5leGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI0
MiwxMSArMjU2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckdsb2JhbChF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVn
RXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1Jl
Z0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpKTsKQEAgLTI1NCwxMSAr
MjcxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4
cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdF
eHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CkBA
IC0yNjYsMTEgKzI4NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0
aWxpbmUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhl
cml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUg
UmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+cmVnRXhwKCktPm11bHRpbGluZSgp
KSk7CkBAIC0yNzgsMTEgKzMwMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0
ZXJTdGlja3koRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlu
aGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5p
bmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUg
UmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJl
Z0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5zdGlja3koKSkp
OwpAQCAtMjkwLDExICszMTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVy
VW5pY29kZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmlu
aGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUg
UmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBS
ZWdFeHAgb2JqZWN0IikpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+dW5pY29kZSgp
KSk7CkBAIC0zMDIsOSArMzMxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRl
ckZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09i
amVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCIpKTsKIAogICAgIGF1dG8gZmxhZ3Mg
PSBmbGFnc1N0cmluZyhleGVjLCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCkBAIC00MjEsMTEgKzQ1MywxNCBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUgcmVnRXhwUHJvdG9HZXR0ZXJTCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86
KSIpKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQg
b24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJj
ZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKICAgICB9
CiAKICAgICBTdHJpbmcgcGF0dGVybiA9IGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5wYXR0ZXJuKCk7CkBAIC01NDEsNiArNTc2LDcgQEAgdm9pZCBnZW5lcmljU3BsaXQoCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIC8vIDEuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0
aW5dIExldCByeCBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBbaGFuZGxlZCBieSBKUyBi
dWlsdGluXSBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNl
cHRpb24uCkBAIC02NDYsNyArNjgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90bwogICAgICAgICB9KTsKICAgICAKICAgICBpZiAocmVzdWx0TGVuZ3RoICsgZHJ5
UnVuQ291bnQgPj0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCkgewotICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJv
d1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWpl
Y3QuaAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDggKzMzLDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBpbmxpbmUgYm9vbCByZWplY3QoRXhlY1N0YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9u
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKHRocm93RXhjZXB0aW9u
KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgbWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSwxNiBA
QCB2b2lkIFNldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgCiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTZXQoRXhlY1N0YXRlKiBleGVjKQogewotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcihleGVjLCAiU2V0IikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsICJTZXQiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4
ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MCw3ICs3NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRk
ZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlv
bkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAKICAgICBmb3JFYWNoSW5JdGVy
YWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5l
eHRWYWx1ZSkgewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEw
ICs0OCwxMyBAQCB2b2lkIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNTZXRJdGVy
YXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRlcmF0b3IpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1TZXRJdGVy
YXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBT
ZXRJdGVyYXRvci5uZXh0KCkgb24gYSBub24tU2V0SXRlcmF0b3Igb2JqZWN0IikpKTsKIAogICAg
IGlmIChpdGVyYXRvci0+bmV4dChjYWxsRnJhbWUsIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoY2FsbEZyYW1lLCByZXN1
bHQsIGZhbHNlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEzICs4Miwx
NiBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAKIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTU2V0KiBnZXRTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
dGhpc1ZhbHVlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IodGhyb3dT
Y29wZSwgY2FsbEZyYW1lLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1Zh
bHVlKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU1NldCogc2V0ID0g
anNEeW5hbWljQ2FzdDxKU1NldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFzZXQpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVyYXRpb24g
Y2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24g
bm9uLVNldCBvYmplY3QiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBy
ZXR1cm4gc2V0OwpAQCAtMTM5LDE4ICsxNDIsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bgogICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQ
cm90b0Z1bmNWYWx1ZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2Fs
bEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgSlNTZXQqIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRl
IGEgU2V0IHZhbHVlIGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgp
LCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c2V0SXRlcmF0b3JTdHJ1Y3R1
cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgSlNTZXQqIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4o
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFs
KCJDYW5ub3QgY3JlYXRlIGEgU2V0IGVudHJ5IGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0
LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUo
Y2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c2V0
SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZy
YW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBTZXQgZW50cnkgaXRlcmF0b3IgZm9y
IGEgbm9uLVNldCBvYmplY3QuIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0
SXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
PnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByaXZhdGVGdW5jSXNTZXQoRXhlY1N0YXRl
KiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlW
YWx1ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
MiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDYgKzkwLDggQEAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRk
UmVzdWx0IFNwYXJzZUFycgogCiBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAK
ICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKQEAgLTEwMSw3ICsxMDMsNyBA
QCBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTCiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAg
ICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIApAQCAtMTQ4LDE0ICsxNTAsMTcgQEAgdm9pZCBTcGFyc2VBcnJh
eUVudHJ5OjpnZXQoUHJvcGVydHlEZXNjcgogCiBib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiBt
YXAsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlm
ICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHNldChleGVjLT52bSgpLCBtYXAsIHZhbHVlKTsK
KyAgICAgICAgc2V0KHZtLCBtYXAsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC05MSw2ICs5MSw5IEBAIEpTQ2VsbCogSlNDX0hPU1RfQ0FMTCBzdHJpbmdG
cm9tQ2hhckNvZGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
RnJvbUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKQEAgLTEwMyw3ICsxMDYs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpCiAgICAgICAgIHVp
bnQzMl90IGNvZGVQb2ludCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2RlUG9pbnRBc0RvdWJs
ZSk7CiAKICAgICAgICAgaWYgKGNvZGVQb2ludCAhPSBjb2RlUG9pbnRBc0RvdWJsZSB8fCBjb2Rl
UG9pbnQgPiBVQ0hBUl9NQVhfVkFMVUUpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcmd1bWVudHMgY29u
dGFpbiBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHJhbmdlIG9mIGNvZGUgcG9pbnRzIikpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhh
dCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiKSkpOwogCiAgICAgICAgIGlmIChVX0lT
X0JNUChjb2RlUG9pbnQpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8
VUNoYXI+KGNvZGVQb2ludCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtNjMsNiArNjMsOSBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90QnlJCiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZ
KGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBAIC03MCw3ICs3Myw3IEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCkBAIC04MCwxMCArODMs
MTMgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogCiBib29sIFN0
cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0
SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODksNiArMjg5LDkgQEAgc3RydWN0IFN0cmluZ1JhbmdlIHsKIAog
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIGlmIChyYW5nZUNvdW50ID09IDEpIHsKICAgICAgICAgaW50IHNvdXJjZVNpemUgPSBz
b3VyY2UubGVuZ3RoKCk7CiAgICAgICAgIGludCBwb3NpdGlvbiA9IHN1YnN0cmluZ1Jhbmdlc1sw
XS5wb3NpdGlvbjsKQEAgLTMxMSw3ICszMTQsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzU3BsaWNlU3ViCiAgICAgICAgIGNvbnN0IExDaGFyKiBzb3VyY2VEYXRhID0gc291cmNl
LmNoYXJhY3RlcnM4KCk7CiAgICAgICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAg
ICAgICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJh
bmdlQ291bnQ7IGkrKykgewpAQCAtMzI5LDcgKzMzMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWIKIAogICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7CiAgICAgaWYgKCFpbXBsKQot
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgaW50IGJ1
ZmZlclBvcyA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsK
QEAgLTM0NCw2ICszNDcsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3ViCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0
aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJh
bmdlQ291bnQsIGNvbnN0IFN0cmluZyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRvckNvdW50KQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBpZiAocmFuZ2VDb3VudCA9PSAxICYmIHNlcGFyYXRvckNvdW50ID09
IDApIHsKICAgICAgICAgaW50IHNvdXJjZVNpemUgPSBzb3VyY2UubGVuZ3RoKCk7CiAgICAgICAg
IGludCBwb3NpdGlvbiA9IHN1YnN0cmluZ1Jhbmdlc1swXS5wb3NpdGlvbjsKQEAgLTM2NCw3ICsz
NzAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3ViCiAgICAgICAg
ICAgICBhbGxTZXBhcmF0b3JzOEJpdCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAodG90YWxMZW5n
dGguaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUs
IGV4ZWMpOwogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlT
dHJpbmcoZXhlYyk7CkBAIC0zNzUsNyArMzgxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc1NwbGljZVN1YgogCiAgICAgICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1ZmZlcik7CiAgICAg
ICAgIGlmICghaW1wbCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogCiAgICAgICAgIGludCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQs
IHNlcGFyYXRvckNvdW50KTsKICAgICAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CkBAIC00MDAsNyAr
NDA2LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgIFVD
aGFyKiBidWZmZXI7CiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh0b3RhbExlbmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBpbnQg
bWF4Q291bnQgPSBzdGQ6Om1heChyYW5nZUNvdW50LCBzZXBhcmF0b3JDb3VudCk7CiAgICAgaW50
IGJ1ZmZlclBvcyA9IDA7CkBAIC03NTIsMTAgKzc1OCwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
Y2hlY2tPYmplY3RDb2VyY2libGUoCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
IHN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIHJlcGVhdENoYXJhY3RlcihFeGVjU3RhdGUmIGV4ZWMs
IENoYXJhY3RlclR5cGUgY2hhcmFjdGVyLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXIgPSBudWxscHRyOwogICAgIGF1dG8gaW1wbCA9
IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVwZWF0Q291bnQsIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhlYyk7
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCAmZXhlYyk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzk3LDggKzgwNiwxMCBAQCBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2UoCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIHJlcGxhY2UoCiAgICAgVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1ZhbHVlIHNlYXJjaFZhbHVlLCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKIHsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtODQxLDYgKzg1Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgLy8gQWxzbyB1c2VkIGZvciB2
YWx1ZU9mLgogCkBAIC04NTAsMTQgKzg2NCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhTdHJpbmdPYmplY3Q6
OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmdPYmplY3Qo
dGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJB
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgSlNTdHJpbmc6OlNh
ZmVWaWV3IHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAg
ICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkp
IHsKQEAgLTg3NCw5ICs4OTEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0No
YXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIEpTU3Ry
aW5nOjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhl
Yyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJ
bnQzMigpKSB7CkBAIC05MDMsOSArOTIzLDEyIEBAIHN0YXRpYyBpbmxpbmUgVUNoYXIzMiBjb2Rl
UG9pbnRBdChjb25zdCAKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAK
ICAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTkyOSwyMCArOTUyLDI2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBhc1N0cmluZyh0
aGlzVmFsdWUpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSkpOwog
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Z0Zyb21Bcmd1bWVudHMoZXhlYywgdGhpc1ZhbHVlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYyk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAg
ICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtOTc3LDkgKzEwMDYsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC0xMDE0LDkgKzEw
NDYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTIwMSw5
ICsxMjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIHVuc2lnbmVkIGxlbjsKICAgICBK
U1N0cmluZyoganNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5nOwpAQCAtMTI1Nyw5ICsx
Mjk1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmkKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgSlNTdHJpbmcqIGpzU3RyaW5n
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTEyOTcsOSArMTMzOCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIEpT
U3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFN0cmlu
ZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmluZyBsb3dlcmNhc2VkU3RyaW5nID0g
cy5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7CkBAIC0xMzEwLDkgKzEzNTQsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVj
KTsKICAgICBTdHJpbmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNlV2l0
aG91dExvY2FsZSgpOwpAQCAtMTMyMyw5ICsxMzcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0MCwxMCArMTM5MCwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAjaWYgRU5BQkxFKElOVEwpCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTdGF0ZSogc3RhdGUsIGludDMyX3Qg
KCpjb252ZXJ0Q2FzZSkoVUNoYXIqLCBpbnQzMl90LCBjb25zdCBVQ2hhciosIGludDMyX3QsIGNv
bnN0IGNoYXIqLCBVRXJyb3JDb2RlKikpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyAxLiBMZXQgTyBi
ZSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7CiAKICAgICAv
LyAyLiBMZXQgUyBiZSBUb1N0cmluZyhPKS4KICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1
ZS50b1N0cmluZyhzdGF0ZSk7CkBAIC0xNDExLDEwICsxNDY0LDEwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1MKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIo
cmVzdWx0TGVuZ3RoKTsKICAgICAgICAgY29udmVydENhc2UoYnVmZmVyLmRhdGEoKSwgcmVzdWx0
TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2aWV3TGVuZ3RoLCB1dGY4TG9j
YWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShlcnJvcikp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdV9lcnJvck5hbWUo
ZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IHN0YXRlLCB1X2Vycm9yTmFtZShlcnJvcikpOwogICAgICAgICBsb3dlciA9IFN0cmluZyhidWZm
ZXIuZGF0YSgpLCByZXN1bHRMZW5ndGgpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7
CiAKICAgICAvLyAxOC4gUmV0dXJuIEwuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhzdGF0ZSwgbG93ZXIpKTsKQEAgLTE0MzgsOSArMTQ5MSwxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jQmlnKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ0OSw5ICsxNTA1LDEyIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTbWFsbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYyk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NjAsOSArMTUxOSwxMiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmxpbmsoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
Y2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDcxLDkgKzE1MzMsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0JvbGQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDgyLDkgKzE1NDcsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZpeGVkKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ5Myw5ICsxNTYxLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUwNCw5ICsx
NTc1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdHJpa2UoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTE1
LDkgKzE1ODksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1
MjYsOSArMTYwMywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3VwKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
MTUzNyw5ICsxNjE3LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250Y29s
b3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xNTUzLDkgKzE2MzYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJp
bmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTYwNSw5ICsxNjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0xNjIxLDkgKzE3MTAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0xpbmsoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNjY3LDggKzE3NTksMTEgQEAgZW51bSB7CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSB0cmltU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlz
VmFsdWUsIGludCB0cmltS2luZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBT
dHJpbmcgc3RyID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpA
QCAtMTcyMCwyMSArMTgxNSwyMyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1
bmNhdGVUCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Rh
cnRzV2l0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBTdHJp
bmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHBy
ZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNS
ZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdF
eHAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdF
eHAiKTsKIAogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTc1NiwyMSArMTg1
MywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNo
SW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhw
KHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24p
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJp
bmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5n
LnByb3RvdHlwZS5lbmRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAgIFN0cmluZyBz
ZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTgwOCwyMSArMTkwNywyMyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFs
dWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CiAgICAg
aWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVz
IGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBj
YW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpA
QCAtMTg1NSw0MiArMTk1Niw1MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0
aW5TdHJpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRl
cmF0b3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgbm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVUNoYXIqIHNv
dXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgVU5vcm1hbGl6YXRpb25Nb2RlIGZvcm0pCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGludDMy
X3Qgbm9ybWFsaXplZFN0cmluZ0xlbmd0aCA9IHVub3JtX25vcm1hbGl6ZShzb3VyY2UsIHNvdXJj
ZUxlbmd0aCwgZm9ybSwgMCwgbnVsbHB0ciwgMCwgJnN0YXR1cyk7CiAKICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykgJiYgc3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CiAgICAg
ICAgIC8vIFRoZSBiZWhhdmlvciBpcyBub3Qgc3BlY2lmaWVkIHdoZW4gbm9ybWFsaXplIGZhaWxz
LgogICAgICAgICAvLyBOb3cgd2UgdGhyb3cgYSB0eXBlIGVyb3JyIHNpbmNlIGl0IHNlZW1zIHRo
YXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgYXJlIGludmFsaWQuCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgIH0KIAogICAgIFVDaGFyKiBidWZmZXIgPSBudWxscHRyOwog
ICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobm9ybWFs
aXplZFN0cmluZ0xlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVy
biB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CiAgICAgdW5vcm1fbm9ybWFsaXplKHNvdXJjZSwgc291cmNlTGVuZ3RoLCBmb3JtLCAwLCBi
dWZmZXIsIG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgV1RGTW92ZShpbXBsKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjKTsKICAgICBKU1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE5
MTEsNyArMjAyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
ICAgICAgICAgZWxzZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAgICAgICBmb3Jt
ID0gVU5PUk1fTkZLRDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiYXJndW1lbnQg
ZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFsaXphdGlv
biBmb3JtIikpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6
ZShleGVjLCBzb3VyY2UuZ2V0KCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHNvdXJjZS5sZW5n
dGgoKSwgZm9ybSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UmVjdXJzaW9uQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAxMS0yMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTI4LDcgKzI4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTVmFs
dWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IoKQogewot
ICAgIHJldHVybiBKU0M6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworICAgIHJldHVybiBKU0M6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIG1f
ZXhlYyk7CiB9CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6ZW1wdHlTdHJpbmco
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTg3LDcgKzg3LDkgQEAgSlNPYmplY3QqIFN5bWJvbDo6dG9PYmplY3QoRXhlY1N0
YXRlKiBleAogCiBkb3VibGUgU3ltYm9sOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVy
dCBhIHN5bWJvbCB0byBhIG51bWJlciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworICAgIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8g
YSBudW1iZXIiKSk7CiAgICAgcmV0dXJuIDAuMDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0xMTAsMTYgKzExMCwxOSBAQCBjb25zdCBjaGFyKiBTeW1ib2xLZXlGb3JU
eXBlRXJyb3IgPSAiU3ltCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29u
c3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVl
IHN5bWJvbFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5p
c1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIFN5bWJvbEtleUZvclR5cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIFN5bWJvbEtleUZvclR5cGVF
cnJvcikpOwogCiAgICAgU3ltYm9sSW1wbCogdWlkID0gYXNTeW1ib2woc3ltYm9sVmFsdWUpLT5w
cml2YXRlTmFtZSgpLnVpZCgpOwogICAgIGlmICghdWlkLT5zeW1ib2xSZWdpc3RyeSgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgQVNTRVJU
KHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSAmZXhlYy0+dm0oKS5zeW1ib2xSZWdpc3RyeSgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGV4ZWMtPnZtKCkuc3lt
Ym9sUmVnaXN0cnkoKS5rZXlGb3JTeW1ib2woKnVpZCkpKTsKKyAgICBBU1NFUlQodWlkLT5zeW1i
b2xSZWdpc3RyeSgpID09ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHZtLnN5bWJvbFJlZ2lzdHJ5KCkua2V5Rm9yU3ltYm9s
KCp1aWQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC03MiwxNiArNzIsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFN5bWJvbFZhbHVlT2ZU
eXBlRXJybwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBTeW1ib2wqIHN5bWJvbCA9IG51bGxwdHI7CiAg
ICAgaWYgKHRoaXNWYWx1ZS5pc1N5bWJvbCgpKQogICAgICAgICBzeW1ib2wgPSBhc1N5bWJvbCh0
aGlzVmFsdWUpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgU3ltYm9sVG9TdHJp
bmdUeXBlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmICghdGhpc09iamVj
dC0+aW5oZXJpdHMoU3ltYm9sT2JqZWN0OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3ltYm9sVG9TdHJp
bmdUeXBlRXJyb3IpOwogICAgICAgICBzeW1ib2wgPSBhc1N5bWJvbChqc0Nhc3Q8U3ltYm9sT2Jq
ZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiAgICAgfQogCkBAIC05MCwxNiAr
OTMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgU3ltYm9sVmFsdWVPZlR5
cGVFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3lt
Ym9sT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50
ZXJuYWxWYWx1ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Rocm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKworI2luY2x1ZGUgIlRocm93U2NvcGVT
dGFjay5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorI2lmIEVO
QUJMRShFWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FUSU9OKQorCituYW1lc3BhY2UgeworCitib29s
IHRyYWNlT24gPSBmYWxzZTsKKworfTsKKworLyoKKyAgICBUaHJvd1Njb3BlIHZlcmlmaWNhdGlv
biB3b3JrcyB0byBzaW11bGF0ZSBleGNlcHRpb24gdGhyb3dzIGFuZCBjYXRjaCBjYXNlcyB3aGVy
ZQorICAgIGV4Y2VwdGlvbiBjaGVja3MgYXJlIG1pc3NpbmcuIFRoaXMgaXMgaG93IGl0IHdvcmtz
OgorCisgMS4gV2hhdCBpcyBiZWluZyBjaGVja2VkPworCisgICAgVGhlIGdpc3Qgb2YgaXQgaXMg
dGhhdCBwb3RlbnRpYWwgdGhyb3cgc2l0ZXMgd2lsbCBzZXQgYSBmbGFnIHRvIGluZGljYXRlIHRo
YXQgYW4KKyAgICBleGNlcHRpb24gbWF5IGJlIHRocm93bi4KKworIDIuIEluc3RhbnRpYXRpbmcg
dGhlIFRocm93U2NvcGUuCisKKyAgICBCeSBjb252ZW50aW9uLCB0aGUgVGhyb3dTY29wZSBtdXN0
IGJlIGluc3RhbnRpYXRlZCBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbi4KKyAgICBUaGlzIGFs
bG93cyB0aGUgVGhyb3dTY29wZSB0byBjb3ZlciB0aHJvd3MgdGhhdCBtYXkgb2NjdXIgYW55d2hl
cmUgaW4gdGhlIGZ1bmN0aW9uLgorICAgIFRoZSBvbmx5IGxpbmVzIG9mIGNvZGUgdGhhdCBtYXkg
cHJlY2VlZCB0aGUgVGhyb3dTY29wZSBhcmUgY29kZSBuZWVkZWQgdG8gc2FmZWx5CisgICAgYXR0
YWluIHRoZSBWTSByZWZlcmVuY2UgbmVlZGVkIHRvIGluc3RhbnRpYXRlIHRoZSBUaHJvd1Njb3Bl
LgorCisgICAgVG8gaW5zdGFudGlhdGUgdGhlIFRocm93U2NvcGUsIHVzZSB0aGUgIE1BS0VfVEhS
T1dfU0NPUEUgbWFjcm8uIFRoZSBtYWNybyB3aWxsCisgICAgY2FwdHVyZSB0aGUgX19QUkVUVFlf
RlVOQ1RJT05fXyBuYW1lIG9mIHRoZSBvd25lciBmdW5jdGlvbiwgYW5kIHVzZSB0aGF0IHRvCisg
ICAgcmVjb25zdHJ1Y3QgdGhlIEMgc3RhY2sgdHJhY2UgZm9yIGlkZW50aWZ5aW5nIHRoZSBzb3Vy
Y2Ugb2YgdGhlIHRocm93IHRoYXQgaXMgbm90CisgICAgYmVpbmcgaGFuZGxlZC4KKworIDMuIEV2
ZXJ5IHRocm93IGhlbHBlciBmdW5jdGlvbiBtdXN0IHRha2UgYSBUaHJvd1Njb3BlLgorCisgICAg
VGhpcyBlbnN1cmVzIHRoYXQgd2UgY2FuIHNpbXVsYXRlIGEgdGhyb3cgZnJvbSB0aGUgZnVuY3Rp
b25zIHRoYXQgY2FsbCB0aG9zZSB0aHJvdworICAgIGhlbHBlcnMuIEl0IGlzIG5vdCBhZGVxdWF0
ZSB0byBqdXN0IHNldCB0aGUgbmVlZHNDaGVjayBmbGFnIGluIHRoZSBib3R0b20gZnVuY3Rpb24K
KyAgICB0aGF0IHRocm93cyB0aGUgZXhjZXB0aW9uLiBUaGlzIGlzIGJlY2F1c2UgdGhhdCBmdW5j
dGlvbiB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgbm90CisgICAgYmUgY2FsbGVkIGR1cmluZyB0aGUg
ZXhlY3V0aW9uIG9mIG5vcm1hbCB3b3JrIGxvYWRzLiBUbyBpbmNyZWFzZSBjb3ZlcmFnZSwgd2Ug
cmVseQorICAgIGluc3RlYWQgb24gdGhlIFRocm93U2NvcGUgKG5lY2Vzc2l0YXRlZCBieSB0aGUg
dGhyb3cgaGVscGVycykgdG8gc2V0IHRoZSBuZWVkc0NoZWNrCisgICAgZmxhZy4KKworIDQuIFRo
ZSBib3R0b20gdGhyb3cgZnVuY3Rpb24gbXVzdCBhbHNvIHNldCB0aGUgbmVlZHNDaGVjayBmbGFn
LgorCisgICAgQ29uc2lkZXIgdGhpcyBjYXNlOgorCisgICAgICAgIHZvaWQgZ29vKC4uLikKKyAg
ICAgICAgeworICAgICAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7Cisg
ICAgICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAg
ICAgeworICAgICAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgIGlmICh4KQorICAgICAgICAgICAgICAgIHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oLi4uKTsgLy8gKGEpIHRocm93cworCisgICAgICAgICAgICAvLyAo
YikgU2hvdWxkIGNoZWNrIGFuZCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBoZXJlIGJlZm9yZSBjYWxs
aW5nIGdvbygpOworCisgICAgICAgICAgICBnb28oKTsgLy8gKGMpIEV4cGVjdHMgbm8gcGVuZGlu
ZyBleGNlcHRpb25zLgorICAgICAgICB9CisKKyAgICBUaGUgVGhyb3dTY29wZSBpbiBmb28gd2ls
bCBoZWxwIGRldGVjdCB0aGUgY2FzZSB3aGVyZSBjYWxsZXJzIG9mIGZvbygpIGlzIG1pc3NpbmcK
KyAgICBhbiBleGNlcHRpb24gY2hlY2suIEl0IHdpbGwgbm90IGRldGVjdCB0aGUgbWlzc2luZyBj
aGVjayBhdCAoYikgZXZlbiBpZiBnb28oKQorICAgIGhhcyBhIFRocm93U2NvcGUuIFRvIGFsbG93
IHRoZSBUaHJvd1Njb3BlIGluIGdvbygpIHRvIGRldGVjdCB0aGUgbWlzc2luZyBjaGVjayBhdAor
ICAgIChiKSwgdGhlIGJvdHRvbSB0aHJvdyBmdW5jdGlvbiBuZWVkcyB0byBzZXQgdGhlIG5lZWRz
Q2hlY2sgZmxhZyBpLmUuIGluIChhKS4KKyovCisKK0pTX0VYUE9SVF9QUklWQVRFCitUaHJvd1Nj
b3BlOjpUaHJvd1Njb3BlKFZNJiB2bSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBj
aGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQorICAgIDogbV92bSh2bSkKKyAgICAsIG1fcHJldmlv
dXNTY29wZSh2bS5tX3RvcFRocm93U2NvcGUpCisgICAgLCBtX2Z1bmN0aW9uTmFtZShmdW5jdGlv
bk5hbWUpCisgICAgLCBtX2ZpbGUoZmlsZSkKKyAgICAsIG1fbGluZShsaW5lKQoreworICAgIGlm
ICh0cmFjZU9uKQorICAgICAgICBkYXRhTG9nKCJUaHJvd1Njb3BlIFsiLCBtX3ZtLm1fdGhyb3dT
Y29wZVN0YWNrLnNpemUoKSwgIl0gRW50ZXI6ICIsIG1fZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9m
aWxlLCAiOiIsIG1fbGluZSwgIlxuIik7CisKKyAgICBtX3ZtLm1fdGhyb3dTY29wZVN0YWNrLnB1
c2goVGhyb3dTY29wZVN0YWNrOjpFbnRyeShmdW5jdGlvbk5hbWUsIGZpbGUsIGxpbmUpKTsKKyAg
ICBtX3ZtLm1fdG9wVGhyb3dTY29wZSA9IHRoaXM7CisgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tO
ZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6U2NvcGVFbnRyeSk7Cit9CisKK0pTX0VYUE9SVF9QUklWQVRF
CitUaHJvd1Njb3BlOjp+VGhyb3dTY29wZSgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0u
bV90aHJvd1Njb3BlU3RhY2suaXNFbXB0eSgpKTsKKworICAgIHZlcmlmeUV4Y2VwdGlvbkNoZWNr
TmVlZElzU2F0aXNmaWVkKFNpdGU6OlNjb3BlRXhpdCk7CisKKyAgICBib29sIHdpbGxCZUhhbmRs
ZUJ5TExJbnRPckpJVCA9IGZhbHNlOworICAgIHZvaWQqIHByZXZpb3VzU2NvcGUgPSBtX3ByZXZp
b3VzU2NvcGU7CisgICAgdm9pZCogdG9wQ2FsbEZyYW1lID0gbV92bS50b3BDYWxsRnJhbWU7Cisg
ICAgCisgICAgLy8gSWYgdGhlIHRvcENhbGxGcmFtZSB3YXMgcHVzaGVkIG9uIHRoZSBzdGFjayBh
ZnRlciB0aGUgcHJldmlvdXNTY29wZSB3YXMgaW5zdGFudGlhdGVkLAorICAgIC8vIHRoZW4gdGhp
cyBWTUVudHJ5IHRocm93U2NvcGUgd2lsbCBiZSByZXR1cm5pbmcgdG8gTExJTlQgb3IgSklUIGNv
ZGUgdGhhdCBhbHdheXMgZG8KKyAgICAvLyBhbiBleGNlcHRpb24gY2hlY2suIEluIHRoYXQgY2Fz
ZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRocm93IGJlY2F1c2UgdGhlIExMSW50IGFuZCBKSVQKKyAg
ICAvLyB3aWxsIGJlIGNoZWNraW5nIGZvciB0aGUgZXhjZXB0aW9uIHRoZWlyIG93biB3YXkgaW5z
dGVhZCBvZiBjYWxsaW5nIHZtLmV4Y2VwdGlvbigpLgorICAgIGlmICh0b3BDYWxsRnJhbWUgJiYg
cHJldmlvdXNTY29wZSA+IHRvcENhbGxGcmFtZSkKKyAgICAgICAgd2lsbEJlSGFuZGxlQnlMTElu
dE9ySklUID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAoIXdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCkK
KyAgICAgICAgc2ltdWxhdGVUaHJvdygpOworCisgICAgLy8gTWFrZSBzdXJlIHRvIGRvIHRoZSBy
ZXRocm93aW5nIGJlZm9yZSB3ZSBwb3AgdGhlIHNjb3BlLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUg
dGhyb3cKKyAgICAvLyBpcyBhdHRyaWJ1dGVkIHRvIHRoaXMgc2NvcGUgaW5zdGVhZCBvZiB0aGUg
cGFyZW50IHNjb3BlIHRoYXQgd2UncmUgcG9wcGluZyBiYWNrIHRvLgorICAgIG1fdm0ubV90b3BU
aHJvd1Njb3BlID0gbV9wcmV2aW91c1Njb3BlOworICAgIGF1dG8gZW50cnkgPSBtX3ZtLm1fdGhy
b3dTY29wZVN0YWNrLnBvcCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5LmZ1bmN0aW9uTmFt
ZSA9PSBtX2Z1bmN0aW9uTmFtZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZW50cnkubGluZSA9PSBt
X2xpbmUpOworCisgICAgaWYgKHRyYWNlT24pCisgICAgICAgIGRhdGFMb2coIlRocm93U2NvcGUg
WyIsIG1fdm0ubV90aHJvd1Njb3BlU3RhY2suc2l6ZSgpLCAiXSBFeGl0OiAiLCBtX2Z1bmN0aW9u
TmFtZSwgIiBAICIsIG1fZmlsZSwgIjoiLCBtX2xpbmUsICh3aWxsQmVIYW5kbGVCeUxMSW50T3JK
SVQgPyAiIiA6ICIgd2l0aCByZXRocm93IiksICJcbiIpOworfQorCitKU19FWFBPUlRfUFJJVkFU
RQordm9pZCBUaHJvd1Njb3BlOjpzYXRpc2Z5RXhjZXB0aW9uQ2hlY2tOZWVkKGNvbnN0IFZNJiB2
bSkKK3sKKyAgICB2bS5tX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOworCisgICAgaWYgKHRy
YWNlT24pCisgICAgICAgIGRhdGFMb2coIlRocm93U2NvcGUgQ0hFQ0tFRCBleGNlcHRpb25cbiIp
OworfQorCisvL2Jvb2wgVGhyb3dTY29wZTo6aGFzRXhjZXB0aW9uKCkKKy8veworLy8gICAgbV92
bS5tX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOyAvLyBUaGUgY2hlY2sgaGFzIGJlZW4gc2F0
aXNmaWVkLgorLy8gICAgcmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7CisvL30KKy8vCisvL2Jvb2wg
VGhyb3dTY29wZTo6Y2hlY2tBbmRDbGVhckV4Y2VwdGlvbigpCisvL3sKKy8vICAgIGJvb2wgaGFk
RXhjZXB0aW9uID0gbV92bS5leGNlcHRpb24oKTsKKy8vICAgIG1fdm0uY2xlYXJFeGNlcHRpb24o
KTsKKy8vICAgIG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKy8vCisvLyAgICBy
ZXR1cm4gaGFkRXhjZXB0aW9uOworLy99CisKK3ZvaWQgVGhyb3dTY29wZTo6c2ltdWxhdGVUaHJv
dygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV90aHJvd1Njb3BlU3RhY2suaXNFbXB0
eSgpKTsKKyAgICBtX3ZtLm1fc3RhY2tJbmRleEF0U2ltdWxhdGVkVGhyb3dQb2ludCA9IG1fdm0u
bV90aHJvd1Njb3BlU3RhY2subGFzdEVudHJ5SW5kZXgoKTsKKyAgICBtX3ZtLm1fbmVlZEV4Y2Vw
dGlvbkNoZWNrID0gdHJ1ZTsKK30KKwordm9pZCBUaHJvd1Njb3BlOjp2ZXJpZnlFeGNlcHRpb25D
aGVja05lZWRJc1NhdGlzZmllZChUaHJvd1Njb3BlOjpTaXRlIHNpdGUpCit7CisgICAgaWYgKFVO
TElLRUxZKG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spKSB7CisgICAgICAgIHNpemVfdCB0aHJv
d0luZGV4ID0gbV92bS5tX3N0YWNrSW5kZXhBdFNpbXVsYXRlZFRocm93UG9pbnQ7CisgICAgICAg
IHNpemVfdCBmYWlsSW5kZXggPSBtX3ZtLm1fdGhyb3dTY29wZVN0YWNrLmxhc3RFbnRyeUluZGV4
KCk7CisgICAgICAgIGF1dG8gdGhyb3dQb2ludCA9IG1fdm0ubV90aHJvd1Njb3BlU3RhY2suZW50
cnlBdCh0aHJvd0luZGV4KTsKKyAgICAgICAgYXV0byBmYWlsUG9pbnQgPSBtX3ZtLm1fdGhyb3dT
Y29wZVN0YWNrLmxhc3RFbnRyeSgpOworCisgICAgICAgIGF1dG8gc2l0ZU5hbWUgPSBbXSAoU2l0
ZSBzaXRlKSAtPiBjb25zdCBjaGFyKiB7CisgICAgICAgICAgICBzd2l0Y2ggKHNpdGUpIHsKKyAg
ICAgICAgICAgIGNhc2UgU2l0ZTo6U2NvcGVFbnRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4g
IkVudHJ5IjsKKyAgICAgICAgICAgIGNhc2UgU2l0ZTo6U2NvcGVFeGl0OgorICAgICAgICAgICAg
ICAgIHJldHVybiAiRXhpdCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH07CisKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJGQUlMRUQgZXhjZXB0aW9uIGNo
ZWNrIHZlcmlmaWNhdGlvbjpcbiIKKyAgICAgICAgICAgICIgICAgU2ltdWxhdGVkIHRocm93IGZy
b20gVGhyb3dTY29wZSBbIiwgdGhyb3dJbmRleCwgIl06ICIsIHRocm93UG9pbnQuZnVuY3Rpb25O
YW1lLCAiIEAgIiwgdGhyb3dQb2ludC5maWxlLCAiOiIsIHRocm93UG9pbnQubGluZSwgIlxuIgor
ICAgICAgICAgICAgIiAgICBVbmhhbmRsZWQgYXQgVGhyb3dTY29wZSBbIiwgZmFpbEluZGV4LCAi
XSAiLCBzaXRlTmFtZShzaXRlKSwgIjogIiwgZmFpbFBvaW50LmZ1bmN0aW9uTmFtZSwgIiBAICIs
IGZhaWxQb2ludC5maWxlLCAiOiIsIGZhaWxQb2ludC5saW5lLCAiXG4iCisgICAgICAgICAgICAi
XG4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sp
OworICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShFWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FU
SU9OKQorICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBFeGNlcHRpb247CitjbGFzcyBKU09iamVjdDsKK2NsYXNz
IFZNOworCisjaWZuZGVmIEVOQUJMRV9FWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FUSU9OCisjZGVm
aW5lIEVOQUJMRV9FWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FUSU9OICghZGVmaW5lZChOREVCVUcp
KQorI2VuZGlmCisKK2NsYXNzIFRocm93U2NvcGUgeworcHVibGljOgorICAgIFRocm93U2NvcGUo
Vk0mLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIHVuc2lnbmVk
IGxpbmUpOworICAgIH5UaHJvd1Njb3BlKCk7CisKKyAgICBpbmxpbmUgdm9pZCB0aHJvd0V4Y2Vw
dGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBpbmxpbmUgSlNWYWx1ZSB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBpbmxpbmUgSlNPYmplY3QqIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgdm9pZCBzYXRp
c2Z5RXhjZXB0aW9uQ2hlY2tOZWVkKGNvbnN0IFZNJik7CisvLyAgICBpbmxpbmUgYm9vbCBoYXNF
eGNlcHRpb24oKTsKKy8vICAgIGlubGluZSBib29sIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb24oKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYmIGZvcndhcmQoVCYmIHZhbHVlKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBjaGVjayhUIHZhbHVlKTsKKworcHJp
dmF0ZToKKyNpZiBFTkFCTEUoRVhDRVBUSU9OX0NIRUNLX1ZFUklGSUNBVElPTikKKyAgICB2b2lk
IHNpbXVsYXRlVGhyb3coKTsKKworICAgIGVudW0gY2xhc3MgU2l0ZSB7CisgICAgICAgIFNjb3Bl
RW50cnksCisgICAgICAgIFNjb3BlRXhpdAorICAgIH07CisgICAgdm9pZCB2ZXJpZnlFeGNlcHRp
b25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlKTsKKyNlbmRpZgorCisgICAgVk0mIG1fdm07Cisj
aWYgRU5BQkxFKEVYQ0VQVElPTl9DSEVDS19WRVJJRklDQVRJT04pCisgICAgVGhyb3dTY29wZSog
bV9wcmV2aW91c1Njb3BlOworICAgIGNvbnN0IGNoYXIqIG1fZnVuY3Rpb25OYW1lOworICAgIGNv
bnN0IGNoYXIqIG1fZmlsZTsKKyAgICB1bnNpZ25lZCBtX2xpbmU7CisjZW5kaWYKK307CisKKyNk
ZWZpbmUgTUFLRV9USFJPV19TQ09QRShuYW1lX18sIHZtX18pIFwKKyAgICBKU0M6OlRocm93U2Nv
cGUgbmFtZV9fKHZtX18sIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93
U2NvcGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGhyb3dTY29wZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UaHJvd1Njb3BlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKyNpbmNsdWRlICJWTS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShFWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FU
SU9OKQorCitpbmxpbmUgdm9pZCBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIC8vIEZJWE1FOiBDYWxsIHNpbXVs
YXRlVGhyb3coKSB0byBzZXQgdGhlIG5lZWRFeGNlcHRpb25DaGVjayBmbGFnIGhlcmUuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MgorICAgIG1f
dm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30KKworaW5saW5lIEpTVmFsdWUg
VGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9y
KQoreworICAgIC8vIEZJWE1FOiBDYWxsIHNpbXVsYXRlVGhyb3coKSB0byBzZXQgdGhlIG5lZWRF
eGNlcHRpb25DaGVjayBmbGFnIGhlcmUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MgorICAgIHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGVycm9yKTsKK30KKworaW5saW5lIEpTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKK3sKKyAgICAvLyBGSVhNRTog
Q2FsbCBzaW11bGF0ZVRocm93KCkgdG8gc2V0IHRoZSBuZWVkRXhjZXB0aW9uQ2hlY2sgZmxhZyBo
ZXJlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEx
NzIKKyAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgVCYmIFRocm93U2NvcGU6OmZvcndhcmQoVCYmIHZh
bHVlKQoreworICAgIHNhdGlzZnlFeGNlcHRpb25DaGVja05lZWQobV92bSk7CisgICAgcmV0dXJu
IFdURk1vdmUodmFsdWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQgVGhy
b3dTY29wZTo6Y2hlY2soVCB2YWx1ZSkKK3sKKyAgICBzYXRpc2Z5RXhjZXB0aW9uQ2hlY2tOZWVk
KG1fdm0pOworICAgIHJldHVybiB2YWx1ZTsKK30KKworI2Vsc2UgLy8gRU5BQkxFKEVYQ0VQVElP
Tl9DSEVDS19WRVJJRklDQVRJT04pIGRpc2FibGVkCisKK2lubGluZSBUaHJvd1Njb3BlOjpUaHJv
d1Njb3BlKFZNJiB2bSwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCkKKyAgICA6
IG1fdm0odm0pCit7Cit9CisKK2lubGluZSBUaHJvd1Njb3BlOjp+VGhyb3dTY29wZSgpIHsgfQor
CitpbmxpbmUgdm9pZCBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0
aW9uKTsgfQoraW5saW5lIEpTVmFsdWUgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGVycm9yKTsgfQoraW5saW5lIEpTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikgeyByZXR1cm4gbV92bS50aHJvd0V4
Y2VwdGlvbihleGVjLCBlcnJvcik7IH0KKworaW5saW5lIHZvaWQgVGhyb3dTY29wZTo6c2F0aXNm
eUV4Y2VwdGlvbkNoZWNrTmVlZChjb25zdCBWTSYpIHsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorVCYmIFRocm93U2NvcGU6OmZvcndhcmQoVCYmIHZhbHVlKSB7IHJldHVybiBXVEZNb3ZlKHZh
bHVlKTsgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1QgVGhyb3dTY29wZTo6Y2hlY2soVCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWU7IH0KKworI2VuZGlmIC8vIEVOQUJMRShFWENFUFRJT05fQ0hFQ0tf
VkVSSUZJQ0FUSU9OKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVTdGFjay5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVTdGFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisjaWYgRU5BQkxFKEVYQ0VQVElPTl9DSEVDS19WRVJJRklDQVRJT04p
CisKK2NsYXNzIFRocm93U2NvcGVTdGFjayB7CitwdWJsaWM6CisgICAgc3RydWN0IEVudHJ5IHsK
KyAgICAgICAgRW50cnkoKSB7IH0KKyAgICAgICAgRW50cnkoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQorICAgICAgICAgICAgOiBmdW5j
dGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICAgICAgICAgLCBmaWxlKGZpbGUpCisgICAgICAg
ICAgICAsIGxpbmUobGluZSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBjaGFyKiBmaWxlIHsgbnVsbHB0
ciB9OworICAgICAgICB1bnNpZ25lZCBsaW5lIHsgMCB9OworICAgIH07CisKKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZFbnRyaWVzOyB9CisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbnVtYmVyT2ZFbnRyaWVzOyB9CisKKyAgICBFbnRyeSBl
bnRyeUF0KHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbaW5k
ZXhdOworICAgIH0KKworICAgIEVudHJ5IGxhc3RFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGVudHJ5
QXQobGFzdEVudHJ5SW5kZXgoKSk7IH0KKyAgICBzaXplX3QgbGFzdEVudHJ5SW5kZXgoKSBjb25z
dAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9udW1iZXJPZkVudHJpZXMgPiAwKTsK
KyAgICAgICAgcmV0dXJuIG1fbnVtYmVyT2ZFbnRyaWVzIC0gMTsKKyAgICB9CisKKyAgICBzaXpl
X3QgcHVzaChFbnRyeSBlbnRyeSkKKyAgICB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IG1fbnVt
YmVyT2ZFbnRyaWVzKys7CisgICAgICAgIGlmIChtX251bWJlck9mRW50cmllcyA+IG1fZW50cmll
cy5zaXplKCkpCisgICAgICAgICAgICBtX2VudHJpZXMuZ3JvdyhtX251bWJlck9mRW50cmllcyk7
CisgICAgICAgIG1fZW50cmllc1tpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgcmV0dXJuIGluZGV4
OworICAgIH0KKyAgICBFbnRyeSBwb3AoKSB7IHJldHVybiBtX2VudHJpZXNbLS1tX251bWJlck9m
RW50cmllc107IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8RW50cnksIDUxMj4gbV9lbnRyaWVz
OworICAgIHNpemVfdCBtX251bWJlck9mRW50cmllcyB7IDAgfTsKK307CisKKyNlbmRpZiAvLyBF
TkFCTEUoRVhDRVBUSU9OX0NIRUNLX1ZFUklGSUNBVElPTikKKworfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIwNDg3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKICNpbmNsdWRlICJTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZVN0YWNrLmgi
CiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJWTUVudHJ5UmVjb3JkLmgiCkBAIC00NDMsMTYgKzQ0NCwxNiBA
QCBwdWJsaWM6CiAKICAgICBFeGVjU3RhdGUqKiBhZGRyZXNzT2ZDYWxsRnJhbWVGb3JDYXRjaCgp
IHsgcmV0dXJuICZjYWxsRnJhbWVGb3JDYXRjaDsgfQogCi0gICAgRXhjZXB0aW9uKiBleGNlcHRp
b24oKSBjb25zdCB7IHJldHVybiBtX2V4Y2VwdGlvbjsgfQorICAgIEV4Y2VwdGlvbiogZXhjZXB0
aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIFRocm93U2NvcGU6OnNhdGlzZnlFeGNlcHRpb25D
aGVja05lZWQoKnRoaXMpOworICAgICAgICByZXR1cm4gbV9leGNlcHRpb247CisgICAgfQogICAg
IEpTQ2VsbCoqIGFkZHJlc3NPZkV4Y2VwdGlvbigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNDZWxsKio+KCZtX2V4Y2VwdGlvbik7IH0KIAogICAgIEV4Y2VwdGlvbiogbGFzdEV4Y2VwdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV4Y2VwdGlvbjsgfQogICAgIEpTQ2VsbCoqIGFkZHJl
c3NPZkxhc3RFeGNlcHRpb24oKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCoqPigm
bV9sYXN0RXhjZXB0aW9uKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCop
OwotCiAgICAgdm9pZCBzZXRGYWlsTmV4dE5ld0NvZGVCbG9jaygpIHsgbV9mYWlsTmV4dE5ld0Nv
ZGVCbG9jayA9IHRydWU7IH0KICAgICBib29sIGdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxv
Y2soKQogICAgIHsKQEAgLTY0NCw3ICs2NDUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9sYXN0
RXhjZXB0aW9uID0gZXhjZXB0aW9uOwogICAgIH0KIAotI2lmICFFTkFCTEUoSklUKSAgICAKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2Vw
dGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhl
Y1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKKyNpZiAhRU5BQkxFKEpJVCkKICAg
ICBib29sIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChSZWdpc3RlciogbmV3VG9wT2ZTdGFj
ayk7CiAgICAgYm9vbCBpc1NhZmVUb1JlY3Vyc2VTb2Z0Q0xvb3AoKSBjb25zdDsKICNlbmRpZiAv
LyAhRU5BQkxFKEpJVCkKQEAgLTY3Myw2ICs2NzgsMTMgQEAgcHJpdmF0ZToKIAogICAgIEV4Y2Vw
dGlvbiogbV9leGNlcHRpb24geyBudWxscHRyIH07CiAgICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNl
cHRpb24geyBudWxscHRyIH07CisjaWYgRU5BQkxFKEVYQ0VQVElPTl9DSEVDS19WRVJJRklDQVRJ
T04pCisgICAgVGhyb3dTY29wZVN0YWNrIG1fdGhyb3dTY29wZVN0YWNrOworICAgIFRocm93U2Nv
cGUqIG1fdG9wVGhyb3dTY29wZSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX3N0YWNrSW5k
ZXhBdFNpbXVsYXRlZFRocm93UG9pbnQgeyAwIH07CisgICAgbXV0YWJsZSBib29sIG1fbmVlZEV4
Y2VwdGlvbkNoZWNrIHsgZmFsc2UgfTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2ZhaWxOZXh0TmV3
Q29kZUJsb2NrIHsgZmFsc2UgfTsKICAgICBEZWxldGVQcm9wZXJ0eU1vZGUgbV9kZWxldGVQcm9w
ZXJ0eU1vZGUgeyBEZWxldGVQcm9wZXJ0eU1vZGU6OkRlZmF1bHQgfTsKICAgICBib29sIG1fZ2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3cgeyB0cnVlIH07CkBAIC02OTUsNiArNzA3
LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dDaGlja2Vu
PiBtX3NoYWRvd0NoaWNrZW47CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk+IG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsKKworICAgIGZyaWVuZCBjbGFz
cyBUaHJvd1Njb3BlOwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTYgQEAg
dm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKAogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFrTWFwIikpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJXZWFrTWFwIikpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50
ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVj
dHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtNYXBT
dHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNjcsMTEgKzcy
LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxs
RGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
KTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KSk7CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGlmICghbmV4dEl0
ZW0uaXNPYmplY3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTUsMTUgKzU1LDE4IEBAIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0KIAogc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFT
Q0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0
ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKEpTV2Vha01hcCogd2Vha01hcCA9IGpz
RHluYW1pY0Nhc3Q8SlNXZWFrTWFwKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gd2Vha01hcC0+
d2Vha01hcERhdGEoKTsKIAotICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0
IikpOworICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0
IikpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC05OCwxMyArMTAxLDE2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2UKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQogewor
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtN
YXAiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGVkIHRvIHNldCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vha01hcCIpKSk7CisgICAgbWFw
LT5zZXQodm0sIGFzT2JqZWN0KGtleSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDE2
IEBAIHZvaWQgV2Vha1NldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbigKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtTZXQoRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiV2Vha1NldCIpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiV2Vha1NldCIpKTsKIH0KIAogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBh
c0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKICAgICBT
dHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFr
U2V0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTY3LDcg
KzcyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENh
bGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERh
dGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMpKTsKIAogICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mLCBF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtTZXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTUzLDE1ICs1MywxOCBAQCB2b2lkIFdlYWtTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNCiAKIHN0YXRpYyBXZWFrTWFwRGF0YSogZ2V0V2Vha01hcERhdGEoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCF2YWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxp
dGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChKU1dlYWtTZXQqIHdlYWtTZXQgPSBq
c0R5bmFtaWNDYXN0PEpTV2Vha1NldCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHdlYWtTZXQt
PndlYWtNYXBEYXRhKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVND
SUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVj
dCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBjYWxsRnJhbWUsIFdURjo6QVND
SUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVj
dCIpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtODUsMTMgKzg4LDE2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2UKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewor
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtT
ZXQiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwganNV
bmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGVkIHRv
IGFkZCBhIG5vbi1vYmplY3Qga2V5IHRvIGEgV2Vha1NldCIpKSk7CisgICAgbWFwLT5zZXQodm0s
IGFzT2JqZWN0KGtleSksIGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNz
aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNzaW9u
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Npb24iLCAi
Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsICJBcHBsZVBh
eVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIpKTsKIAogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNBcHBsZVBheVNlc3Npb246Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1F
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHVpbnQxNl90IHN0YXR1
cyA9IGNvbnZlcnQ8dWludDE2X3Q+KHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC03MCwxNSArNzMsMTggQEAgSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6
Y29tcGxldGVTaGlwcAogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNz
aW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Npb24i
LCAiY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCAiQXBw
bGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uIikpOwogCiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lv
bjo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA0KSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhy
b3dWTUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdWludDE2X3Qg
c3RhdHVzID0gY29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBOb3Jt
YWxDb252ZXJzaW9uKTsKQEAgLTEwNCwxNSArMTEwLDE4IEBAIEpTVmFsdWUgSlNBcHBsZVBheVNl
c3Npb246OmNvbXBsZXRlU2hpcHAKIAogSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CiAgICAgSlNBcHBsZVBh
eVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIkFwcGxlUGF5U2Vz
c2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCAi
QXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbiIpKTsKIAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNBcHBsZVBheVNlc3Np
b246OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRo
cm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERpY3Rpb25h
cnkgbmV3VG90YWwgPSB7ICZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTYgKzQ2LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U0F1ZGlvQ29udGV4dChFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgRE9NQ29uc3Ry
dWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3Qq
PihleGVjLmNhbGxlZSgpKTsKICAgICBpZiAoIWpzQ29uc3RydWN0b3IpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZleGVjLCAiQXVkaW9D
b250ZXh0IGNvbnN0cnVjdG9yIGNhbGxlZSBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3Io
JmV4ZWMsICJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgY2FsbGVlIGlzIHVuYXZhaWxhYmxlIikp
OwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKCZleGVjLCAiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIHNjcmlw
dCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJmV4ZWMs
ICJBdWRpb0NvbnRleHQgY29uc3RydWN0b3Igc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVu
YXZhaWxhYmxlIikpOwogCiAgICAgaWYgKCFpczxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVSZWZlcmVu
Y2VFcnJvcigmZXhlYywgIkF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBjYWxsZWQgaW4gYSBzY3Jp
cHQgZXhlY3V0aW9uIGNvbnRleHQgd2hpY2ggaXMgbm90IGEgZG9jdW1lbnQiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKCZleGVjLCAiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIGNhbGxlZCBpbiBhIHNjcmlwdCBl
eGVjdXRpb24gY29udGV4dCB3aGljaCBpcyBub3QgYSBkb2N1bWVudCIpKTsKIAogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiAKQEAgLTcwLDcgKzczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKUwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghYXVkaW9Db250ZXh0LmdldCgpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoJmV4ZWMsICJhdWRp
byByZXNvdXJjZXMgdW5hdmFpbGFibGUgZm9yIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3Rpb24iKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBjcmVh
dGVTeW50YXhFcnJvcigmZXhlYywgImF1ZGlvIHJlc291cmNlcyB1bmF2YWlsYWJsZSBmb3IgQXVk
aW9Db250ZXh0IGNvbnN0cnVjdGlvbiIpKTsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShMRUdB
Q1lfV0VCX0FVRElPKQogICAgICAgICAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAocmVuZGVy
LXRhcmdldCkgQXVkaW9Db250ZXh0IHdoaWNoIHJlbmRlcnMgaW50byBhbiBBdWRpb0J1ZmZlci4K
QEAgLTc4LDM1ICs4MSwzNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTCiAgICAgICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIEFTQ0lJTGl0ZXJhbCgiRGVwcmVjYXRlZCBBdWRpb0Nv
bnRleHQgY29uc3RydWN0b3I6IHVzZSBPZmZsaW5lQXVkaW9Db250ZXh0IGluc3RlYWQiKSk7CiAK
ICAgICAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVj
KSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOwogCiAgICAgICAgIGludDMyX3Qg
bnVtYmVyT2ZDaGFubmVscyA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmZXhl
Yyk7CiAgICAgICAgIGludDMyX3QgbnVtYmVyT2ZGcmFtZXMgPSBleGVjLnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvSW50MzIoJmV4ZWMpOwogICAgICAgICBmbG9hdCBzYW1wbGVSYXRlID0gZXhlYy51
bmNoZWNrZWRBcmd1bWVudCgyKS50b0Zsb2F0KCZleGVjKTsKIAogICAgICAgICBpZiAobnVtYmVy
T2ZDaGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKCZleGVjLCAiSW52YWxp
ZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHRocm93U2NvcGUsICZleGVjLCBjcmVhdGVTeW50YXhFcnJvcigmZXhlYywgIkludmFsaWQgbnVt
YmVyIG9mIGNoYW5uZWxzIikpOwogCiAgICAgICAgIGlmIChudW1iZXJPZkZyYW1lcyA8PSAwKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
JmV4ZWMsICJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBjcmVhdGVTeW50YXhFcnJvcigmZXhlYywg
IkludmFsaWQgbnVtYmVyIG9mIGZyYW1lcyIpKTsKIAogICAgICAgICBpZiAoc2FtcGxlUmF0ZSA8
PSAwKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoJmV4ZWMsICJJbnZhbGlkIHNhbXBsZSByYXRlIikpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoJmV4ZWMs
ICJJbnZhbGlkIHNhbXBsZSByYXRlIikpOwogCiAKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgICAgIGF1ZGlvQ29udGV4dCA9IE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZShk
b2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUsIGVj
KTsKICAgICAgICAgaWYgKGVjKSB7CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJmV4ZWMs
IGVjKTsKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVN5bnRh
eEVycm9yKCZleGVjLCAiRXJyb3IgY3JlYXRpbmcgT2ZmbGluZUF1ZGlvQ29udGV4dCIpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKCZleGVjLCAiRXJyb3IgY3JlYXRpbmcgT2ZmbGluZUF1ZGlvQ29udGV4dCIpKTsK
ICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoJmV4ZWMsICJJbGxlZ2FsIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRl
U3ludGF4RXJyb3IoJmV4ZWMsICJJbGxlZ2FsIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciIpKTsK
ICNlbmRpZgogICAgIH0KIAogICAgIGlmICghYXVkaW9Db250ZXh0KQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmZXhlYywgIkVycm9yIGNy
ZWF0aW5nIEF1ZGlvQ29udGV4dCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJv
d1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJmV4ZWMsICJFcnJvciBjcmVhdGlu
ZyBBdWRpb0NvbnRleHQiKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9E
T01fV1JBUFBFUihqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgQXVkaW9Db250ZXh0LCBh
dWRpb0NvbnRleHQucmVsZWFzZU5vbk51bGwoKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZp
bHRlck5vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDExICs0MCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgSlNCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogI2lmIEVOQUJMRShMRUdBQ1lfV0VC
X0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIHVpbnQzMl90IHR5
cGUgPSB2YWx1ZS50b1VJbnQzMigmc3RhdGUpOwogICAgICAgICBpZiAoIXdyYXBwZWQoKS5zZXRU
eXBlKHR5cGUpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiSWxsZWdhbCBC
aXF1YWRGaWx0ZXJOb2RlIHR5cGUiKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93
U2NvcGUsICZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTU2LDcgKzYwLDcgQEAgdm9pZCBKU0JpcXVhZEZp
bHRlck5vZGU6OnNldFR5cGUoRXhlY1N0YQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIik7Cisg
ICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCAiSWxsZWdhbCBCaXF1YWRGaWx0
ZXJOb2RlIHR5cGUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTYyLDEwICs2MywxMyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNE
T01HbG9iCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4
ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganND
b25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkp
OwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmZXhlYywgIkJsb2Ig
Y29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNl
RXJyb3IoJmV4ZWMsICJCbG9iIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5h
dmFpbGFibGUiKSk7CiAKICAgICBpZiAoIWV4ZWMuYXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpLCBCbG9iLCBCbG9iOjpjcmVhdGUoKSkpOwpAQCAtODQsNyArODgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAgICAgICAgIEpTVmFs
dWUgYmxvYlByb3BlcnR5QmFnVmFsdWUgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogCiAg
ICAgICAgIGlmICghYmxvYlByb3BlcnR5QmFnVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCAiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBj
b25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBPYmplY3QiKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZleGVjLCAiU2Vjb25kIGFyZ3VtZW50IG9mIHRo
ZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBPYmplY3QiKTsKIAogICAgICAgICAvLyBHaXZl
biB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAgICAg
ICAgIEpTT2JqZWN0KiBibG9iUHJvcGVydHlCYWdPYmplY3QgPSBibG9iUHJvcGVydHlCYWdWYWx1
ZS50b09iamVjdCgmZXhlYyk7CkBAIC05OSw3ICsxMDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICAgICAgaWYgKGNvbnRhaW5zRW5kaW5ncykgewog
ICAgICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFyZW50IiAmJiBlbmRpbmdzICE9ICJu
YXRpdmUiKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCAi
VGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwiIG9yIFwi
bmF0aXZlXCIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCAmZXhlYywgIlRoZSBlbmRpbmdzIHByb3BlcnR5IG11c3QgYmUgZWl0aGVyIFwidHJh
bnNwYXJlbnRcIiBvciBcIm5hdGl2ZVwiIik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBdHRl
bXB0IHRvIGdldCB0aGUgdHlwZSBwcm9wZXJ0eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNDgsOCArMzQ4LDExIEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpw
dXREZWxlZ2F0ZSgKIAogSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgU3RyaW5nIHByb3Bl
cnR5TmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7
CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCw5IEBAIGVu
dW0gY2xhc3MgSGFzaFJlcXVpcmVtZW50IHsKIAogYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyJiBhbGdvcml0aG1JZGVudGlmaWVyKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICAvLyB0eXBlZGVmIChBbGdvcml0aG0gb3IgRE9NU3RyaW5nKSBBbGdvcml0
aG1JZGVudGlmaWVyOwogCiAgICAgU3RyaW5nIGFsZ29yaXRobU5hbWU7CkBAIC04MSw3ICs4NCw3
IEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGcKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFhbGdvcml0aG1OYW1lLmNvbnRhaW5zT25seUFTQ0lJKCkp
IHsKLSAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTeW50YXhF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTIyLDggKzEyNSwxMSBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxnb3JpdGhtKEpTRGljdGlv
bmFyCiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVz
Q2JjUGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNDAsNyArMTQ2LDcgQEAgc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogICAgIH0KIAogICAgIGlmIChpdkRhdGEuc2Vjb25k
ICE9IDE2KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgIkFFUy1DQkMgaW5pdGlhbGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVz
IikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsICJBRVMtQ0JDIGluaXRpYWxpemF0aW9uIGRhdGEgbXVzdCBiZSAxNiBieXRlcyIpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNTEsOCArMTU3LDExIEBAIHN0
YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVBZXNLZXlHZW5QYXJhbXMoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtMTY5LDggKzE3OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4g
Y3JlYXRlSG1hY1BhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODcsOCArMTk5LDExIEBAIHN0
YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVIbWFjS2V5UGFyYW1zKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmpl
Y3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTIwOSw4ICsyMjQsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNy
ZWF0ZVJzYUtleUdlblBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRl
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMzIsNyArMjUwLDcgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IHB1YmxpY0V4cG9uZW50QXJyYXkgPSB0b1VpbnQ4QXJyYXkocHVibGljRXhwb25l
bnRWYWx1ZSk7CiAgICAgaWYgKCFwdWJsaWNFeHBvbmVudEFycmF5KSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgIkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBvbmVu
dCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsICJFeHBlY3Rl
ZCBhIFVpbnQ4QXJyYXkgaW4gcHVibGljRXhwb25lbnQiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIHJlc3VsdC0+cHVibGljRXhwb25lbnQuYXBwZW5kKHB1YmxpY0V4cG9u
ZW50QXJyYXktPmRhdGEoKSwgcHVibGljRXhwb25lbnRBcnJheS0+Ynl0ZUxlbmd0aCgpKTsKQEAg
LTI1MCw4ICsyNjgsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZVJzYU9h
ZXBQYXJhbXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTI4NCw4ICszMDUsMTEgQEAgc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+IGNyZWF0ZVJzYVNzYVBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgJnN0YXRlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNywxMyArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBK
U1ZhbHVlIGJ1ZmZlciA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlcik7CiAgICAg
aWYgKCFhcnJheUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1
ZXMoYXJyYXlCdWZmZXJWaWV3LmdldCgpLCBlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJ
KHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVz
dWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKQEAgLTYxLDcgKzY0LDcgQEAg
c3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUgdmFs
dWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50aWZpZXIpOwogICAgIEFTU0VSVCghZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOwogICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgYW4gYXJyYXkgZm9y
IFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5IGZvciBcIiVzXCIg
SlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTcy
LDYgKzc1LDkgQEAgc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZQogCiBz
dGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBq
c29uLCBjb25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7
CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldCk7CiAKQEAgLTg0LDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJv
bUpTT04oRXhlY1N0YXRlKgogICAgICAgICAvLyBDYW4gZ2V0IGFuIG91dCBvZiBtZW1vcnkgZXhj
ZXB0aW9uLgogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0
KCJFeHBlY3RlZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpbmc6OmZvcm1hdCgi
RXhwZWN0ZWQgYSBzdHJpbmcgdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTMsNiArOTksOSBAQCBzdGF0aWMgYm9v
bCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqCiAKIHN0YXRpYyBib29sIGdldEJvb2xlYW5G
cm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXks
IGJvb2wmIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90
KGpzb24sIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC0xMDIs
NyArMTExLDcgQEAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZQogICAg
IEpTVmFsdWUganNWYWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmllcik7CiAgICAg
QVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFqc1ZhbHVlLmlzQm9vbGVh
bigpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCBhIGJvb2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVj
dGVkIGEgYm9vbGVhbiB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTIsMTcgKzEyMSwyMCBAQCBzdGF0aWMgYm9v
bCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29sIGdldEJpZ0ludGVn
ZXJWZWN0b3JGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBj
aGFyKiBrZXksIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJp
bmcgYmFzZTY0dXJsRW5jb2RlZE51bWJlcjsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKGV4
ZWMsIGpzb24sIGtleSwgYmFzZTY0dXJsRW5jb2RlZE51bWJlcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghYmFzZTY0VVJMRGVjb2RlKGJhc2U2NHVybEVuY29kZWROdW1iZXIs
IHJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
YW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBpbiBKV0siKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBi
YXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgaWYgKHJlc3VsdFswXSA9PSAwKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIEJpZ0ludGVnZXIgbXVzdCB1dGlsaXplIHRoZSBtaW5pbXVt
IG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVzZW50IHRoZSB2YWx1ZSIpKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgQmlnSW50ZWdl
ciBtdXN0IHV0aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9jdGV0cyB0byByZXByZXNlbnQg
dGhlIHZhbHVlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsMTYg
KzE0NCwxOSBAQCBzdGF0aWMgYm9vbCBnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oCiBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYganNvblN0cmluZykKICAgICA6IG1fZXhlYyhleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGpzb25WYWx1ZSA9IEpTT05QYXJzZShleGVjLCBq
c29uU3RyaW5nKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghanNvblZhbHVlIHx8ICFqc29uVmFsdWUuaXNPYmplY3QoKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgSldLIHNlcmlh
bGl6YXRpb24iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBKV0sgc2VyaWFsaXphdGlvbiIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fanNvbi5zZXQobV9leGVjLT52bSgpLCBhc09iamVjdChqc29uVmFs
dWUpKTsKKyAgICBtX2pzb24uc2V0KHZtLCBhc09iamVjdChqc29uVmFsdWUpKTsKIH0KIAogSlND
cnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjp+SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKCkK
QEAgLTE2NSw2ICsxODAsOSBAQCBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
IGNyCiAKIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSogc3VnZ2VzdGVkQWxn
b3JpdGhtLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKiBzdWdnZXN0ZWRQYXJhbWV0ZXJzKSBj
b25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBt
X2pzb24uZ2V0KCksICJhbGciLCBtX2p3a0FsZ29yaXRobU5hbWUpKSB7CiAgICAgICAgIC8vIEFs
Z29yaXRobSBpcyBvcHRpb25hbCBpbiBKV0suCiAgICAgICAgIHJldHVybiBDcnlwdG9BbGdvcml0
aG1QYWlyIHsgc3VnZ2VzdGVkQWxnb3JpdGhtLCBzdWdnZXN0ZWRQYXJhbWV0ZXJzIH07CkBAIC0y
MTYsNyArMjM0LDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZQog
ICAgICAgICBhbGdvcml0aG0gPSBhbGdvcml0aG1SZWdpc3R5LmNyZWF0ZShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfS1cpOwogICAgICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5l
dyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKTsKICAgICB9IGVsc2UgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sgYWxnb3JpdGhtICIgKyBtX2p3a0Fs
Z29yaXRobU5hbWUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMs
ICJVbnN1cHBvcnRlZCBKV0sgYWxnb3JpdGhtICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwogICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAKQEAgLTI1NCw5ICsyNzIsMTIgQEAgT3B0aW9u
YWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZQogCiBzdGF0aWMgYm9vbCB0cnlKV0tL
ZXlPcHNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIENyeXB0b0tleVVzYWdlJiB1c2FnZXMsIGNvbnN0
IFN0cmluZyYgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIHRyeU9wZXJhdGlvbiwgQ3J5cHRvS2V5
VXNhZ2UgdHJ5VXNhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChvcGVyYXRpb24gPT0gdHJ5T3Bl
cmF0aW9uKSB7CiAgICAgICAgIGlmICh1c2FnZXMgJiB0cnlVc2FnZSkgewotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250YWlucyBh
IGR1cGxpY2F0ZSBvcGVyYXRpb24iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGlj
YXRlIG9wZXJhdGlvbiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICB1c2FnZXMgfD0gdHJ5VXNhZ2U7CkBAIC0yNjYsNiArMjg3LDkgQEAgc3RhdGljIGJv
b2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRlKgogCiB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKENyeXB0b0tleVVzYWdlJiBzdWdnZXN0ZWRVc2Fn
ZXMpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQ3J5cHRvS2V5VXNhZ2UgandrVXNhZ2VzID0g
MDsKIAogICAgIEpTQXJyYXkqIGtleU9wczsKQEAgLTI3NSw3ICsyOTksNyBAQCB2b2lkIEpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jCiAgICAgICAgICAgICBTdHJpbmcgb3BlcmF0
aW9uOwogICAgICAgICAgICAgaWYgKCFqc1ZhbHVlLmdldFN0cmluZyhtX2V4ZWMsIG9wZXJhdGlv
bikpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sg
a2V5X29wcyBhdHRyaWJ1dGUgY291bGQgbm90IGJlIHByb2Nlc3NlZCIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVyYWwo
IkpXSyBrZXlfb3BzIGF0dHJpYnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghdHJ5SldL
S2V5T3BzVmFsdWUobV9leGVjLCBqd2tVc2FnZXMsIG9wZXJhdGlvbiwgQVNDSUlMaXRlcmFsKCJz
aWduIiksIENyeXB0b0tleVVzYWdlU2lnbikpCkBAIC0zMTAsNyArMzM0LDcgQEAgdm9pZCBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uYwogICAgICAgICBlbHNlIGlmIChqd2tVc2VT
dHJpbmcgPT0gInNpZyIpCiAgICAgICAgICAgICBqd2tVc2FnZXMgfD0gKENyeXB0b0tleVVzYWdl
U2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBc
IiIgKyBqd2tVc2VTdHJpbmcgKyAiXCIiKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIG1fZXhlYywgIlVuc3VwcG9ydGVkIEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3
a1VzZVN0cmluZyArICJcIiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpAQCAtMzYyLDIxICszODYsMjQgQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OmtleVNpegogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjprZXlEYXRhT2N0ZXRTZXF1ZW5jZSgpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgU3RyaW5nIGtleUJhc2U2NFVSTDsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1f
ZXhlYywgbV9qc29uLmdldCgpLCAiayIsIGtleUJhc2U2NFVSTCkpIHsKICAgICAgICAgaWYgKCFt
X2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVj
LCBBU0NJSUxpdGVyYWwoIlNlY3JldCBrZXkgZGF0YSBpcyBub3QgcHJlc2VudCBpcyBKV0siKSk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFTQ0lJTGl0
ZXJhbCgiU2VjcmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9jdGV0U2VxdWVu
Y2U7CiAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoa2V5QmFzZTY0VVJMLCBvY3RldFNlcXVlbmNl
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBiYXNl
NjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG9jdGV0U2VxdWVuY2Uuc2l6ZSgpICogOCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlkIGZv
ciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgbV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0
aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zODUsMjQgKzQx
MiwyNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LCiAKIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6Omtl
eURhdGFSU0FDb21wb25lbnRzKCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBWZWN0b3I8dWlu
dDhfdD4gbW9kdWx1czsKICAgICBWZWN0b3I8dWludDhfdD4gZXhwb25lbnQ7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHByaXZhdGVFeHBvbmVudDsKIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3Rv
ckZyb21KU09OKG1fZXhlYywgbV9qc29uLmdldCgpLCAibiIsIG1vZHVsdXMpKSB7CiAgICAgICAg
IGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJuXCIgbWVtYmVyIGlzIG1pc3Np
bmciKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiblwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG1v
ZHVsdXMuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiS2V5
IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlk
IGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgaWYgKCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBtX2pz
b24uZ2V0KCksICJlIiwgZXhwb25lbnQpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFs
KCJSZXF1aXJlZCBKV0sgXCJlXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQg
SldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKQEAgLTQ1OCwyMiArNDg4LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlE
YXRhPiBKU0NyeXB0b0sKICAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKCFlbGVtZW50LmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sg
XCJvdGhcIiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKHRocm93U2NvcGUsIG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgXCJvdGhc
IiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21K
U09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJyIiwgaW5mby5wcmltZUZhY3RvcikpIHsK
ICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBwcmltZSBm
YWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgZ2V0IHByaW1lIGZhY3RvciBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdl
dEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAiZCIs
IGluZm8uZmFjdG9yQ1JURXhwb25lbnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBleHBvbmVudCBmb3IgYSBwcmltZSBpbiBc
Im90aFwiIGRpY3Rpb25hcnkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBleHBv
bmVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0
b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAidCIsIGluZm8uZmFjdG9yQ1JU
Q29lZmZpY2llbnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkNh
bm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRp
Y3Rpb25hcnkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
bV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBm
b3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBvdGhlclByaW1lSW5mb3MuYXBwZW5kKGluZm8p
OwpAQCAtNDg0LDEwICs1MTQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpT
Q3J5cHRvSwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjprZXlEYXRhKCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJpbmcg
andrS2V5VHlwZTsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1fZXhlYywgbV9qc29uLmdl
dCgpLCAia3R5IiwgandrS2V5VHlwZSkpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwo
IlJlcXVpcmVkIEpXSyBcImt0eVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVk
IEpXSyBcImt0eVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKQEAgLTQ5Nyw3ICs1MzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5
RGF0YT4gSlNDcnlwdG9LCiAgICAgaWYgKGp3a0tleVR5cGUgPT0gIlJTQSIpCiAgICAgICAgIHJl
dHVybiBrZXlEYXRhUlNBQ29tcG9uZW50cygpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IobV9leGVj
LCAiVW5zdXBwb3J0ZWQgSldLIGtleSB0eXBlICIgKyBqd2tLZXlUeXBlKTsKKyAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgIiAr
IGp3a0tleVR5cGUpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC01NjAsNiArNTkzLDkg
QEAgc3RhdGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgdm9p
ZCBhZGRKV0tBbGdvcml0aG1Ub0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwg
Y29uc3QgQ3J5cHRvS2V5JiBrZXkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBqd2tBbGdvcml0
aG07CiAgICAgc3dpdGNoIChrZXkuYWxnb3JpdGhtSWRlbnRpZmllcigpKSB7CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgpAQCAtNjUyLDcgKzY4OCw3IEBAIHN0YXRp
YyB2b2lkIGFkZEpXS0FsZ29yaXRobVRvSlNPTihFeGVjU3QKIAogICAgIGlmIChqd2tBbGdvcml0
aG0uaXNOdWxsKCkpIHsKICAgICAgICAgLy8gVGhlIHNwZWMgZG9lc24ndCBjdXJyZW50bHkgdGVs
bCB3aGV0aGVyIGV4cG9ydCBzaG91bGQgZmFpbCwgb3IganVzdCBza2lwICJhbGciICh3aGljaCBp
cyBhbiBvcHRpb25hbCBrZXkgaW4gSldLKS4KLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJLZXkgYWxnb3JpdGhtIGFuZCBzaXplIGRvIG5vdCBtYXAgdG8gYW55IEpX
SyBhbGdvcml0aG0gaWRlbnRpZmllciIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJLZXkgYWxnb3JpdGhtIGFuZCBzaXplIGRvIG5vdCBt
YXAgdG8gYW55IEpXSyBhbGdvcml0aG0gaWRlbnRpZmllciIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjg5LDEwICs3MjUsMTMgQEAgc3RhdGljIHZvaWQgYWRkVXNhZ2VzVG9KU09O
KEV4ZWNTdGF0ZSogZQogCiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJp
YWxpemUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IGtleURhdGEgPSBrZXkuZXhwb3J0
RGF0YSgpOwogICAgIGlmICgha2V5RGF0YSkgewogICAgICAgICAvLyBUaGlzIGdlbmVyYWxseSBz
aG91bGRuJ3QgaGFwcGVuIGFzIGxvbmcgYXMgYWxsIGtleSB0eXBlcyBpbXBsZW1lbnQgZXhwb3J0
RGF0YSgpLCBidXQgYXMgdW5kZXJseWluZyBsaWJyYXJpZXMgcmV0dXJuIGVycm9ycywgdGhlcmUg
bWF5IGJlIHNvbWUgcmFyZSBmYWlsdXJlIGNvbmRpdGlvbnMuCi0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJD
b3VsZG4ndCBleHBvcnQga2V5IG1hdGVyaWFsIikpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgfQogCkBAIC03MTMsNyArNzUyLDcgQEAgU3RyaW5nIEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6c2VyaQogICAgIGVsc2UgaWYgKGlzPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
Pigqa2V5RGF0YSkpCiAgICAgICAgIGJ1aWxkSlNPTkZvclJTQUNvbXBvbmVudHMoZXhlYywgZG93
bmNhc3Q8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KCprZXlEYXRhKSwgcmVzdWx0KTsKICAg
ICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJLZXkg
ZG9lc24ndCBzdXBwb3J0IGV4cG9ydEtleSIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJLZXkgZG9lc24ndCBzdXBwb3J0IGV4cG9ydEtl
eSIpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09w
ZXJhdGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM2LDEyICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgY3J5cHRvT3Bl
cmF0aW9uRGF0YUZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoQXJyYXlCdWZm
ZXIqIGJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIodmFsdWUpKQogICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgZWxzZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVm
ZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNz
KCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5
QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFz
c2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDksNyArMTA5LDkgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U6OnVwZ3JhZGVFbAogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLSAgICBKU0xvY2tIb2xkZXIg
bG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOworICAgIFZNJiB2bSA9IG1faXNvbGF0ZWRXb3Js
ZC0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAoIW1fY29uc3RydWN0b3IpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6
dXBncmFkZUVsCiAKICAgICBFbGVtZW50KiB3cmFwcGVkRWxlbWVudCA9IEpTRWxlbWVudDo6dG9X
cmFwcGVkKHJldHVybmVkRWxlbWVudCk7CiAgICAgaWYgKCF3cmFwcGVkRWxlbWVudCB8fCB3cmFw
cGVkRWxlbWVudCAhPSAmZWxlbWVudCkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9y
KCpzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGZhaWxlZCB0byB1cGdyYWRlIGFu
IGVsZW1lbnQiKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcih0aHJvd1Njb3BlLCAq
c3RhdGUsICJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBmYWlsZWQgdG8gdXBncmFkZSBhbiBl
bGVtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd3JhcHBlZEVsZW1lbnQtPnNl
dEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxl
bWVudENhbGxiYWNrKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0JiBwcm90b3R5cGUsIGNvbnN0
IElkZW50aWZpZXImIGlkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJv
dG90eXBlLmdldCgmc3RhdGUsIGlkKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWNhbGxiYWNrLmlzRnVuY3Rpb24oKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20g
ZWxlbWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJBIGN1c3RvbSBlbGVtZW50
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIHJldHVybiBjYWxsYmFjay5nZXRPYmplY3QoKTsKQEAgLTU2LDggKzU5LDEx
IEBAIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxlbWVudENhbGxiYWMKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1jdXN0b21lbGVtZW50cmVnaXN0cnktZGVmaW5lCiBK
U1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIp
KQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dT
Y29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOwogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZShzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQpAQCAtNjUsNyArNzEsNyBAQCBK
U1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUoCiAKICAgICBKU1ZhbHVlIGNv
bnN0cnVjdG9yVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBpZiAoIWNv
bnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3RvcigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBh
IGNvbnN0cnVjdG9yIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNv
bnN0cnVjdG9yIikpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yVmFs
dWUuZ2V0T2JqZWN0KCk7CiAKICAgICAvLyBGSVhNRTogVGhyb3cgYSBUeXBlRXJyb3IgaWYgY29u
c3RydWN0b3IgZG9lc24ndCBpbmhlcml0IGZyb20gSFRNTEVsZW1lbnQuCkBAIC03NSwxMSArODEs
MTEgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogICAgIGNhc2Ug
Q3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dp
dGhCdWlsdGluTmFtZXM6Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBzYW1lIGFzIG9uZSBv
ZiB0aGUgYnVpbHRpbiBlbGVtZW50cyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJy
b3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUg
Y2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOwogICAgIGNh
c2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpOb0h5cGhlbjoKLSAgICAgICAg
cmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVt
ZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOworICAgICAgICByZXR1cm4gdGhyb3dT
eW50YXhFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1l
bnQgbmFtZSBtdXN0IGNvbnRhaW4gYSBoeXBoZW4iKSk7CiAgICAgY2FzZSBDdXN0b21FbGVtZW50
TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOgotICAgICAgICByZXR1cm4g
dGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFt
ZSBjYW5ub3QgY29udGFpbiBhbiB1cHBlciBjYXNlIGxldHRlciIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U3ludGF4RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3Rv
bSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIiKSk7CiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IENoZWNrIHJlLWVudHJhbmN5IGhlcmUuCkBAIC04NywyMSAr
OTMsMjAgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogCiAgICAg
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5JiByZWdpc3RyeSA9IHdyYXBwZWQoKTsKICAgICBpZiAocmVn
aXN0cnkuZmluZEludGVyZmFjZShsb2NhbE5hbWUpKSB7Ci0gICAgICAgIHRocm93Tm90U3VwcG9y
dGVkRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0
b20gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSB0YWcgbmFtZSIpKTsKKyAgICAgICAgdGhyb3dOb3RT
dXBwb3J0ZWRFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVm
aW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1lIikpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAocmVnaXN0cnku
Y29udGFpbnNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgdGhyb3dOb3RTdXBw
b3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxlIGN1
c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOworICAgICAgICB0aHJvd05vdFN1
cHBvcnRlZEVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBkZWZp
bmUgbXVsdGlwbGUgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgY2xhc3MiKSk7CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIGF1dG8mIHZtID0gZ2xvYmFs
T2JqZWN0KCktPnZtKCk7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9y
LT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYg
KCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJv
dG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yJ3MgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IikpOwogICAgIEpTT2JqZWN0JiBw
cm90b3R5cGVPYmplY3QgPSAqYXNPYmplY3QocHJvdG90eXBlVmFsdWUpOwogCiAgICAgUXVhbGlm
aWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3Bh
Y2VVUkkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsMTggKzMzOCwyNCBAQCBKU1ZhbHVl
IGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4CiAKIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYg
KCFlYyB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMp
KTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlv
bihleGVjLCBlYykpOwogfQogCiB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgaWYgKCFlYy5jb2RlIHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlv
bihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7CisgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMuY29kZSwgZWMubWVzc2FnZSkp
OwogfQogCiAjdW5kZWYgVFJZX1RPX0NSRUFURV9FWENFUFRJT04KQEAgLTQzMCwxMyArNDM2LDE2
IEBAIHN0YXRpYyBTdHJpbmcgcmFuZ2VFcnJvclN0cmluZyhkb3VibGUgdmEKIAogc3RhdGljIGRv
dWJsZSBlbmZvcmNlUmFuZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgZG91YmxlIHgsIGRvdWJsZSBtaW5p
bXVtLCBkb3VibGUgbWF4aW11bSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkg
fHwgc3RkOjppc2luZih4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHJhbmdl
RXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCAmc3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11
bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgeCA9IHRydW5jKHgpOwogICAgIGlm
ICh4IDwgbWluaW11bSB8fCB4ID4gbWF4aW11bSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWlu
aW11bSwgbWF4aW11bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIHg7
CkBAIC00NzUsNiArNDg0LDkgQEAgc3RydWN0IEludFR5cGVMaW1pdHM8dWludDE2X3Q+IHsKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Np
Z25lZDxUPjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25s
eSBiZSB1c2VkIGZvciBzaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVkZWYgSW50
VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBzdGF0aWMgaW5s
aW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgCiAgICAgICAgIGNhc2UgTm9ybWFsQ29udmVy
c2lvbjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVuZm9yY2VSYW5nZToKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IGNhc2UgQ2xhbXA6CiAgICAgICAgICAgICByZXR1cm4gZCA8IExpbWl0c1RyYWl0OjptaW5WYWx1
ZSA/IExpbWl0c1RyYWl0OjptaW5WYWx1ZSA6IExpbWl0c1RyYWl0OjptYXhWYWx1ZTsKQEAgLTUy
MSw2ICs1MzMsOSBAQCBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0YXRpYyBpbmxpbmUgVCB0b1NtYWxsZXJVSW50KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dW5zaWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAiU2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdW5zaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVk
ZWYgSW50VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTUzMyw3ICs1NDgsNyBAQCBzdGF0
aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmCiAgICAgICAgIGNhc2UgTm9ybWFs
Q29udmVyc2lvbjoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihkKTsKICAgICAg
ICAgY2FzZSBFbmZvcmNlUmFuZ2U6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENsYW1wOgogICAgICAgICAgICAgcmV0dXJu
IExpbWl0c1RyYWl0OjptYXhWYWx1ZTsKQEAgLTc5MSw5ICs4MDYsOSBAQCBib29sIEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUCiAgICAgcmV0dXJuIHRhcmdldCAmJiBjYW5BY2Nl
c3NEb2N1bWVudChzdGF0ZSwgJnRhcmdldC0+ZG9jdW1lbnQoKSk7CiB9CiAgICAgCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0aHJvd1R5cGVF
cnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoJnN0YXRlLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsICZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5k
QXJndW1lbnRNdXN0QmUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgYXJndW1lbnRJ
bmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCkBAIC04MjgsNzAgKzg0Myw3MCBAQCB2b2lkIHJl
cG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4CiAgICAgY29udGV4dC5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIHNldCBwcm9wZXJ0eSAnIiwgYXR0cmlidXRlTmFtZSwg
Iicgb24gYSBub24tIiwgaW50ZXJmYWNlTmFtZSwgIiBvYmplY3QuIikpOwogfQogCi12b2lkIHRo
cm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKQordm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewog
ICAgIEFTU0VSVCghc3RhdGUuaGFkRXhjZXB0aW9uKCkpOwogICAgIFN0cmluZyBtZXNzYWdlU3Ry
aW5nKG1lc3NhZ2UpOwotICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUiwgJm1lc3NhZ2VTdHJpbmcp
KTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CiB9CiAKLXZv
aWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UpCit2b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
CiB7CiAgICAgQVNTRVJUKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSk7CiAgICAgU3RyaW5nIG1lc3Nh
Z2VTdHJpbmcobWVzc2FnZSk7Ci0gICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIElOVkFMSURfU1RBVEVfRVJSLCAmbWVzc2FnZVN0
cmluZykpOworICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVET01F
eGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUiwgJm1lc3NhZ2VTdHJpbmcpKTsKIH0K
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJn
dW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCitKU0M6OkVuY29kZWRK
U1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNv
bnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBhcHBlbmRBcmd1bWVudE11c3RCZShi
dWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNlTmFt
ZSwgZnVuY3Rpb25OYW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm9uZSBvZjogIik7
CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRWYWx1ZXMpOwotICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBh
cmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9u
RXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQogewogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBh
cmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFtZSk7
CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJhIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsK
IH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1l
bnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQorSlNDOjpFbmNvZGVkSlNWYWx1
ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBh
cmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3Vt
ZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5h
bWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYW4gaW5zdGFuY2Ugb2YgIik7CiAgICAg
YnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRUeXBlKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi12b2lkIHRo
cm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhy
b3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5
cGUiKSk7CiB9CiAKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVO
YW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCit2b2lkIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFR5cGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VT
dHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgYXR0cmli
dXRlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgZXhwZWN0ZWRUeXBlKSk7CisgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VO
YW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgYXR0cmlidXRlIG11c3QgYmUgYW4gaW5zdGFuY2Ug
b2YgIiwgZXhwZWN0ZWRUeXBlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25z
dHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3Ry
dWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
LCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUpCiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgY29uZnVzaW5nIGV4Y2VwdGlvbiB3b3JkaW5nLiBDYW4gd2Ug
cmV3b3JkIHRvIGJlIGNsZWFyZXIgYW5kIG1vcmUgc3BlY2lmaWM/Ci0gICAgcmV0dXJuIHRocm93
Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZzdGF0ZSwgbWFrZVN0cmluZyhp
bnRlcmZhY2VOYW1lLCAiIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFp
bGFibGUiKSkpOworICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBj
cmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNlTmFtZSwgIiBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpKTsKIH0KIAot
dm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQg
dGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBzdGF0ZSwgQVNDSUlMaXRlcmFsKCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsK
IH0KIAotdm9pZCB0aHJvd05vbkZpbml0ZVR5cGVFcnJvcihFeGVjU3RhdGUmIHN0YXRlKQordm9p
ZCB0aHJvd05vbkZpbml0ZVR5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIlRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlIikpOworICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJUaGUgcHJvdmlkZWQgdmFsdWUg
aXMgbm9uLWZpbml0ZSIpKTsKIH0KIAogU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdl
KGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCkBA
IC04OTksMTQgKzkxNCwxNCBAQCBTdHJpbmcgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29u
c3QgCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0
dHJpYnV0ZU5hbWUsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
IGludGVyZmFjZU5hbWUpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5h
bWUpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBtYWtlR2V0dGVyVHlw
ZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBtYWtlR2V0dGVyVHlwZUVycm9y
TWVzc2FnZShpbnRlcmZhY2VOYW1lLCBhdHRyaWJ1dGVOYW1lKSk7CiB9CiAKLWJvb2wgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQorYm9vbCB0aHJvd1NldHRlclR5cGVF
cnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKIHsK
LSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5h
bWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsIHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1
dGVOYW1lLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRl
cmZhY2VOYW1lKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05MTUsOSArOTMwLDkgQEAg
U3RyaW5nIG1ha2VUaGlzVHlwZUVycm9yTWVzc2FnZShjb25zdCBjaAogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsIGludGVyZmFjZU5hbWUsICcuJywgZnVuY3Rpb25OYW1l
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRlcmZhY2VOYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQorRW5jb2RlZEpTVmFsdWUg
dGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUpCiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlVGhpc1R5
cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBtYWtlVGhpc1R5cGVFcnJvck1lc3Nh
Z2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHZvaWQgY2FsbEZ1bmN0aW9u
V2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb24mIGZ1bmN0aW9uKQpAQCAtOTQyLDcgKzk1Nyw5
IEBAIHZvaWQgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2kKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvbnN0cnVj
dG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAn
bmV3JyBvcGVyYXRvciIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJl
dmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMjMgKzExNSwyMyBAQCBET01XaW5kb3cmIGZpcnN0
RE9NV2luZG93KEpTQzo6RXhlY1N0YXRlCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1Zh
bHVlIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKIAot
dm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciog
bWVzc2FnZSk7Ci12b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKLXZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmKTsKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1l
LCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1Nl
cXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHRo
cm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHRo
cm93Tm9uRmluaXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Ci0KLVdFQkNPUkVfRVhQT1JU
IEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFt
ZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25l
ZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKLVdFQkNPUkVf
RVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFt
ZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKTsKK3ZvaWQgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihK
U0M6OlRocm93U2NvcGUmLCBKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwor
dm9pZCB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Cit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVy
cm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJik7Cit2b2lkIHRocm93QXR0cmli
dXRlVHlwZUVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciog
ZXhwZWN0ZWRUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJv
cihKU0M6OlRocm93U2NvcGUmLCBKU0M6OkV4ZWNTdGF0ZSYpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmLCBKU0M6OkV4ZWNTdGF0ZSYs
IGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd05vbkZpbml0ZVR5cGVFcnJvcihKU0M6OlRocm93U2Nv
cGUmLCBKU0M6OkV4ZWNTdGF0ZSYpOworCitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1Zh
bHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiwgSlNDOjpF
eGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5h
bWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcyk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6
RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnRO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiwgSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBh
cmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBl
eHBlY3RlZFR5cGUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yRG9jdW1l
bnRVbmF2YWlsYWJsZUVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJiwgY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSk7CiAKIFN0cmluZyBtYWtlR2V0dGVyVHlwZUVycm9yTWVz
c2FnZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1l
KTsKIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JF
X0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVy
cm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6
OkVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmLCBKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSk7CiAKIFdFQkNPUkVfRVhQT1JUIEpTQzo6U3RydWN0dXJlKiBnZXRDYWNoZWRET01T
dHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwogV0VC
Q09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFs
T2JqZWN0JiwgSlNDOjpTdHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwpAQCAtNDg2
LDkgKzQ4NiwxMiBAQCBpbmxpbmUgaW50MzJfdCBmaW5pdGVJbnQzMlZhbHVlKEpTQzo6SlNWCiAv
LyBWYWxpZGF0ZXMgdGhhdCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVy
IHNlY3Rpb24gNC4xLjEzIG9mIHRoZSBXZWJJREwgc3BlYy4KIGlubGluZSBKU0M6OkpTT2JqZWN0
KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQmIGxlbmd0aCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTQzo6SlNPYmplY3QqIG9i
amVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIHRo
cm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtNDk3LDcgKzUwMCw3IEBAIGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlND
OjoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobGVuZ3RoVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgewotICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTcxNCwyNSArNzE3LDMzIEBAIHRlbXBsYXRl
PD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGRvdWIKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgSlNUPiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6
RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0g
PSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8VD4+KCk7CiAgICAgfQogCiAgICAgVmVj
dG9yPFJlZlB0cjxUPj4gcmVzdWx0OwotICAgIGZvckVhY2hJbkl0ZXJhYmxlKCZleGVjLCB2YWx1
ZSwgWyZyZXN1bHRdKEpTQzo6Vk0mLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKSB7CisgICAgZm9yRWFjaEluSXRlcmFibGUoJmV4ZWMsIHZhbHVlLCBbJnJlc3Vs
dF0oSlNDOjpWTSYgdm0sIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFs
dWUpIHsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAg
ICAgaWYgKGpzVmFsdWUuaW5oZXJpdHMoSlNUOjppbmZvKCkpKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChKU1Q6OnRvV3JhcHBlZChqc1ZhbHVlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKCpzdGF0ZSk7CisgICAgICAgICAgICB0aHJv
d0FycmF5RWxlbWVudFR5cGVFcnJvcih0aHJvd1Njb3BlLCAqc3RhdGUpOwogICAgIH0pOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05h
dGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Cisg
ICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dT
ZXF1ZW5jZVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIFZlY3RvcjxUPigpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqICBDb3B5cmln
aHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTQ1LDcgKzQ2LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIklsbGVnYWwgY29uc3RydWN0b3IiKSk7CisgICAgICAgIEpTQzo6Vk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisgICAgICAgIEpTQzo6dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRl
cmFsKCJJbGxlZ2FsIGNvbnN0cnVjdG9yIikpOwogICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVl
OjplbmNvZGUoSlNDOjpqc051bGwoKSk7CiAgICAgfQogCkBAIC0yMjYsOCArMjI5LDEwIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkUKIAogdGVtcGxhdGU8dHlwZW5h
bWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNCdWlsdGluQ29uc3RydWN0
b3I8SlNDbGFzcz46OmNhbGxDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNPYmplY3QqIG9iamVjdCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAg
ICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKHN0YXRl
LCBpbmZvKCktPmNsYXNzTmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9j
dW1lbnRVbmF2YWlsYWJsZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBpbmZvKCktPmNsYXNzTmFt
ZSk7CiAgICAgcmV0dXJuIGNhbGxDb25zdHJ1Y3RvcihzdGF0ZSwgKm9iamVjdCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCShyZXZpc2lvbiAy
MDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzMsOSArNzMsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IEVuYWJsZUlmRmxvYQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IGlubGlu
ZSBUKiBjb252ZXJ0V3JhcHBlclR5cGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIElzTnVsbGFibGUgaXNOdWxsYWJsZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgVCog
b2JqZWN0ID0gSlNUOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmICghb2JqZWN0ICYmIChpc051
bGxhYmxlID09IElzTnVsbGFibGU6Ok5vIHx8ICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSkK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0yNzUsOSAr
Mjc3LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252
ZXJ0ZXI8VD4gewogICAgIHN0YXRpYyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAgIHsKKyAg
ICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLnRvTnVtYmVy
KCZzdGF0ZSk7CiAgICAgICAgIGlmIChhbGxvdyA9PSBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8g
JiYgVU5MSUtFTFkoIXN0ZDo6aXNmaW5pdGUobnVtYmVyKSkpCi0gICAgICAgICAgICB0aHJvd05v
bkZpbml0ZVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd05vbkZpbml0ZVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihu
dW1iZXIpOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JdGVyYXRvci5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSArMTMxLDEyIEBAIEpTQzo6RW5j
b2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzoKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JDcmVhdGUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBJdGVyYXRpb25LaW5kIGtpbmQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CisKICAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNX
cmFwcGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5m
bygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUs
IHByb3BlcnR5TmFtZSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICp3
cmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUo
SlNET01JdGVyYXRvcjxKU1dyYXBwZXI+OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LnZtKCksIGdldERP
TVN0cnVjdHVyZTxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBn
bG9iYWxPYmplY3QpLCAqd3JhcHBlciwga2luZCkpOwogfQpAQCAtMTgwLDkgKzE4NCwxMiBAQCBh
cHBlbmRGb3JFYWNoQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBzCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU1dyYXBwZXI+CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGl0ZXJhdG9yRm9yRWFjaChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsKKyAgICBKU0M6OlZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3Rh
dGUudGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05h
bWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IodGhy
b3dTY29wZSwgc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFt
ZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgY2FsbGJhY2sgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAg
ICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUuYXJndW1lbnQoMSk7CkBAIC0xOTAsNyAr
MTk3LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOgogICAgIEpT
Qzo6Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6
Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlND
OjpDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsK
IAogICAgIGF1dG8gaXRlcmF0b3IgPSB3cmFwcGVyLT53cmFwcGVkKCkuY3JlYXRlSXRlcmF0b3Io
KTsKICAgICB3aGlsZSAoYXV0byB2YWx1ZSA9IGl0ZXJhdG9yLm5leHQoKSkgewpAQCAtMjI2LDkg
KzIzMywxMiBAQCBKU0M6OkpTVmFsdWUgSlNET01JdGVyYXRvcjxKU1dyYXBwZXI+OjpuCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXI+CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNET01JdGVyYXRvclByb3RvdHlwZTxKU1dyYXBwZXI+OjpuZXh0KEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgYXV0byBpdGVyYXRvciA9IEpTQzo6anNE
eW5hbWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkg
b24gYSBub24tSXRlcmF0b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAg
cmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yLT5uZXh0KCpzdGF0ZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsOCArNDQwLDExIEBAIGlu
bGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRsZXI6OnJldHVyblZhbHUKIAogSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6c2hvd01vZGFsRGlhbG9nKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IFN0cmluZyB1cmxTdHJpbmcgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
KCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKQEAgLTQ2MSw4ICs0NjQsMTEgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFsRGlh
bG9nKEV4ZQogCiBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5kb3cmIGlt
cGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIE1lc3NhZ2VQb3J0QXJyYXkg
bWVzc2FnZVBvcnRzOwogICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJzOwpAQCAtNTA4
LDggKzUxNCwxMSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhCiAK
IEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kg
PSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFj
dGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmpl
Y3QoKS0+d29ybGQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5KTsKQEAgLTUzMCw4ICs1MzksMTEg
QEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdAogCiBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQo
KS5kb2N1bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00OSw5ICs0OSwxMiBAQCB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNEYXRhQ3VlKEV4ZWNT
dGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAg
IGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBkb3VibGUgc3RhcnRUaW1lKGV4ZWMudW5jaGVj
a2VkQXJndW1lbnQoMCkudG9OdW1iZXIoJmV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy5o
YWRFeGNlcHRpb24oKSkpCkBAIC02MywxMyArNjYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVy
cm9yKGV4ZWMsICJEYXRhQ3VlIik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9j
dW1lbnRVbmF2YWlsYWJsZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJEYXRhQ3VlIik7CiAKICAg
ICBTdHJpbmcgdHlwZTsKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICBpZiAoZXhlYy5h
cmd1bWVudENvdW50KCkgPiAzKSB7CiAgICAgICAgIGlmICghZXhlYy51bmNoZWNrZWRBcmd1bWVu
dCgzKS5pc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBu
b3Qgb2YgdHlwZSBTdHJpbmciKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJTZWNvbmQgYXJndW1lbnQgb2YgdGhl
IGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIFN0cmluZyIpKTsKICAgICAgICAgdHlwZSA9IGV4
ZWMudW5jaGVja2VkQXJndW1lbnQoMykuZ2V0U3RyaW5nKCZleGVjKTsKICAgICB9CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkocmV2
aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTc4LDkgKzE3OCwxMiBAQCB2b2lkIEpTRGljdGlvbmFyeTo6
Y29udmVydFZhbHVlKEV4ZWNTdGF0CiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPERPTVdpbmRvdz4mIHJlc3Vs
dCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIGF1dG8qIHdpbmRvdyA9IEpTRE9NV2luZG93Ojp0b1dyYXBw
ZWQoKnN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF3aW5kb3cpICYmICF2YWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsICJE
aWN0aW9uYXJ5IG1lbWJlciBpcyBub3Qgb2YgdHlwZSBXaW5kb3ciKTsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgIkRpY3Rpb25hcnkgbWVtYmVyIGlzIG5vdCBv
ZiB0eXBlIFdpbmRvdyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlc3VsdCA9IHdp
bmRvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0x
MzAsMTIgKzEzMCwxNSBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91
Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGF1dG8gdG91Y2hMaXN0
ID0gVG91Y2hMaXN0OjpjcmVhdGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Rh
dGUuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgYXV0byogaXRlbSA9IEpTVG91Y2g6
OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIGlmICghaXRl
bSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgaSwgInRvdWNoZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0Iiwg
IlRvdWNoIikpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBpLCAidG91Y2hlcyIsICJEb2N1bWVudCIs
ICJjcmVhdGVUb3VjaExpc3QiLCAiVG91Y2giKSk7CiAKICAgICAgICAgdG91Y2hMaXN0LT5hcHBl
bmQoKml0ZW0pOwogICAgIH0KQEAgLTE0NSw4ICsxNDgsMTEgQEAgSlNWYWx1ZSBKU0RvY3VtZW50
OjpjcmVhdGVUb3VjaExpc3QoRXhlYwogCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmdldENTU0NhbnZh
c0NvbnRleHQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgYXV0byBjb250
ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNCArNDIsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTRmlsZShFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgYXV0byogY29uc3RydWN0
b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoJmV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZleGVjLCAiRmlsZSBjb25zdHJ1Y3Rv
ciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmZXhl
YywgIkZpbGUgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIp
KTsKIAogICAgIEpTVmFsdWUgYXJnID0gZXhlYy5hcmd1bWVudCgwKTsKICAgICBpZiAoYXJnLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVj
LCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBi
ZSBhIHZhbGlkIHNlcXVlbmNlLCB3YXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJSUxpdGVyYWwoIkZp
cnN0IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHNlcXVlbmNl
LCB3YXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNMZW5n
dGggPSAwOwogICAgIEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywgYXJn
LCBibG9iUGFydHNMZW5ndGgpOwpAQCAtNTksNyArNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBhcmcgPSBleGVjLmFyZ3VtZW50KDEpOwogICAg
IGlmIChhcmcuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
JmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25kIGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3Ig
bXVzdCBiZSBhIHZhbGlkIHN0cmluZywgd2FzIHVuZGVmaW5lZCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25k
IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHN0cmluZywgd2Fz
IHVuZGVmaW5lZCIpKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZSA9IGFyZy50b1dURlN0cmluZygm
ZXhlYykucmVwbGFjZSgnLycsICc6Jyk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBA
IC03Miw3ICs3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMK
ICAgICBpZiAoIWFyZy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBm
aWxlUHJvcGVydHlCYWdPYmplY3QgPSBhcmcuZ2V0T2JqZWN0KCk7CiAgICAgICAgIGlmICghZmls
ZVByb3BlcnR5QmFnT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
JmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhpcmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IG5vdCBvZiB0eXBlIE9iamVjdCIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJSUxpdGVyYWwoIlRoaXJkIGFyZ3VtZW50IG9mIHRo
ZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBPYmplY3QiKSk7CiAKICAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBkaWN0aW9uYXJ5IHdyYXBwZXIgZnJvbSB0aGUgaW5pdGlhbGl6ZXIgb2JqZWN0Lgog
ICAgICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeSgmZXhlYywgZmlsZVByb3BlcnR5QmFnT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTA0LDggKzEwNCwxMSBAQCBib29sIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlCiAKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3Vu
dCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCphcmd1bWVudC5pbXBsKCkpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykg
Q28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTcxLDgg
KzcxLDExIEBAIHN0YXRpYyB2b2lkIGdldDNEQ29udGV4dEF0dHJpYnV0ZXMoRXhlY1MKIAogSlNW
YWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAg
ICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZygmc3RhdGUpOwpAQCAtOTQsOCArOTcsMTEgQEAgSlNWYWx1ZSBKU0hUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KAogCiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnBy
b2JhYmx5U3VwcG9ydHNDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5n
JiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE1Miw2ICsxNTIsOSBAQCBzdGF0aWMgRG9jdW1lbnQqIGZpbmRDYWxsaW5nRG9j
dW1lbnQoRXhlCiAKIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93
c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUg
d2luZG93LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7CiAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKSkgewpAQCAtMTYxLDcgKzE2NCw3IEBA
IEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiAKICAgICAgICAgICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlND
OjpjYWxsKCZzdGF0ZSwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgd3JhcHBlciwgQXJn
TGlzdCgmc3RhdGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyNyArNDIsMjkgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBhdXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2Jq
ZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rv
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVF
cnJvcihleGVjLCAiSFRNTEVsZW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkhUTUxFbGVtZW50
Iik7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwog
CiAgICAgYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAgaWYgKCF3aW5k
b3cpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwo
Im5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJ
SUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IiKSk7CiAKICAgICBhdXRvKiByZWdpc3RyeSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudFJl
Z2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3RyeSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBub3QgYSB2YWxpZCBjdXN0
b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBub3QgYSB2
YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKICAgICBKU1ZhbHVlIG5ld1RhcmdldFZhbHVlID0gZXhlYy50aGlzVmFsdWUoKTsKICAg
ICBKU09iamVjdCogbmV3VGFyZ2V0ID0gbmV3VGFyZ2V0VmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAg
YXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKG5ld1Rhcmdl
dCk7CiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBh
IGN1c3RvbSBlbGVtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBh
IGN1c3RvbSBlbGVtZW50IikpOwogCiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlLT5pc1VwZ3Jh
ZGluZ0VsZW1lbnQoKSkgewogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVj
dG9yLT5nbG9iYWxPYmplY3QoKTsKQEAgLTgwLDcgKzgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAgICAgRWxlbWVudCogZWxlbWVudFRvVXBncmFkZSA9
IGVsZW1lbnRJbnRlcmZhY2UtPmxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOwogICAg
IGlmICghZWxlbWVudFRvVXBncmFkZSkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQg
aW5zaWRlIGl0cyBvd24gY29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIikpOworICAgICAgICB0
aHJvd0ludmFsaWRTdGF0ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fu
bm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGl0cyBvd24gY29uc3RyY3V0
b3IgZHVyaW5nIHVwZ3JhZGVzIikpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU2LDgg
KzU2LDExIEBAIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUcKIAogSlNW
YWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoc3RhdGUs
IHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKSk7CiAgICAgcmV0dXJuIHZh
bHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw1NCArMzUsNzIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
U3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSFRNTElucHV0
RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0
aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIHJldHVybiBq
c051bWJlcihpbnB1dC5zZWxlY3Rpb25TdGFydCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVs
ZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwog
ICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwog
CiAgICAgaW5wdXQuc2V0U2VsZWN0aW9uU3RhcnQodmFsdWUudG9JbnQzMigmc3RhdGUpKTsKIH0K
IAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdy
YXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKGlucHV0LnNlbGVj
dGlvbkVuZCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVu
ZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBIVE1M
SW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVT
ZWxlY3Rpb24oKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIGlucHV0LnNldFNlbGVjdGlv
bkVuZCh2YWx1ZS50b0ludDMyKCZzdGF0ZSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICgh
aW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0
ZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbnB1dC5zZWxlY3Rp
b25EaXJlY3Rpb24oKSk7CiB9CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rp
b25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1
dC5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtOTEsMTIgKzEwOSwxNSBAQCB2b2lkIEpTSFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uRGlyCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxl
Y3Rpb25SYW5nZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rp
b24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgaW50IHN0YXJ0
ID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmc3RhdGUpOwogICAgIGludCBl
bmQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDkgKzU1LDEyIEBAIEpTVmFsdWUgSlNIaXN0b3J5Ojpz
dGF0ZShFeGVjU3RhdGUmIHN0YXQKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVj
U3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBhdXRvIGFyZ0NvdW50ID0gc3RhdGUuYXJn
dW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdDb3VudCA8IDIpKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgYXV0byBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgm
c3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCkBAIC04Niw5ICs4OSwxMiBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVz
aFN0YXRlKEV4ZWNTdGF0ZSYgCiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgYXV0byBhcmdDb3VudCA9IHN0YXRlLmFy
Z3VtZW50Q291bnQoKTsKICAgICBpZiAoVU5MSUtFTFkoYXJnQ291bnQgPCAyKSkKLSAgICAgICAg
cmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
IAogICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
JnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBNaWNoYWVsIFBydWV0
dCA8bWljaGFlbEA2OGsub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTQ3LDggKzQ4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0lEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBu
YW1lID0gc3RhdGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC01Niw3ICs2MCw3IEBAIEpTVmFsdWUg
SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUKIAogICAgIEpTVmFsdWUgb3B0aW9uc1Zh
bHVlID0gc3RhdGUuYXJndW1lbnQoMSk7CiAgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSAmJiAhb3B0aW9uc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsICJOb3QgYW4gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCAiTm90IGFuIG9iamVjdC4iKTsKIAog
ICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0y
MDA4LCAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTQ2LDEwICs0NiwxMyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNJbWFn
ZUNvbnN0cnVjdG9yOjpwCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNJbWFnZUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
SW1hZ2VDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ltYWdlQ29uc3RydWN0
b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGpzQ29uc3Ry
dWN0b3ItPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Ioc3RhdGUsICJJbWFnZSBjb25z
dHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBjcmVhdGVSZWZlcmVuY2VFcnJv
cihzdGF0ZSwgIkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFp
bGFibGUiKSk7CiAKICAgICAvLyBDYWxsaW5nIHRvSlMgb24gdGhlIGRvY3VtZW50IGNhdXNlcyB0
aGUgSlMgZG9jdW1lbnQgd3JhcHBlciB0byBiZQogICAgIC8vIGFkZGVkIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LiBUaGlzIGlzIGRvbmUgdG8gZW5zdXJlIHRoYXQgSlNEb2N1bWVudDo6dmlzaXQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDggKzM1OCwx
MSBAQCBzdGF0aWMgdm9pZCBwYXJzZUNvbnN0cmFpbnRzKGNvbnN0IERpY3RpCiAKIEpTVmFsdWUg
SlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVj
b2RlKHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRv
IGNvbnN0cmFpbnRzRGljdGlvbmFyeSA9IERpY3Rpb25hcnkoJnN0YXRlLCBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFTZXNzaW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTZXNzaW9uQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00MSwxMSArNDEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTTWVkaWFTZXNzaW9uKEV4ZWNTdGF0ZSYgZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PERPTUNvbnN0cnVjdG9y
T2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gY2FzdGVkVGhp
cy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgIk1l
ZGlhU2Vzc2lvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5h
dmFpbGFibGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiTWVkaWFTZXNzaW9uIik7CiAKICAgICBT
dHJpbmcga2luZDsKICAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgPiAwKSB7CkBAIC01NCw3
ICs1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGtp
bmQgPSBraW5kU3RyaW5nLT52YWx1ZSgmZXhlYyk7CiAgICAgICAgIGlmIChraW5kICE9ICJjb250
ZW50IiAmJiBraW5kICE9ICJ0cmFuc2llbnQiICYmIGtpbmQgIT0gInRyYW5zaWVudC1zb2xvIiAm
JiBraW5kICE9ICJhbWJpZW50IikKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVz
dEJlRW51bUVycm9yKGV4ZWMsIDAsICJraW5kIiwgIk1lZGlhU2Vzc2lvbiIsIG51bGxwdHIsICJc
ImNvbnRlbnRcIiwgXCJ0cmFuc2llbnRcIiwgXCJ0cmFuc2llbnQtc29sb1wiLCBcImFtYmllbnRc
IiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgMCwgImtpbmQiLCAiTWVkaWFTZXNzaW9uIiwgbnVsbHB0ciwgIlwiY29u
dGVudFwiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaWVudC1zb2xvXCIsIFwiYW1iaWVudFwiIik7
CiAgICAgfSBlbHNlCiAgICAgICAgIGtpbmQgPSAiY29udGVudCI7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxMCArNDEsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpn
ZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0
U2V0dGluZ3MiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlw
ZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5n
cyIpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3Rh
dGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMDIsMTAg
KzEwNSwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjYXBhYmlsaXR5VmFsdWUoY29uc3QgQ2FwCiAKIEpT
Qzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcyhFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNW
YWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVF
cnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsIHN0
YXRlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsKIAogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtNTksNiArNTksOSBAQCBKU0M6OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3Nh
Z2UoCiAKIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSwgQXJyYXlCdWZm
ZXJBcnJheSYgYXJyYXlCdWZmZXJzKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyBDb252ZXJ0IGZyb20g
dGhlIHBhc3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIE1lc3NhZ2VQb3J0QXJyYXku
CiAgICAgLy8gQWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMg
YW5kIDQuMS4xNSBvZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhU
TUw1IHNwZWMuCiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKQEAgLTk1LDcg
Kzk4LDcgQEAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZQogICAgICAg
ICAgICAgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVy
KHZhbHVlKSkKICAgICAgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYXJy
YXlCdWZmZXIpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJnN0YXRlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01MCw4ICs1MSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5l
IEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQq
IGltcGwpCiAgICAgeworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgICAgIGlmIChVTkxJS0VM
WShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFy
cmF5QnVmZmVyQXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBK
U1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjCiAKIHZvaWQgSlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgeyBjb252
ZXJ0PHVpbnQ4X3Q+KHN0YXRlLCB2YWx1ZSwgRW5mb3JjZVJhbmdlKSB9OwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzcsNyBAQCB2b2lk
IEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBu
b3QgYSB2YWxpZCBkZWNpc2lvblBvaW50IHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CisgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90
IGEgdmFsaWQgZGVjaXNpb25Qb2ludCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUgdG9KU1ZhbHVlKERlY2lzaW9uIGRlY2lzaW9uKQpAQCAtOTEsNiAr
OTQsOSBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdG9KU1ZhbHVlKERlY2lzaW9uCiAKIHN0YXRp
YyBpbmxpbmUgRGVjaXNpb24gdG9EZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlIHsgY29udmVydDx1aW50
OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7CkBAIC0xMDIsNyArMTA4
LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdAogICAgICAgICBy
ZXR1cm4gZGVjaXNpb247CiAgICAgfQogCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJp
bmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFs
dWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIFN0cmluZzo6Zm9y
bWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNpc2lvbiB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwog
ICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTAzLDYgKzEwMyw5IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
OjoKIAogSlNDOjpKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6
OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSkK
IHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgSlNNb2R1bGVSZWNvcmQuCiAgICAgLy8gT25jZSB0aGUgcmVmbGVjdGl2ZSBwYXJ0IG9mIHRo
ZSBtb2R1bGUgbG9hZGVyIGlzIHN1cHBvcnRlZCwgd2Ugd2lsbCBoYW5kbGUgYXJiaXRyYXJ5IHZh
bHVlcy4KICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZWdpc3RyeS1w
cm90b3R5cGUtcHJvdmlkZQpAQCAtMTE2LDEwICsxMTksMTAgQEAgSlNDOjpKU1ZhbHVlIEpTTW9k
dWxlTG9hZGVyOjpldmFsdWF0ZShKUwogICAgIGVsc2UgaWYgKG1vZHVsZUtleVZhbHVlLmlzU3Ry
aW5nKCkpCiAgICAgICAgIHNvdXJjZVVybCA9IFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5
VmFsdWUpLT52YWx1ZShleGVjKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gSlNDOjp0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJvbCBv
ciBTdHJpbmcuIikpOworICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJvbCBvciBTdHJp
bmcuIikpOwogCiAgICAgaWYgKCFzb3VyY2VVcmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
SlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgYW4g
aW52YWxpZCBVUkwuIikpOworICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgYW4gaW52YWxpZCBVUkwu
IikpOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBldmFsdWF0aW5nIG1vZHVsZSBjb2RlLgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRp
b25PYnNlcnZlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NDQsMTkgKzQ1LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlJiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZl
eGVjKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKICAgICBpZiAoIW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsYmFjayBhcmd1
bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJSUxpdGVyYWwoIkNhbGxiYWNrIGFyZ3VtZW50IG11
c3QgYmUgYSBmdW5jdGlvbiIpKTsKIAogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0
cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAg
ICAgYXV0byBjYWxsYmFjayA9IEpTTXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwganND
b25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBqc09ic2VydmVyID0g
YXNPYmplY3QodG9KU05ld2x5Q3JlYXRlZCgmZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2Jq
ZWN0KCksIE11dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKICAg
ICBQcml2YXRlTmFtZSBwcm9wZXJ0eU5hbWU7Ci0gICAganNPYnNlcnZlci0+cHV0RGlyZWN0KGpz
Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT52bSgpLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7
CisgICAganNPYnNlcnZlci0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc09ic2VydmVyKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDktMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMiwxMyArMTEyLDE2IEBAIGJvb2wgSlNO
b2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVIKIAogSlNWYWx1ZSBKU05vZGU6Omluc2Vy
dEJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBKU1ZhbHVlIG5ld0No
aWxkVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvKiBuZXdDaGls
ZCA9IEpTTm9kZTo6dG9XcmFwcGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
bmV3Q2hpbGQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRU
eXBlRXJyb3Ioc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAiaW5zZXJ0QmVmb3JlIiwgIk5vZGUi
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJv
cih0aHJvd1Njb3BlLCBzdGF0ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJpbnNlcnRCZWZvcmUiLCAi
Tm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSgh
d3JhcHBlZCgpLmluc2VydEJlZm9yZSgqbmV3Q2hpbGQsIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgZWMpKSkgewpAQCAtMTMyLDE2ICsxMzUsMTkgQEAgSlNW
YWx1ZSBKU05vZGU6Omluc2VydEJlZm9yZShFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTTm9kZTo6
cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8qIG5l
d0NoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIEpTVmFsdWUgb2xkQ2hpbGRWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwog
ICAgIGF1dG8qIG9sZENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQob2xkQ2hpbGRWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFuZXdDaGlsZCB8fCAhb2xkQ2hpbGQpKSB7CiAgICAgICAgIGlmICgh
bmV3Q2hpbGQpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1l
bnRUeXBlRXJyb3Ioc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5v
ZGUiKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgMSwgImNoaWxkIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJy
b3IodGhyb3dTY29wZSwgc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwg
Ik5vZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5
cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgMSwgImNoaWxkIiwgIk5vZGUiLCAicmVwbGFjZUNo
aWxkIiwgIk5vZGUiKSk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0x
NTYsMTAgKzE2MiwxMyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYg
CiAKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBKU1ZhbHVlIGNoaWxkVmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBh
dXRvKiBjaGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKGNoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2hpbGQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1l
bnRUeXBlRXJyb3Ioc3RhdGUsIDAsICJjaGlsZCIsICJOb2RlIiwgInJlbW92ZUNoaWxkIiwgIk5v
ZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQi
LCAiTm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VM
WSghd3JhcHBlZCgpLnJlbW92ZUNoaWxkKCpjaGlsZCwgZWMpKSkgewpAQCAtMTczLDEwICsxODIs
MTMgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgcwogCiBKU1ZhbHVl
IEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAg
SlNWYWx1ZSBuZXdDaGlsZFZhbHVlID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgYXV0byBuZXdD
aGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghbmV3Q2hpbGQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1l
bnRUeXBlRXJyb3Ioc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAiYXBwZW5kQ2hpbGQiLCAiTm9k
ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKHRocm93U2NvcGUsIHN0YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImFwcGVuZENoaWxkIiwg
Ik5vZGUiKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoVU5MSUtFTFko
IXdyYXBwZWQoKS5hcHBlbmRDaGlsZCgqbmV3Q2hpbGQsIGVjKSkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAkocmV2aXNp
b24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw5IEBAIHVpbnQxNl90IEpTTm9kZUZpbHRl
cjo6YWNjZXB0Tm9kZShOb2RlKiAKIHsKICAgICBSZWY8SlNOb2RlRmlsdGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0
KCktPnZtKCkpOworICAgIFZNJiB2bSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOwogCiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtNTQsNyAr
NTYsNyBAQCB1aW50MTZfdCBKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb25Pck9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhz
dGF0ZSwgImFjY2VwdE5vZGUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikgewogICAgICAgICAvLyBSZXRocm93IGV4Y2VwdGlvbi4KLSAgICAgICAgc3Rh
dGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAg
ICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwog
CiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxMyArNDAsMTYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTT3NjaWxsYXRvck5vZGU6OnNldFR5cGUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgT3NjaWxsYXRv
ck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQog
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGUgPSB2YWx1
ZS50b1VJbnQzMigmc3RhdGUpOwogICAgICAgICBpZiAoIWltcC5zZXRUeXBlKHR5cGUpKQotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgT3Nj
aWxsYXRvck5vZGUgdHlwZSIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbGxlZ2FsIE9zY2lsbGF0b3JOb2RlIHR5cGUiKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTU4LDcgKzYyLDcgQEAgdm9pZCBK
U09zY2lsbGF0b3JOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZQogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbGxlZ2FsIE9zY2ls
bGF0b3JOb2RlIHR5cGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgT3NjaWxsYXRvck5vZGUgdHlwZSIpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
YW5uZXJOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5
LDEzICs0MCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNQYW5uZXJOb2RlOjpz
ZXRQYW5uaW5nTW9kZWwoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgUGFubmVyTm9kZSYgaW1wID0gd3JhcHBlZCgpOwogCiAjaWYgRU5BQkxFKExFR0FD
WV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgdWludDMy
X3QgbW9kZWwgPSB2YWx1ZS50b1VJbnQzMigmc3RhdGUpOwogICAgICAgICBpZiAoIWltcC5zZXRQ
YW5uaW5nTW9kZWwobW9kZWwpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIklsbGVnYWwgcGFubmluZ01vZGVsIikpOworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgcGFubmlu
Z01vZGVsIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01OCwxOCArNjIs
MjEgQEAgdm9pZCBKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChFeGVjUwogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJ
bGxlZ2FsIHBhbm5pbmdNb2RlbCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBwYW5uaW5nTW9kZWwiKSk7CiB9CiAKIHZvaWQg
SlNQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAog
I2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7
CiAgICAgICAgIHVpbnQzMl90IG1vZGVsID0gdmFsdWUudG9VSW50MzIoJnN0YXRlKTsKICAgICAg
ICAgaWYgKCFpbXAuc2V0RGlzdGFuY2VNb2RlbChtb2RlbCkpCi0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBkaXN0YW5jZU1vZGVsIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZgpAQCAtODIsNyArODksNyBAQCB2b2lkIEpTUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2Rl
bChFeGVjCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKTsKKyAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBkaXN0YW5jZU1v
ZGVsIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJ
KHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC05NiwxMCArOTYsMTIgQEAgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3RhdGUq
IAogICAgIAogRW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBKU0hUTUxFbGVtZW50KiB0aGlzT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU0hUTUxFbGVtZW50Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgdGhp
c09iamVjdCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1
Y3RvcnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDE0ICszNywxOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBQdWJsaWMgSlMgUmVhZGFibGVTdHJlYW1SZWRlciBh
bmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBjYWxsYmFja3Mu
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKKyAgICBW
TSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQg
bm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihFeGVjU3RhdGUmIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworICAgIAogICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHlu
YW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkpOwogICAgIGlmICgh
c3RyZWFtKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3IgcGFyYW1ldGVyIGlz
IG5vdCBhIFJlYWRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIgY29uc3RydWN0b3IgcGFyYW1ldGVyIGlzIG5vdCBhIFJlYWRhYmxlU3RyZWFtIikpOwog
CiAgICAgSlNWYWx1ZSBqc0Z1bmN0aW9uID0gc3RyZWFtLT5nZXQoJmV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJmV4ZWMsICJnZXRSZWFkZXIiKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTQ3LDEzICs0OCwxNiBAQCBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjp2YWx1ZShFeGVjU3Rh
dGUmIHN0CiAKIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgp
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmlzTnVtYmVyKCkgJiYgIXZhbHVlLmlzQm9vbGVhbigp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03Miw2ICs3Niw5IEBAIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3QK
IAogSlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHdyYXBwZWQoKS5pc1JlYWRPbmx5KCkpIHsK
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC04MCw3ICs4Nyw3IEBAIEpT
VmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFUKICAgICBTVkdMZW5ndGgmIHBv
ZEltcCA9IHdyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogCiAgICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlw
ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMyKCZzdGF0ZSk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDggKzk4LDExIEBAIEpT
VmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTeW4KIAogSlNWYWx1ZSBKU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICBy
ZXR1cm4gZXhlYy52bSgpLnRocm93RXhjZXB0aW9uKCZleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKIAogICAg
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWdu
ZWQgcG5hbWUgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJmV4ZWMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MCw4ICsxNzAsMTEgQEAgZW51bSBPYmplY3RUeXBlIHsK
IAogc3RhdGljIEpTVmFsdWUgZ2V0T2JqZWN0UGFyYW1ldGVyKEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSogb2JqLCBFeGVjU3RhdGUmIHN0YXRlLCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAg
cmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
ICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gb2JqLT53cmFwcGVkKCk7CkBAIC0yNzAsMTMgKzI3MywxNiBAQCB2
b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBCiAKIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAg
ICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBK
U1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICBWZWN0b3I8
UmVmUHRyPFdlYkdMU2hhZGVyPj4gc2hhZGVyczsKICAgICBib29sIHN1Y2NlZWQgPSBjb250ZXh0
LmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBzaGFkZXJzLCBlYyk7CiAgICAgaWYgKGVjKSB7
CkBAIC0yOTMsOCArMjk5LDExIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVuc2lv
bihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRD
b3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKQEAgLTMx
MSw4ICszMjAsMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAog
CiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3Jh
cHBlZCgpOwpAQCAtMzM1LDggKzM0NywxMSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
YXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSAhPSAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7
CkBAIC0zNTMsMTQgKzM2OCwxNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFt
UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgp
OwogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQo
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0
aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0zNzksMTMgKzM5NywxNiBAQCBK
U1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS5pbmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsICZzdGF0ZSk7CiAgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IEpTV2ViR0xTaGFk
ZXI6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgdW5zaWduZWQg
cG5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNDE3LDE3ICs0MzgsMjAgQEAgSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dlYkdMUHJv
Z3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXBy
b2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgJnN0YXRlKTsKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQuZ2V0VW5pZm9y
bShwcm9ncmFtLCBsb2NhdGlvbiwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CkBAIC00ODgsOCArNTEyLDExIEBAIHN0YXRpYyBib29sIGZ1
bmN0aW9uRm9yVW5pZm9ybShEYXRhRnVuY3QKIAogc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVu
Y3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0
ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24gPSAwOwogICAgIGxvbmcgaW5kZXggPSAtMTsKQEAgLTQ5Nyw3ICs1
MjQsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgaWYg
KGZ1bmN0aW9uRm9yVW5pZm9ybShmKSkgewogICAgICAgICBsb2NhdGlvbiA9IEpTV2ViR0xVbmlm
b3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
ICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwog
ICAgIH0gZWxzZQogICAgICAgICBpbmRleCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
SW50MzIoJnN0YXRlKTsKICAgICAKQEAgLTU0Myw3ICs1NzAsNyBAQCBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgCiAgICAgVmVjdG9yPGZsb2F0LCA2ND4gYXJy
YXk7CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSks
IGFycmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIAogICAgIHN3
aXRjaCAoZikgewogICAgIGNhc2UgZl91bmlmb3JtMXY6CkBAIC01NzgsMTIgKzYwNSwxNSBAQCBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAKIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnVuY3Rpb25Ub0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6
dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWxvY2F0aW9u
ICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAgICAgCiAgICAgUmVmUHRyPEludDMyQXJy
YXk+IHdlYkdMQXJyYXkgPSB0b0ludDMyQXJyYXkoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkp
OwogICAgIApAQCAtNjEzLDcgKzY0Myw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0
aW9uaShEYXRhRnUKICAgICAKICAgICBWZWN0b3I8aW50LCA2ND4gYXJyYXk7CiAgICAgaWYgKCF0
b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIAogICAgIHN3aXRjaCAoZikgewogICAg
IGNhc2UgZl91bmlmb3JtMXY6CkBAIC02MzgsMTIgKzY2OCwxNSBAQCBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0
aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dy
YXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghbG9jYXRpb24gJiYg
IXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAKICAgICBib29sIHRyYW5zcG9zZSA9IHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTY3MSw3ICs3MDQsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGRhdGFGdW5jdGlvbk1hdHJpeChECiAgICAgCiAgICAgVmVjdG9yPGZsb2F0LCA2ND4gYXJyYXk7
CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiksIGFy
cmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIAogICAgIHN3aXRj
aCAoZikgewogICAgIGNhc2UgZl91bmlmb3JtTWF0cml4MmZ2OgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw2ICs3Nyw5IEBA
IHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGVBbGcKIAogc3RhdGljIGJvb2wg
Y3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSwgQ3J5cHRvS2V5Rm9ybWF0JiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBrZXlG
b3JtYXRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODks
NyArOTIsNyBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShFCiAgICAg
ZWxzZSBpZiAoa2V5Rm9ybWF0U3RyaW5nID09ICJqd2siKQogICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlGb3JtYXQ6OkpXSzsKICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIlVua25vd24ga2V5IGZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlVua25vd24ga2V5IGZv
cm1hdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTk3LDggKzEwMCwxMSBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1
ZShFCiAKIHN0YXRpYyBib29sIGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0tleVVzYWdlJiByZXN1bHQpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsOCArMTM4LDExIEBAIHN0YXRpYyBi
b29sIGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKEUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAo
c3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGht
ID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMTQ5LDcgKzE1OCw3IEBAIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXgKIAogICAgIFJlZlB0cjxDcnlwdG9L
ZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAK
ICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKICAgICAgICAg
d3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGlu
Y2x1ZGUgJ2VuY3J5cHQnIikpOwpAQCAtMTg1LDggKzE5NCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0
U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0
ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTIwMiw3ICsyMTQsNyBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkg
PSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAg
ICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgaWYg
KCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZURlY3J5cHQpKSB7CiAgICAgICAgIHdyYXBwZWQo
KS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdk
ZWNyeXB0JyIpKTsKQEAgLTIzNyw4ICsyNDksMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZGVjcnlwdChFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1G
cm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICgh
YWxnb3JpdGhtKSB7CkBAIC0yNTQsNyArMjY5LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6c2lnbihFeGVjUwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlwdG9L
ZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFrZXkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIGlmICgha2V5LT5hbGxv
d3MoQ3J5cHRvS2V5VXNhZ2VTaWduKSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnc2lnbiciKSk7CkBAIC0y
ODksOCArMzA0LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1MK
IAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA0KQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0
ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBA
IC0zMDYsNyArMzI0LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4
ZQogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNh
Z2VWZXJpZnkpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFs
KCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnknIikpOwpAQCAtMzQ3LDggKzM2NSwx
MSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlCiAKIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2VzdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1
dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMzg5LDggKzQx
MCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlCiAKIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwg
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC00
NDUsNiArNDY5LDkgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZQog
CiBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0
IGtleUZvcm1hdCwgQ3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhLCBSZWZQdHI8Q3J5cHRvQWxnb3Jp
dGhtPiBhbGdvcml0aG0sIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBwYXJhbWV0
ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSBrZXlVc2FnZXMsIENyeXB0b0Fs
Z29yaXRobTo6S2V5Q2FsbGJhY2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxi
YWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0tleVNlcmlhbGl6YXRpb24+IGtleVNlcmlhbGl6YXRpb247CiAgICAgc3dpdGNoIChrZXlG
b3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3OgpAQCAtNDUzLDcgKzQ4MCw3
IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBjYXNlIENy
eXB0b0tleUZvcm1hdDo6SldLOiB7CiAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcgPSBTdHJpbmc6
OmZyb21VVEY4KGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKICAgICAgICAgaWYgKGp3a1N0cmlu
Zy5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxp
dGVyYWwoIkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04IikpOworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04IikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGtleVNlcmlhbGl6YXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSz4oJnN0YXRlLCBqd2tTdHJpbmcp
OwpAQCAtNDYyLDcgKzQ4OSw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0
YXRlLCAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZv
ciBpbXBvcnQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBpbXBvcnQiKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3MSw3ICs0OTgsNyBAQCBzdGF0aWMgdm9pZCBpbXBv
cnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAgICAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFp
cj4gcmVjb25jaWxlZFJlc3VsdCA9IGtleVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUFsZ29yaXRo
bShhbGdvcml0aG0uZ2V0KCksIHBhcmFtZXRlcnMuZ2V0KCkpOwogICAgIGlmICghcmVjb25jaWxl
ZFJlc3VsdCkgewogICAgICAgICBpZiAoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkFsZ29yaXRobSBzcGVjaWZp
ZWQgaW4ga2V5IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggb25lIHBhc3NlZCB0byBpbXBvcnRLZXkg
YXMgYXJndW1lbnQiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNv
bXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00
ODAsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAog
ICAgIGFsZ29yaXRobSA9IHJlY29uY2lsZWRSZXN1bHQtPmFsZ29yaXRobTsKICAgICBwYXJhbWV0
ZXJzID0gcmVjb25jaWxlZFJlc3VsdC0+cGFyYW1ldGVyczsKICAgICBpZiAoIWFsZ29yaXRobSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiTmVpdGhlciBr
ZXkgbm9yIGZ1bmN0aW9uIGFyZ3VtZW50IGhhcyBjcnlwdG8gYWxnb3JpdGhtIHNwZWNpZmllZCIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIk5laXRoZXIga2V5IG5vciBmdW5jdGlvbiBhcmd1bWVudCBoYXMgY3J5cHRvIGFsZ29yaXRo
bSBzcGVjaWZpZWQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHBhcmFt
ZXRlcnMpOwpAQCAtNTA1LDggKzUzMiwxMSBAQCBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0
YXRlJiBzdGF0ZSwgCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmltcG9ydEtleShF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3Vu
dCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAg
aWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCks
IGtleUZvcm1hdCkpIHsKQEAgLTU2OCw4ICs1OTgsMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6aW1wb3J0S2V5KAogCiBzdGF0aWMgdm9pZCBleHBvcnRLZXkoRXhlY1N0YXRlJiBz
dGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIENy
eXB0b0FsZ29yaXRobTo6VmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6
Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFrZXku
ZXh0cmFjdGFibGUoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiS2V5IGlzIG5vdCBleHRyYWN0YWJsZSIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIktleSBpcyBub3QgZXh0cmFjdGFibGUi
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU5MywxNSArNjI2LDE4IEBAIHN0YXRp
YyB2b2lkIGV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBr
ZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdDsKICAgICBpZiAoIWNyeXB0b0tleUZvcm1h
dEZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwga2V5Rm9ybWF0KSkgewpAQCAt
NjExLDcgKzY0Nyw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9ydEtleSgK
IAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsICZzdGF0ZSk7CiAKICAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVy
cmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsK
ICAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBwcm9t
aXNlRGVmZXJyZWQpOwpAQCAtNjMxLDggKzY2NywxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxl
Q3J5cHRvOjpleHBvcnRLZXkoCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBL
ZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDQpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0Owog
ICAgIGlmICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50
KDApLCBrZXlGb3JtYXQpKSB7CkBAIC02NDIsMTEgKzY4MSwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0
U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBK
U0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBp
ZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgUmVmUHRy
PENyeXB0b0tleT4gd3JhcHBpbmdLZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDIpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCAmc3RhdGUpOwogCiAgICAgaWYgKCF3cmFwcGluZ0tleS0+YWxsb3dzKENyeXB0b0tleVVz
YWdlV3JhcEtleSkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVy
YWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikpOwpAQCAtNzAwLDggKzcz
OSwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4CiAKIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnVud3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAog
ICAgIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRG
cm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTcx
Nyw3ICs3NTksNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoCiAK
ICAgICBSZWZQdHI8Q3J5cHRvS2V5PiB1bndyYXBwaW5nS2V5ID0gSlNDcnlwdG9LZXk6OnRvV3Jh
cHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSk7CiAgICAgaWYgKCF1bndyYXBwaW5nS2V5
KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBp
bmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKICAgICAgICAgd3JhcHBl
ZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUg
J3Vud3JhcEtleSciKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDcsMTAgKzQ3LDEzIEBAIEpT
Qzo6SlNWYWx1ZSBKU1dvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjoKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9N
Q29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKIAogICAgIGlmICghZXhlYy5hcmd1
bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVj
KSk7CiAKICAgICBTdHJpbmcgc2NyaXB0VVJMID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZygmZXhlYyk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNj
b3BlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDEx
LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzksOCArNzksMTEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNj
b3BlOjppbXBvcnRTY3JpcAogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVv
dXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNj
aGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC05Myw4ICs5NiwxMSBAQCBKU1Zh
bHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoCiAKIEpTVmFsdWUgSlNXb3JrZXJH
bG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0
aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE2IENhbm9uIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0
OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxGdW5jdGlvbigKIAogSlNDOjpK
U1ZhbHVlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omludm9rZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVyKQogewotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2soJnN0YXRlKTsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CiAKICAgICBhdXRvIGZ1bmN0aW9uID0gb2JqZWN0LmdldCgmc3RhdGUsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsIHByb3BlcnR5TmFtZSkpOwogICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKQEAgLTU1LDcgKzU4LDcgQEAgSlNDOjpKU1ZhbHVlIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRybwogCiAgICAgaWYgKCFmdW5jdGlvbi5pc0Z1bmN0aW9uKCkpIHsKICAgICAg
ICAgaWYgKCFmdW5jdGlvbi5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0byBjYWxsIGEg
cHJvcGVydHkgdGhhdCBpcyBub3QgY2FsbGFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5
aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKTsKICAgICAgICAg
cmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNp
b24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHZvaWQgdGhyb3dTdGFja092ZXJmbG93KCkKICAgICB7Ci0gICAgICAgIG1fZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4
ZWMpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlv
bihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKICAgICB9CiAKICAg
ICB2b2lkIGZhaWwoKQpAQCAtMTU3MCw3ICsxNTcyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
dGhyb3dWYWxpZGF0aW9uRXJyb3IoKQogICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9l
eGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKKyAgICAg
ICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICB9CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24gPD0gQ3VycmVudFZlcnNp
b247IH0KQEAgLTI3NTYsMTUgKzI3NjAsMTggQEAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcgogCiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4
Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChFeGVjU3RhdGUqIGV4ZWMsIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIGNvZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChjb2RlID09IFN1Y2Nlc3Nm
dWxseUNvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN3aXRjaCAoY29kZSkg
ewogICAgIGNhc2UgU3RhY2tPdmVyZmxvd0Vycm9yOgotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgICAg
IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWYWxpZGF0aW9uRXJyb3I6Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIGRhdGEuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBEYXRhQ2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIERBVEFfQ0xPTkVfRVJSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMTI1LDExICsxMjUsMTIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZShjbwogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogCiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAog
ICAgIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYm
IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlz
VGVybWluYXRpbmdFeGVjdXRpb24oKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQyLDcgKzE0Myw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGUoY28KICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJjZUNvZGUu
dXJsKCkuc3RyaW5nKCk7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGVycm9yOwog
ICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+c2FuaXRpemVTY3JpcHRFcnJvcihlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBlcnJvciwgc291
cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSkpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkpKTsKKyAgICAgICAg
ICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJy
b3JNZXNzYWdlLmltcGwoKSkpOwogICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSB2bS5l
eGNlcHRpb24oKTsKICAgICAgICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIH0K
QEAgLTE1Miw3ICsxNTMsOSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
KGNvCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2Vw
dGlvbiogZXhjZXB0aW9uKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA0
ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTg3OCw5ICs4NzgsMTEgQEAgc3ViIEdlbmVyYXRlRW51bWVy
YXRpb25JbXBsZW1lbnRhdGlvbkNvbgogCiAgICAgICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4g
JGNsYXNzTmFtZSBjb252ZXJ0PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpXG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVzdWx0IC49
ICIgICAgVk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsgLy8gbWxhbSAxXG4iOwogICAgICAgICAk
cmVzdWx0IC49ICIgICAgYXV0byByZXN1bHQgPSBwYXJzZTwkY2xhc3NOYW1lPihzdGF0ZSwgdmFs
dWUpO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkg
e1xuIjsKLSAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
O1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCAmc3RhdGUpO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4geyB9
O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH1cbiI7CiAgICAgICAgICRyZXN1bHQgLj0g
IiAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7XG4iOwpAQCAtOTc5LDExICs5ODEsMTMgQEAgc3Vi
IEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udAogCiAgICAgICAgICRyZXN1bHQg
Lj0gInRlbXBsYXRlPD4gT3B0aW9uYWw8JGNsYXNzTmFtZT4gY29udmVydERpY3Rpb25hcnk8JGNs
YXNzTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAgICAgICRy
ZXN1bHQgLj0gIntcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpO1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOyAvLyBtbGFtIDJcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBpZiAodmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIgaWYgJGRlZmF1bHRWYWx1ZXM7CiAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuICRjbGFzc05hbWUgeyAiIC4gJGRlZmF1bHRWYWx1ZXMg
LiAiIH07XG4iIGlmICRkZWZhdWx0VmFsdWVzOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0
byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIg
ICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0
VHlwZSkpIHtcbiI7Ci0gICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0
dXJuIE51bGxvcHQ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIApAQCAtMTg5
MCw2ICsxODk0LDggQEAgc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1Ywog
ICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOyAgICAKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAg
ICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigkbWF4QXJnQ291bnQsIHN0YXRl
LT5hcmd1bWVudENvdW50KCkpOwogRU5ECiAKQEAgLTE5NjQsOSArMTk3MCw5IEBAIEVORAogICAg
IH0KICAgICBteSAkbWluQXJnQ291bnQgPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24pOwog
ICAgIGlmICgkbWluQXJnQ291bnQgPiAwKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBhcmdzQ291bnQgPCAkbWluQXJnQ291bnQgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTtcbiIpCisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBhcmdz
Q291bnQgPCAkbWluQXJnQ291bnQgPyB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsIHN0YXRlKTtcbiIpCiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIikKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29w
ZSwgc3RhdGUpO1xuIikKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
fQpAQCAtMjQxNiw2ICsyNDIyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbXBpbGVUaW1l
Q2hlY2tGb3JFbnVtc0lmTmVlZGVkKCRpbnRlcmZhY2UpKTsKIAogICAgICAgICBteSAkcHJvdG9D
bGFzc05hbWUgPSAiJHtjbGFzc05hbWV9UHJvdG90eXBlIjsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIvLyBtbGFtIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyAxXG4iKTsKICAg
ICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFz
c05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNl
KTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENv
bnN0cnVjdG9yIn0pIHsKICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
cyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0sICRpbnRlcmZhY2UsICJH
ZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciIpOwpAQCAtMjc1Niw3ICsyNzYzLDggQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5j
b2RlZEpTVmFsdWUgJHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
O1xuIik7CiAKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CkBAIC0yNzcyLDcgKzI3
ODAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcih0aHJvd1Njb3BlLCAq
c3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxu
Iik7CiAgICAgICAgICAgICB9CkBAIC0yOTQ5LDkgKzI5NTcsMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNW
YWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsgLy8gbWxhbSAzXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSlcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlKTtcbiIpOwogCiAgICAgICAgICAgICBpZiAo
ISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9KSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSgke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKQEAgLTI5NjgsMTAgKzI5NzgsMTIgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wg
JHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7IC8vIG1sYW0gNFxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFz
c05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkge1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB9XG4iKTsKIApAQCAtMzA1MSw2ICszMDYzLDggQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7cHV0
RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKQEAgLTMwNjMsNyArMzA3Nyw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn0pIHsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IodGhyb3dTY29wZSwgKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFt
ZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfQpAQCAtMzE1Miw3
ICszMTY2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7XG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVc
IiwgXCIkdHlwZVwiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0
ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0
dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfVxuIik7CkBAIC0zMTcxLDcgKzMxODUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVuY2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFuYXRp
dmVWYWx1ZSkpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJm
YWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKHRo
cm93U2NvcGUsICpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBc
IiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzMzOSw2ICszMzUz
LDEwIEBAIEVORAogCiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5o
PiJ9ID0gMTsKIAorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOyAvLyBtbGFtIDVcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7
CisKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNFUmVhY3Rpb25zIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKVxuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2s7XG4iKTsKQEAgLTMzNDgsOSArMzM2NiwxMSBAQCBFTkQKIAogICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICBpZiAo
JGlzQ3VzdG9tKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IC8vLy8gbWxhbSBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sgMVxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVu
Y3Rpb24sICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZSAuICIoc3RhdGUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vLy8g
bWxhbSBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sgMlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9u
V2l0aE1lc3NhZ2UpIHsKQEAgLTMzOTMsNiArMzQxMyw3IEBAIEVORAogICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIH0KIAorICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLy8v
IG1sYW0gR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrIDNcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9u
LCAkaW50ZXJmYWNlKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlv
bldpdGhNZXNzYWdlKSB7CkBAIC0zNjU1LDcgKzM2NzYsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlv
bkNhc3RlZFRoaXMKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShzdGF0ZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKHN0YXRlLCBOb3RTdHJpY3RNb2RlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTtcbiIpOwogICAgICAgICBteSAkY2FzdGluZ0hlbHBlciA9IEdldENhc3RpbmdIZWxw
ZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwpAQCAtMzY3MSw3ICszNjkyLDcgQEAgc3ViIEdl
bmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzCiAgICAgICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNlKTsK
ICAgICAgICAgbXkgJGRvbUZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkZG9t
RnVuY3Rpb25OYW1lXCIpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgXCIkdmlzaWJs
ZUludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAgfQogCiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKSB1bmxlc3MgJGludGVyZmFjZS0+bmFt
ZSBlcSAiRXZlbnRUYXJnZXQiOwpAQCAtMzczOSw3ICszNzYwLDcgQEAgc3ViIEdlbmVyYXRlQXJn
dW1lbnRzQ291bnRDaGVjawogICAgIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1zID49IDEpCiAgICAg
ewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAkbnVtTWFuZGF0b3J5UGFyYW1zKSlcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpO1xuIik7CiAgICAgfQogfQog
CkBAIC0zODYxLDcgKzM4ODIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4
KS5pc09iamVjdCgpKVxuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2li
bGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgs
IFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFt
ZSk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAg
ICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2FsbGJhY2tGdW5jdGlvbi5oIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUg
PSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4oc3RhdGUs
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpKTtcbiIpOwpAQCAtMzg3
NSw3ICszODk2LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4KS5pc09iamVjdCgp
KSlcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigq
c3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1l
XCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IodGhyb3dTY29wZSwgKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNp
YmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOwogICAgICAgICAg
ICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9uLmgiKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSBjcmVhdGVGdW5jdGlvbk9u
bHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4oc3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpKTtcbiIpOwpAQCAtMzg5Myw3ICszOTE0LDcgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGZvciAodW5zaWduZWQgaSA9ICRhcmd1bWVudEluZGV4LCBjb3VudCA9IHN0YXRl
LT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7XG4iKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8qIGl0ZW0gPSBKUyR7dHlwZX06OnRv
V3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWl0ZW0pXG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIGksIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5h
bWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgaSwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50
ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZS51bmNoZWNrZWRB
cHBlbmQoaXRlbSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgfVxuIikKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zOTM2LDcgKzM5NTcsNyBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiRpbmRlbnQgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiRpbmRlbnQgICAgaWYgKFVOTElLRUxZKCEkb3B0aW9uYWxWYWx1ZSkpXG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5h
bWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlczwkY2xhc3NOYW1lPigpKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRN
dXN0QmVFbnVtRXJyb3IodGhyb3dTY29wZSwgKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFt
ZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPCRjbGFzc05hbWU+KCkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICRuYW1lID0gb3B0aW9uYWxWYWx1ZS52YWx1
ZSgpO1xuIikgaWYgJG9wdGlvbmFsVmFsdWUgbmUgJG5hbWU7CiAKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKSBpZiAkaW5kZW50IG5lICIiOwpAQCAtMzk2MCw3ICsz
OTgxLDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoVU5MSUtFTFkoISRuYW1lKSlcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwg
XCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwi
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgJGFyZ3Vt
ZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1
bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgk
bmFtZSkiOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQwMDYsNyArNDAyNyw3IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJl
ZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
VU5MSUtFTFkoISRuYW1lKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkYXJndW1l
bnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVu
Y3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcih0aHJvd1Njb3Bl
LCAqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKICAgICAgICAgICAg
ICAgICAkdmFsdWUgPSAkaXNUZWFyT2ZmID8gIiRuYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIiA6
ICIqJG5hbWUiOwogICAgICAgICAgICAgfQogCkBAIC00MjEyLDYgKzQyMzMsNyBAQCBzdWIgR2Vu
ZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAKICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29tcGlsZVRpbWVDaGVja0ZvckVudW1zSWZOZWVkZWQo
JGludGVyZmFjZSkpOwogCisgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIvLyBtbGFtIEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyAyXG4iKTsKICAgICAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICR2aXNpYmxlSW50
ZXJmYWNlTmFtZSwgJGludGVyZmFjZSk7CiAKICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpT
VmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKQEAgLTUxODIsMTMgKzUyMDQsMTUgQEAgc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksIDw8RU5EKTsKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7IC8vIG1sYW0gNwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX0qPihzdGF0ZS0+Y2FsbGVlKCkpOwogCiAgICAgaWYgKCFqc0NvbnN0
cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKHN0YXRlLCAiQ29uc3RydWN0b3IgYXNz
b2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Io
c3RhdGUsICJDb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZh
aWxhYmxlIikpOwogCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Nj
b3BlLCBzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKIAogICAg
IEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3Rh
dGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCkBAIC01MjY1LDEyICs1Mjg5LDE2IEBAIEVORAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOyAvLyBtbGFtIDhcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX0qPihzdGF0ZS0+Y2FsbGVlKCkpO1xuIik7CiAKICAgICAgICAgICAgIG15IEBjb25z
dHJ1Y3RvckFyZ0xpc3Q7CiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vy
cm9yLmg+In0gPSAxOwogCisgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8v
LyBtbGFtIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayA0XG4iKTsKICAgICAgICAgICAgIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVy
ZmFjZSk7CiAKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJhaXNlc0V4Y2VwdGlvbiJ9IHx8ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UifSB8fCAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24i
fSkgewpAQCAtNTI5MywxNCArNTMyMSwxNCBAQCBFTkQKICAgICAgICAgICAgICAgICBwdXNoKEBj
b25zdHJ1Y3RvckFyZ0xpc3QsICIqY29udGV4dCIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVk
VGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpXG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0
cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgXCIke3Zpc2libGVJbnRlcmZh
Y2VOYW1lfVwiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IodGhy
b3dTY29wZSwgKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xuIik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmli
dXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9y
Q2FsbFdpdGgifSwgIkRvY3VtZW50IikpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJEb2N1bWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJn
TGlzdCwgImRvY3VtZW50Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVu
dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
dGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcih0aHJvd1Njb3BlLCAqc3Rh
dGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7XG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpO1xuIik7CiAgICAgICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
OCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQgUnVudGltZUFycmF5OjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkp
OwogfQogCkBAIC0xMTMsOSArMTE2LDEyIEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUkKIAogYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3Ii
KSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC0xMjcsOSArMTMzLDEyIEBAIGJvb2wgUnVudGltZUFycmF5OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGUKIAogYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGlt
ZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2
LDkgKzU2LDEyIEBAIHZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKIAog
RW5jb2RlZEpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRpbWVNZXRo
b2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih0aGlzT2JqZWN0LT5tX21ldGhvZC0+bnVtUGFyYW1ldGVycygpKSk7CiB9
CiAKQEAgLTc1LDYgKzc4LDkgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIG1l
dGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7CiAKICAg
ICBpZiAoIW1ldGhvZC0+bWV0aG9kKCkpCkBAIC04NywxMyArOTMsMTMgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgICAgICBSdW50aW1lT2JqZWN0KiBydW50
aW1lT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2JqZWN0KHRoaXNWYWx1
ZSkpOwogICAgICAgICBpbnN0YW5jZSA9IHJ1bnRpbWVPYmplY3QtPmdldEludGVybmFsSW5zdGFu
Y2UoKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZSkgCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCiAgICAg
ICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4o
YXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAgIGlmICghaW5zdGFuY2Up
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIH0KICAgICBB
U1NFUlQoaW5zdGFuY2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQs
MTEgKzY0LDE0IEBAIHZvaWQgUnVudGltZU9iamVjdDo6aW52YWxpZGF0ZSgpCiAKIEVuY29kZWRK
U1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PFJ1bnRpbWVP
YmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNl
PiBpbnN0YW5jZSA9IHRoaXNPYmotPm1faW5zdGFuY2U7CiAKICAgICBpZiAoIWluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NF
cnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAK
QEAgLTgyLDExICs4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFj
a09iCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogeyAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9IGpzQ2Fz
dDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJlZlB0
cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwogCiAgICAgaWYgKCFp
bnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIAogICAgIGluc3RhbmNlLT5i
ZWdpbigpOwogCkBAIC0xMDEsMTEgKzEwNywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2Jq
ZWN0OjpmaWVsZEdldHRlCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09i
aiA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwogCiAg
ICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIAogICAgIGlu
c3RhbmNlLT5iZWdpbigpOwogCkBAIC0xMTgsOSArMTI3LDEyIEBAIEVuY29kZWRKU1ZhbHVlIFJ1
bnRpbWVPYmplY3Q6Om1ldGhvZEdldHQKIAogYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFJ1bnRp
bWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVjdCk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE2Myw5
ICsxNzUsMTIgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogCiBi
b29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2Up
IHsKLSAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIApAQCAtMTkyLDkgKzIwNywxMiBAQCBib29sIFJ1bnRpbWVPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsCiAKIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZGVmYXVsdFZh
bHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBjb25zdCBSdW50aW1lT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlm
ICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3Io
dGhyb3dTY29wZSwgZXhlYyk7CiAgICAgCiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9
IHRoaXNPYmplY3QtPm1faW5zdGFuY2U7CiAKQEAgLTI1OCw5ICsyNzYsMTIgQEAgQ29uc3RydWN0
VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1YwogCiB2b2lkIFJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3Qq
PihvYmplY3QpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkgewotICAgICAgICB0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
MSw5ICsyOTIsOSBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAg
ICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIFJ1bnRpbWVPYmpl
Y3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVHJ5aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJv
bSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mg
b2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogCiAgICAgSW5zdGFuY2UqIGdldEludGVybmFsSW5zdGFuY2UoKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgSlNPYmplY3Qq
IHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU09iamVj
dCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSopOwogCiAg
ICAgREVDTEFSRV9JTkZPOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0
YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsMTIgKzY4LDE1IEBAIHZv
aWQgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW4KIAogdm9pZCBDSW5zdGFuY2U6
Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIGlmIChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9i
YWxFeGNlcHRpb25TdHJpbmcoKSkpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAg
fQogCiAgICAgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKQEAgLTE1NCw4ICsx
NTcsMTEgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIAogCiBKU1Zh
bHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhv
ZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1l
TWV0aG9kKS0+aW5oZXJpdHMoQ1J1bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0
aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBv
biBwbHVnLWluIG9iamVjdC4iKTsKIAogICAgIENNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0
PENNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhvZCk7
CkBAIC0xODQsNyArMTkwLDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVj
U3RhdAogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2Fs
bGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxp
bmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7
IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZjQXJnc1tpXSk7CkBAIC0x
OTcsNiArMjAzLDkgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdAog
CiBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIGlmICghX29iamVjdC0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMjE5LDcgKzIyOCw3IEBAIEpTVmFs
dWUgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEUKICAgICB9CiAKICAgICBpZiAoIXJl
dHZhbCkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIp
KSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkp
OwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFz
ZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMjM2LDYgKzI0NSw5IEBAIGJvb2wgQ0luc3Rh
bmNlOjpzdXBwb3J0c0NvbnN0cnVjdCgpIGNvbnMKIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9r
ZUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIGlmICghX29iamVjdC0+X2NsYXNzLT5jb25zdHJ1Y3QpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNTgsNyArMjcwLDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6
Omludm9rZUNvbnN0cnVjdChFeGVjUwogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAgICAg
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICBmb3Ig
KGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVl
KCZjQXJnc1tpXSk7CkBAIC0zMTEsNiArMzIzLDkgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6OnZhbHVl
T2YoRXhlY1N0YXRlKiBleAogCiBib29sIENJbnN0YW5jZTo6dG9KU1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IGNoYXIqIG5hbWUsIEpTVmFsdWUmIHJlc3VsdFZhbHVlKSBjb25zdAog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIobmFtZSk7CiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmhhc01ldGhvZChfb2JqZWN0
LCBpZGVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyOCw3ICszNDMsNyBAQCBib29s
IENJbnN0YW5jZTo6dG9KU1ByaW1pdGl2ZShFeGVjU3RhdGUqCiAgICAgfQogCiAgICAgaWYgKCFy
ZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4i
KSkpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikp
KTsKIAogICAgIHJlc3VsdFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUoZXhlYywgJnJl
c3VsdFZhcmlhbnQsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgX05QTl9SZWxlYXNlVmFyaWFu
dFZhbHVlKCZyZXN1bHRWYXJpYW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDksIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4
LTIwMDksIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSw2ICs3OSw5IEBAIHZvaWQgT2JqY0luc3Rh
bmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oTlMKIAogdm9pZCBPYmpjSW5zdGFuY2U6Om1vdmVHbG9i
YWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmICghc19leGNlcHRpb24pIHsKICAgICAgICAgQVNTRVJUKCFzX2V4Y2VwdGlvbkVudmlyb25t
ZW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODYsNyArODksNyBAQCB2b2lkIE9iamNJbnN0YW5j
ZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvCiAKICAgICBpZiAoIXNfZXhjZXB0aW9uRW52aXJvbm1l
bnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCkpIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHRocm93RXJy
b3IoZXhlYywgc19leGNlcHRpb24pOworICAgICAgICB0aHJvd0Vycm9yKHRocm93U2NvcGUsIGV4
ZWMsIHNfZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBbc19leGNlcHRpb24gcmVsZWFzZV07CkBA
IC0yMDUsOCArMjA4LDExIEBAIEpTQzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChF
eGUKIAogSlNDOjpKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cyhPYmpDUnVudGltZU1ldGhv
ZDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2Jq
ZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBs
dWctaW4gb2JqZWN0LiIpKTsKIAogICAgIE9iamNNZXRob2QgKm1ldGhvZCA9IHN0YXRpY19jYXN0
PE9iamNNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhv
ZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk0LDYgKzk0LDkg
QEAgT2JqY0ZpZWxkOjpPYmpjRmllbGQoQ0ZTdHJpbmdSZWYgbmFtZSkKIAogSlNWYWx1ZSBPYmpj
RmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2Uq
IGluc3RhbmNlKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0
IE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwpAQCAtMTA5LDcgKzExMiw3
IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUKICAgICAgICAgfQog
ICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNl
cHRpb24gcmVhc29uXSk7CisgICAgICAgIHRocm93RXJyb3IodGhyb3dTY29wZSwgZXhlYywgW2xv
Y2FsRXhjZXB0aW9uIHJlYXNvbl0pOwogICAgIH0KIAogICAgIC8vIFdvcmsgYXJvdW5kIHByb2Js
ZW0gaW4gc29tZSB2ZXJzaW9ucyBvZiBHQ0Mgd2hlcmUgcmVzdWx0IGdldHMgbWFya2VkIHZvbGF0
aWxlIGFuZApAQCAtMTI3LDYgKzEzMCw5IEBAIHN0YXRpYyBpZCBjb252ZXJ0VmFsdWVUb09iamNP
YmplY3QoRXhlY1MKIAogYm9vbCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0
CiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNv
bnN0IE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwogICAgIGlkIHZhbHVl
ID0gY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KGV4ZWMsIGFWYWx1ZSk7CiAKQEAgLTE0MSw3ICsx
NDcsNyBAQCBib29sIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikg
ewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CisgICAgICAgIHRocm93RXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgW2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0pOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogfQpAQCAtMTU2LDEzICsxNjIsMTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXko
T2JqZWN0U3RydWN0UHRyIGEsIAogCiBib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7Cisg
ICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgaWYgKCFbX2FycmF5LmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaW5zZXJ0T2JqZWN0OmF0SW5kZXg6KV0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgaXMg
bm90IG11dGFibGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KGluZGV4ID4gW19hcnJheS5nZXQoKSBjb3VudF0pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFy
cmF5IHNpemUuIikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xNzQsMjEgKzE4MywyNCBAQCBib29s
IE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4CiAgICAgICAgIFtfYXJyYXkuZ2V0
KCkgaW5zZXJ0T2JqZWN0Om9WYWx1ZS5vYmplY3RWYWx1ZSBhdEluZGV4OmluZGV4XTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9u
KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlv
bi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKIEpTVmFsdWUgT2JqY0Fy
cmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdAog
eworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChpbmRleCA+IFtfYXJyYXkuZ2V0KCkgY291bnRdKQot
ICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
ICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgIEB0cnkgewogICAgICAgICBpZCBv
YmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAob2Jq
KQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlIChleGVjLCAmb2Jq
LCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4
Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlv
bi4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRpb24uIikpOwogICAgIH0KICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTIzMiw5ICsyNDQsMTIgQEAgYm9vbCBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKE9iakNSdW50aW1lT2JqZWN0OjppbmZvKCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzVW5kZWZpbmVkKCk7CiAKQEAgLTI0Miw3ICsyNTcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgT2JqY0luc3RhbmNlKiBvYmpjSW5zdGFuY2UgPSBy
dW50aW1lT2JqZWN0LT5nZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpOwogCiAgICAgaWYgKCFvYmpj
SW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6
dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUs
IGV4ZWMpKTsKICAgICAKICAgICBvYmpjSW5zdGFuY2UtPmJlZ2luKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNyBAQCBKU1ZhbHVlIGNvbnZlcnROU1N0cmluZ1RvU3RyaW5nKEV4ZWNT
dGF0CiBKU1ZhbHVlIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKEV4ZWNTdGF0ZSosIHZvaWQqIGJ1
ZmZlciwgT2JqY1ZhbHVlVHlwZSwgUm9vdE9iamVjdCopOwogT2JqY1ZhbHVlVHlwZSBvYmpjVmFs
dWVUeXBlRm9yVHlwZShjb25zdCBjaGFyICp0eXBlKTsKIAotSlNPYmplY3QgKnRocm93RXJyb3Io
RXhlY1N0YXRlICosIE5TU3RyaW5nICptZXNzYWdlKTsKK0pTT2JqZWN0ICp0aHJvd0Vycm9yKFRo
cm93U2NvcGUmLCBFeGVjU3RhdGUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpOwogCiB9IC8vIG5hbWVz
cGFjZSBCaW5kaW5ncwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzEwLDEwICszMTAsMTAgQEAgT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlRm9y
VHlwZShjb25zdAogICAgIHJldHVybiBvYmpjVmFsdWVUeXBlOwogfQogCi1KU09iamVjdCAqdGhy
b3dFcnJvcihFeGVjU3RhdGUgKmV4ZWMsIE5TU3RyaW5nICptZXNzYWdlKQorSlNPYmplY3QgKnRo
cm93RXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlICpleGVjLCBOU1N0cmlu
ZyAqbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobWVzc2FnZSk7Ci0gICAgSlNPYmplY3QgKmVycm9y
ID0gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBKU0M6OmNyZWF0ZUVycm9yKGV4ZWMs
IFN0cmluZyhtZXNzYWdlKSkpOworICAgIEpTT2JqZWN0ICplcnJvciA9IHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgSlNDOjpjcmVhdGVFcnJvcihleGVjLCBTdHJpbmcobWVzc2FnZSkp
KTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QTWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNiArNTksOSBAQCB2b2lkIEpTTlBN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVjLT5jYWxs
ZWUoKSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpAQCAt
NzgsNyArODEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhvZChleGVj
LCBqc05QTWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogfQogCiBDYWxsVHlwZSBKU05QTWV0aG9kOjpnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYgY2FsbERhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShyZXZpc2lvbiAy
MDQ4NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw5ICsxMDgsMTIgQEAgTlBPYmplY3Qq
IEpTTlBPYmplY3Q6OmxlYWtOUE9iamVjdCgpCiAKIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMsIE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBBU1NFUlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAo
IW1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUsIGV4
ZWMpOwogCiAgICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFt
ZXRob2ROYW1lKQpAQCAtMTQzLDcgKzE0Niw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1l
dGhvZChFeGVjU3RhdGUKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNb
aV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24g
TlBPYmplY3QuIikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CiAK
ICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBtX29iamVjdE1hcC0+Y29udmVydE5QVmFyaWFu
dFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0KTsKICAgICByZWxlYXNlTlBW
YXJpYW50VmFsdWUoJnJlc3VsdCk7CkBAIC0xNTIsOSArMTU1LDEyIEBAIEpTVmFsdWUgSlNOUE9i
amVjdDo6Y2FsbE1ldGhvZChFeGVjU3RhdGUKIAogSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNh
bGxPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEFTU0VSVF9U
SElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBzaXpl
X3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBWZWN0b3I8TlBW
YXJpYW50LCA4PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0xODMsNyArMTg5LDcgQEAg
SlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogICAgICAgICByZWxlYXNl
TlBWYXJpYW50VmFsdWUoJmFyZ3VtZW50c1tpXSk7CiAKICAgICBpZiAoIXJldHVyblZhbHVlKQot
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CisgICAgICAgIHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcg
bWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1f
b2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE5Miw5
ICsxOTgsMTIgQEAgSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogCiBK
U1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAg
IGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29w
ZSwgZXhlYyk7CiAKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsKICAgICBWZWN0b3I8TlBWYXJpYW50LCA4PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7
CkBAIC0yMTksNyArMjI4LDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsQ29uc3RydWN0b3Io
RXhlYwogICAgIH0KIAogICAgIGlmICghcmV0dXJuVmFsdWUpCi0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0
aG9kIG9uIE5QT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3Qu
IikpOwogICAgIAogICAgIEpTVmFsdWUgdmFsdWUgPSBtX29iamVjdE1hcC0+Y29udmVydE5QVmFy
aWFudFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0KTsKICAgICByZWxlYXNl
TlBWYXJpYW50VmFsdWUoJnJlc3VsdCk7CkBAIC0yNjYsMTAgKzI3NSwxMyBAQCBDb25zdHJ1Y3RU
eXBlIEpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhCiAKIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBK
U05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IGlmICghdGhpc09iamVjdC0+bV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29w
ZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0zMDAsMTAg
KzMxMiwxMyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iCiAKIGJv
b2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9i
amVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QpIHsKLSAgICAgICAgdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0zNTQsNiArMzY5LDkgQEAgYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SgogCiBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgTlBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQVNTRVJUX1RISVNfR0Nf
T0JKRUNUX0lOSEVSSVRTKGluZm8oKSk7CiAKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlz
IHN5bWJvbC4KQEAgLTM2MSw3ICszNzksNyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEV4ZWNTdGF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9ucE9iamVj
dCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTM5MCwxMCArNDA4LDEzIEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXQKIAogdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
TlBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICgh
dGhpc09iamVjdC0+bV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzOCwxMSArNDU5LDE0IEBAIHZvaWQg
SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU08KIAogRW5jb2RlZEpTVmFsdWUgSlNO
UE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
TlBPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmosIGluZm8o
KSk7CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqLT5tX25wT2JqZWN0KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcih0aHJvd1Njb3Bl
LCBleGVjKSk7CiAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBPYmplY3QtPl9jbGFzcy0+Z2V0UHJv
cGVydHkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC00NzgsMjMgKzUwMiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU05QT2JqZWN0Ojpwcm9wZXJ0eUdl
dHRlCiAKIEVuY29kZWRKU1ZhbHVlIEpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU05QT2Jq
ZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iaiwgaW5mbygpKTsKICAgICAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBP
YmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpKTsKIAogICAgIE5QSWRlbnRpZmllciBucElk
ZW50aWZpZXIgPSBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpOwogICAg
IC8vIElmIHRoZSBwcm9wZXJ0eU5hbWUgaXMgc3ltYm9sLgogICAgIGlmICghbnBJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTTlBNZXRob2Q6OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSwgbnBJZGVudGlmaWVyKSk7CiB9CiAKLUpTT2JqZWN0KiBKU05Q
T2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVj
dCogSlNOUE9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNz
IG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKKyAgICByZXR1cm4gdGhyb3dTY29w
ZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVHJ5aW5n
IHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhl
Y1N0YXRlKik7CiAKICAgICBOUFJ1bnRpbWVPYmplY3RNYXAqIG1fb2JqZWN0TWFwOwogICAgIE5Q
T2JqZWN0KiBtX25wT2JqZWN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5j
cHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzQsMTIg
KzI3NCwxNSBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6c2V0R2xvYmFsRXhjZXB0CiAgICAg
CiB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0
cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAg
IH0KICAgICAKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MzIsMTIgKzE2MzIsMTUgQEAgdm9p
ZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnNldEdsbwogCiB2b2lkIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0cmluZygpLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KIAogICAg
IGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDIw
NDg3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDggKzIxOSwxMSBAQCBKU1Zh
bHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4CiAKIEpTVmFsdWUgUHJveHlJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBy
dW50aW1lTWV0aG9kKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRo
b2QpLT5pbmhlcml0cyhQcm94eVJ1bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tlIG5v
bi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8g
aW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CiAKICAgICBQ
cm94eU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UHJveHlNZXRob2QqPihydW50aW1lTWV0
aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhvZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>287336</attachid>
            <date>2016-08-29 15:18:23 -0700</date>
            <delta_ts>2016-08-29 15:18:23 -0700</delta_ts>
            <desc>x86_64 benchmark result run 1</desc>
            <filename>bench-result-x86_64-1.txt</filename>
            <type>text/plain</type>
            <size>86567</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCAxNSAmJiB0aW1lIC4vVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MgLS1v
dXRlciAxMCBiYXNlOi9Wb2x1bWVzL0RhdGEvd3Mtb2xkL09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQv
UmVsZWFzZS9EdW1wUmVuZGVyVHJlZSBuZXc6L1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9X
ZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5kZXJUcmVlCjEzNDkyLzEzNDkyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKR2VuZXJhdGluZyBiZW5jaG1hcmsgcmVwb3J0IGF0IC9W
b2x1bWVzL0RhdGEvd3M2L0ludGVybmFsL2Jhc2VfbmV3X1N1blNwaWRlckxvbmdTcGlkZXJWOFNw
aWRlck9jdGFuZUtyYWtlbkpTQmVuY2hNaWNyb2JlbmNobWFya3NBc21CZW5jaERTUENvbXByZXNz
aW9uQmVuY2hfZGV1Y2FsaW9uXzIwMTYwODI5XzExMDNfcmVwb3J0LnR4dApBbmQgcmF3IGRhdGEg
YXQgL1ZvbHVtZXMvRGF0YS93czYvSW50ZXJuYWwvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRl
clY4U3BpZGVyT2N0YW5lS3Jha2VuSlNCZW5jaE1pY3JvYmVuY2htYXJrc0FzbUJlbmNoRFNQQ29t
cHJlc3Npb25CZW5jaF9kZXVjYWxpb25fMjAxNjA4MjlfMTEwMy5qc29uCgpCZW5jaG1hcmsgcmVw
b3J0IGZvciBTdW5TcGlkZXIsIExvbmdTcGlkZXIsIFY4U3BpZGVyLCBPY3RhbmUsIEtyYWtlbiwg
SlNCZW5jaCwgTWljcm9iZW5jaG1hcmtzLCBBc21CZW5jaCwgRFNQLCBhbmQgQ29tcHJlc3Npb25C
ZW5jaCBvbiBkZXVjYWxpb24gKE1hY1BybzYsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1Zv
bHVtZXMvRGF0YS93cy1vbGQvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5k
ZXJUcmVlIChyMjA1MTAzKQoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVuU291cmNlL1dl
YktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUgKHIyMDUxMDMpCgpDb2xsZWN0ZWQgMTAg
c2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDEwIFZNIGludm9jYXRpb25zIHBlciBiZW5j
aG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRz
LgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11
cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1p
Y3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGlt
ZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
ICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjM4MDgrLTAuMTQ5NiAgICAgPyAgICAgIDYuNTM0MistMC4xMjU2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0MHggc2xvd2VyCiAgIDNkLW1vcnBoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTQyMistMC4wNzU1ICAgICA/ICAgICAg
Ni41NTY0Ky0wLjA4MjggICAgICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy4xMjM0Ky0wLjI5NTAgICAgICAgICAgICA3LjA1MDgrLTAu
MTc5MyAgICAgICAgICBtaWdodCBiZSAxLjAxMDN4IGZhc3RlcgogICBhY2Nlc3MtYmluYXJ5LXRy
ZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM3MzkrLTAuMTAyOCAgICAgICAg
ICAgIDMuMzExMystMC4wMzgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4OXggZmFzdGVyCiAgIGFj
Y2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTc4MCst
MC4xMTAzICAgICAgICAgICAgNi45Mjg5Ky0wLjA2MDUgICAgICAgIAogICBhY2Nlc3MtbmJvZHkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjIxODMrLTAuMDM3MiAgICAg
PyAgICAgIDMuMjMwOSstMC4wNjAxICAgICAgICA/CiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzc3MCstMC4wODgyICAgICAgICAgICAgNC4z
NDQ2Ky0wLjA5MjMgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjI4NDErLTAuMDcwMSAgICAgPyAgICAgIDEuMzQzMystMC4xMTEy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2MXggc2xvd2VyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTg0NSstMC4wMzc2ICAgICAgICAgICAg
Mi45NzI1Ky0wLjA1MTcgICAgICAgIAogICBiaXRvcHMtYml0d2lzZS1hbmQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjMwMDkrLTAuMDY1OSAgICAgICAgICAgIDIuMjY2OSstMC4w
NDUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1MHggZmFzdGVyCiAgIGJpdG9wcy1uc2lldmUtYml0
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzE3NystMC4wNzIxICAgICAgICAg
ICAgMy42NjY3Ky0wLjA0NTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTM5eCBmYXN0ZXIKICAgY29u
dHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45MjYwKy0w
LjA2ODcgICAgICAgICAgICAyLjg4OTYrLTAuMDM2NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjZ4
IGZhc3RlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1Ljg1MTYrLTAuMTMxMiAgICAgICAgICAgIDUuNzczNistMC4xMDUxICAgICAgICAgIG1p
Z2h0IGJlIDEuMDEzNXggZmFzdGVyCiAgIGNyeXB0by1tZDUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMDI4OSstMC4wMzcxICAgICAhICAgICAgMy4xNzEzKy0wLjA5
MTIgICAgICAgICEgZGVmaW5pdGVseSAxLjA0NzB4IHNsb3dlcgogICBjcnlwdG8tc2hhMSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk2ODcrLTAuMDc5NCAgICAgPyAg
ICAgIDIuOTkwMistMC4wMzA2ICAgICAgICA/CiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTMuMTA1MSstMC4yNzgxICAgICA/ICAgICAxMy40Mzc5
Ky0wLjM1MDggICAgICAgID8gbWlnaHQgYmUgMS4wMjU0eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQt
eHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy43NTAwKy0wLjE2OTQgICAg
ID8gICAgICA3LjkyNDkrLTAuMTI5MCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjZ4IHNsb3dlcgog
ICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM1
NzMrLTAuMDc4MCAgICAgICAgICAgIDMuMzEzNystMC4wNzU2ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEzMnggZmFzdGVyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUuMzU0OSstMC4wNzg3ICAgICAgICAgICAgNS4zNTE0Ky0wLjEzNjggICAgICAg
IAogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjM2NzQrLTAuMDU3NiAgICAgICAgICAgIDIuMzU0MistMC4wNDM3ICAgICAgICAKICAgcmVnZXhw
LWRuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS40MTU1Ky0wLjIw
NjQgICAgICAgICAgICA5LjQxMjcrLTAuMTQ1MiAgICAgICAgCiAgIHN0cmluZy1iYXNlNjQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMDA5MystMC4xNjY2ICAgICAgICAg
ICAgNi45ODE2Ky0wLjE3MTEgICAgICAgIAogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjgwNjUrLTAuMTgxMCAgICAgPyAgICAgIDcuOTQ5Mist
MC4yNzk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4M3ggc2xvd2VyCiAgIHN0cmluZy10YWdjbG91
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNjE4NCstMC4yMDMxICAgICA/
ICAgICAxMS44NDQ2Ky0wLjIwNzcgICAgICAgID8gbWlnaHQgYmUgMS4wMTk1eCBzbG93ZXIKICAg
c3RyaW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS4xMDA5
Ky0wLjQzMDcgICAgID8gICAgIDI1LjUzOTgrLTAuMjgwNCAgICAgICAgPyBtaWdodCBiZSAxLjAx
NzV4IHNsb3dlcgogICBzdHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjE3OTYrLTAuMTE5NyAgICAgPyAgICAgIDcuMjczNistMC4xNDYyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEzMXggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjI3MzkrLTAuMDUwNiAgICAgPyAgICAgIDYuMzIzNist
MC4wMjkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDA3OXggc2xvd2VyCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAg
ICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApM
b25nU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMDk0LjcwODcrLTE0LjY1NDcgICAgPyAgIDExMDguODcwMSstMzEuNTYyOCAgICAgICA/
IG1pZ2h0IGJlIDEuMDEyOXggc2xvd2VyCiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3MTguODUxMystNS44MzUyICAgICA/ICAgIDcyMy4wNjMwKy00
Ljk1MTIgICAgICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYxNi45MDE5Ky04LjI1MjMgICAgID8gICAgNjE5Ljk1NzgrLTYuNjc4MCAgICAg
ICAgPwogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MDM1LjgxMDUrLTcuNTcwMSAgICAgICAgIDEwMzIuODY0NCstOS43MzIxICAgICAgICAKICAgYWNj
ZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxMS40NDA1Ky01
LjY3NzggICAgID8gICAgMzIyLjEzNTQrLTEwLjg1ODIgICAgICAgPyBtaWdodCBiZSAxLjAzNDN4
IHNsb3dlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjI4LjczMDArLTQuODQ5MiAgICAgPyAgICA2MzYuNjQxNCstMTUuMjQyOCAgICAgICA/IG1p
Z2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzODIuMzEyMCstMi40ODQ5ICAgICAgICAgIDM4Mi4yOTM3Ky00LjI5
MDQgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM3LjI3NTIrLTAuNDg0NSAgICAgICAgICAgMzcuMjM1NystMC4yNjA4ICAgICAgICAK
ICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MS40
OTAyKy0xLjUwMDkgICAgICAgICAgMTQwLjA5NDArLTAuOTQwNSAgICAgICAgCiAgIGJpdG9wcy1u
c2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NDUuODkwMCstMi43MDA2
ICAgICA/ICAgIDQ0Ni4xMjE5Ky02LjEwNzIgICAgICAgID8KICAgY29udHJvbGZsb3ctcmVjdXJz
aXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0OC4zOTE4Ky05Ljg5OTEgICAgID8gICAg
NTQ4LjgzODcrLTQuMzY4MiAgICAgICAgPwogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNzI2LjUwOTQrLTYuNjU0OCAgICAgPyAgICA3MzQuOTc0Myst
NS40MjMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExN3ggc2xvd2VyCiAgIGNyeXB0by1tZDUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ODMuMTI1OSstNS43MjIzICAgICAg
ICAgIDU3Mi4yNjc5Ky03LjM5MjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTkweCBmYXN0ZXIKICAg
Y3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2NS42NTg3
Ky01LjU4MDEgICAgID8gICAgNzczLjUwMDArLTkuMDAyOSAgICAgICAgPyBtaWdodCBiZSAxLjAx
MDJ4IHNsb3dlcgogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTI1LjQzMzQrLTEwLjAwNDIgICAgPyAgICA1MzQuMzMwNSstMTUuNjU2MyAgICAgICA/
IG1pZ2h0IGJlIDEuMDE2OXggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3NjYuNDk4NistMTcuNDQ4OSAgICAgICAgIDc1NS44MDkzKy01
LjQzODAgICAgICAgICAgbWlnaHQgYmUgMS4wMTQxeCBmYXN0ZXIKICAgaGFzaC1tYXAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4Mi43Mzk5Ky0zLjA1MTAgICAgICAg
ICAgMTgxLjcwMTIrLTIuMzIwNSAgICAgICAgCiAgIG1hdGgtY29yZGljICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1NjkuOTgzOSstMTIuMDg5OSAgICA/ICAgIDU3MS45MzM5
Ky05LjUxNzkgICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQwNC45MTg0Ky02LjM2OTggICAgID8gICAgNDA3LjMwNDIrLTcuNjY1MiAg
ICAgICAgPwogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTk0LjU4ODArLTQuNjY4NSAgICAgPyAgICA2MDEuNzgyNSstOC45ODE0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEyMXggc2xvd2VyCiAgIHN0cmluZy1iYXNlNjQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0OTYuMjY5OCstMy43NjQ2ICAgICA/ICAgIDQ5OS4wODExKy0zLjIw
MTggICAgICAgID8KICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQxNS4wMDA5Ky00LjA1NTAgICAgID8gICAgNDI1LjAwOTMrLTguOTc1OSAgICAgICAg
PyBtaWdodCBiZSAxLjAyNDF4IHNsb3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjA4LjY1NjIrLTIuMTYxMiAgICAgPyAgICAyMTEuNzA4NSst
Mi4xNjE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0Nnggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQxLjQ5MzgrLTEuMjQ5NCAgICAg
PyAgICA0NDMuODIzOCstMS44NTc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDA1M3ggc2xvd2VyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApWOFNwaWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0NS4xOTE0Ky0wLjYyMDIgICAgID8gICAgIDQ1LjIyMTkrLTAu
NDQ4OCAgICAgICAgPwogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcyLjI0ODkrLTEuNDEzNSAgICAgPyAgICAgNzIuNjU1MistMi41MDQxICAgICAg
ICA/CiAgIGVhcmxleS1ib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDcuNzkwNSstMC45NDA5ICAgICAgICAgICA0Ny4xNDk2Ky0wLjkyMjUgICAgICAgICAgbWlnaHQg
YmUgMS4wMTM2eCBmYXN0ZXIKICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MC42MjU2Ky0wLjYxMjQgICAgICAgICAgIDUwLjMyMTMrLTAuOTYxOCAg
ICAgICAgCiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNzEuNDExOSstMC42NDYwICAgICAgICAgICA3MC43MDkzKy0wLjcyOTQgICAgICAgIAogICBy
aWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyLjkxODQr
LTEuMjM4NCAgICAgISAgICAgNTQuODk0NystMC43MTk2ICAgICAgICAhIGRlZmluaXRlbHkgMS4w
MzczeCBzbG93ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1Mi42NDY4Ky0wLjc3MDAgICAgID8gICAgIDUyLjc0NzkrLTAuMzY0NCAgICAgICAg
PwoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
NS4yNDE2Ky0wLjU0MTQgICAgID8gICAgIDU1LjM1ODArLTAuMzE5MyAgICAgICAgPyBtaWdodCBi
ZSAxLjAwMjF4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKT2N0YW5lOgogICBlbmNyeXB0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjAzOTkrLTAuMDAyMjQgICAg
ICAgICAgMC4yMDMzMistMC4wMDMwOSAgICAgICAKICAgZGVjcnlwdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ5ODIzKy0wLjA2NDg4ICAgICAgICAgIDMuNDk2
NjgrLTAuMDQyMzUgICAgICAgCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIgICAgICAgMC4xODA1NSstMC4wMDMzMiAgICA/ICAgICAwLjE4Mzc4Ky0wLjAxMDcw
ICAgICAgID8gbWlnaHQgYmUgMS4wMTc5eCBzbG93ZXIKICAgZWFybGV5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM4NDQ5Ky0wLjAwMzk2ICAgID8gICAgIDAu
Mzg3NDgrLTAuMDA1OTMgICAgICAgPwogICBib3llciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuMDk2NjArLTAuMTY5NTEgICAgICAgICAgNi4wMzU2NCstMC4w
Mzc5NiAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMXggZmFzdGVyCiAgIG5hdmllci1zdG9rZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgNS41ODgxMistMC4wNDUyMiAgICA/ICAg
ICA1LjU5OTg3Ky0wLjA3MDMzICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgICAxLjI0NjcwKy0wLjAzMjg0ICAgICAgICAgIDEuMjIxMjcr
LTAuMDIwMTggICAgICAgICBtaWdodCBiZSAxLjAyMDh4IGZhc3RlcgogICByaWNoYXJkcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMTA4OTIrLTAuMDAxNjEgICAg
PyAgICAgMC4xMDkxOSstMC4wMDI0MSAgICAgICA/CiAgIHNwbGF5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC40MDYwMSstMC4wMDUyNSAgICAgICAgICAwLjQw
NDIxKy0wLjAwNDk4ICAgICAgIAogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgyICAgICAgMjQuODcxMjQrLTAuMjAzMzQgICAgPyAgICAyNC45MzU2OSstMC4yNDE0
MSAgICAgICA/CiAgIHBkZmpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIg
ICAgICA0Ny45OTUzOSstMC40OTY2OCAgICA/ICAgIDQ4LjAzOTE1Ky0wLjUwNTcyICAgICAgID8K
ICAgbWFuZHJlZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDUxLjY1
OTYxKy0wLjM3MzcxICAgICAgICAgNTEuMDEwMjYrLTAuMjc3MzYgICAgICAgICBtaWdodCBiZSAx
LjAxMjd4IGZhc3RlcgogICBnYmVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyICAgICAgMzkuODk2MzcrLTAuNjA5NDEgICAgPyAgICA0MC4xNDY1NistMC42MjI4NSAgICAg
ICA/CiAgIGNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zODEyNystMC4wMDI5MSAgICA/ICAgICAwLjM4MzE4Ky0wLjAwNTExICAgICAgID8KICAganF1
ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk0NDYwKy0w
LjAzNTg0ICAgICAgICAgIDQuOTE0NjgrLTAuMDQwNTUgICAgICAgCiAgIGJveDJkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAxMS45ODM2OSstMC4xMzg5MyAgICAg
ICAgIDExLjkxNjY0Ky0wLjEwNDc2ICAgICAgIAogICB6bGliICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgyICAgICAzOTEuOTkwMTQrLTEyLjE4Mjk2ICAgPyAgIDM5NC40NTc4
MSstMTAuNTg1ODQgICAgICA/CiAgIHR5cGVzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIgICAgIDgyNC43MzU4NistMTEuMjAwNzkgICAgICAgODE2LjY2NjUzKy02Ljk5MzI5
ICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2LjI4Mjg5Ky0wLjAyMjQxICAgICAgICAgIDYuMjc0NDUrLTAuMDI2MjIgICAgICAgICBt
aWdodCBiZSAxLjAwMTN4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3Rh
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMS41MDMrLTEuMjA3
ICAgICAgPyAgICAgMTEzLjE0NistMS42MTEgICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0N3ggc2xv
d2VyCiAgIGF1ZGlvLWJlYXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDc0Ljk3NystMC44MzUgICAgICA/ICAgICAgNzUuNzczKy0xLjIzNCAgICAgICAgID8gbWlnaHQg
YmUgMS4wMTA2eCBzbG93ZXIKICAgYXVkaW8tZGZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMTQuODA5Ky0xLjMyNiAgICAgICAgICAgIDExMy44OTMrLTAuODM2ICAg
ICAgICAgCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUxLjMzMistMS40ODkgICAgICAgICAgICAgNTAuNzY5Ky0wLjY2MCAgICAgICAgICAgbWln
aHQgYmUgMS4wMTExeCBmYXN0ZXIKICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjcuNzc1Ky0wLjgzNSAgICAgID8gICAgICA2OC41NDgrLTAuNzY1
ICAgICAgICAgPyBtaWdodCBiZSAxLjAxMTR4IHNsb3dlcgogICBpbWFnaW5nLWRhcmtyb29tICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5My40MjIrLTMuNjU0ICAgICAgICAgICAg
IDkyLjI2MSstMS4yOTUgICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNnggZmFzdGVyCiAgIGltYWdp
bmctZGVzYXR1cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0LjM2NystMC42
NDIgICAgICA/ICAgICAgNjUuMjIxKy0wLjg0OSAgICAgICAgID8gbWlnaHQgYmUgMS4wMTMzeCBz
bG93ZXIKICAgaW1hZ2luZy1nYXVzc2lhbi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODUuNzQ0Ky01Ljg0OCAgICAgICAgICAgICA4NC40MzQrLTUuMzIwICAgICAgICAgICBtaWdo
dCBiZSAxLjAxNTV4IGZhc3RlcgogICBqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Ny4wODYrLTAuNDAzICAgICAgISAgICAgIDQ4LjM5OSstMC44NDMg
ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjc5eCBzbG93ZXIKICAganNvbi1zdHJpbmdpZnktdGlu
ZGVyYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuODc0Ky0wLjIxOCAgICAgID8gICAg
ICAzNS4wMjgrLTAuMzYxICAgICAgICAgPwogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1OC43OTErLTAuOTQ5ICAgICAgICAgICAgIDU4LjE3Mist
MC40MDIgICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwNnggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0
by1jY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LjA4NSstMS44NjMgICAgICA/
ICAgICAgNjkuMTEzKy0xLjIxOSAgICAgICAgID8gbWlnaHQgYmUgMS4wMzAyeCBzbG93ZXIKICAg
c3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTguMjMz
Ky0xLjU5OSAgICAgID8gICAgIDExOS4xMDQrLTAuODU1ICAgICAgICAgPwogICBzdGFuZm9yZC1j
cnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAgICAgICAgICA0OS4wMzgrLTAuNjM4ICAg
ICAgPyAgICAgIDQ5Ljc5NCstMS4xMDkgICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1NHggc2xvd2Vy
CgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
NC4yMTcrLTAuNTY2ICAgICAgPyAgICAgIDc0LjU0NystMC40MDMgICAgICAgICA/IG1pZ2h0IGJl
IDEuMDA0NHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApKU0JlbmNoOgogICBhbWF6b24tY2hyb21l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjE1NzYrLTAuMTQyOSAgICAg
ICAgICAgIDQuMDU5MCstMC4wNDU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0M3ggZmFzdGVyCiAg
IGFtYXpvbi1jaHJvbWUtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNDEz
MistMC4xMzAzICAgICA/ICAgICAgNC41MTIzKy0wLjExNzYgICAgICAgID8gbWlnaHQgYmUgMS4w
MjI1eCBzbG93ZXIKICAgYW1hem9uLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy40NDk2Ky0wLjE0MzEgICAgID8gICAgICAzLjQ1NzMrLTAuMDgyOSAgICAgICAg
PwogICBhbWF6b24tZmlyZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjIxMjkrLTAuMDkxNiAgICAgPyAgICAgIDMuMzM3NistMC4xNTUyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDM4OHggc2xvd2VyCiAgIGFtYXpvbi1zYWZhcmkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNzgxNistMC4xMzk2ICAgICA/ICAgICAgNC43OTQ3Ky0wLjEyODMgICAg
ICAgID8KICAgZmFjZWJvb2stY2hyb21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1My43NjAyKy0wLjg2ODQgICAgID8gICAgIDU0LjU5NDcrLTIuNTMwOCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxNTV4IHNsb3dlcgogICBmYWNlYm9vay1jaHJvbWUtd2luICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTEwLjg1MDcrLTAuOTA5NCAgICAgPyAgICAxMTEuMTA1MistMC45MjQy
ICAgICAgICA/CiAgIGZhY2Vib29rLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzEuNTE1OCstMC41ODU1ICAgICA/ICAgICAzMS44MzAxKy0wLjM5OTUgICAgICAgID8K
ICAgZmFjZWJvb2stZmlyZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC40
MDE5Ky0wLjQyNDUgICAgID8gICAgIDIwLjgzMDArLTAuMzQ2OSAgICAgICAgPyBtaWdodCBiZSAx
LjAyMTB4IHNsb3dlcgogICBmYWNlYm9vay1zYWZhcmkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTEyLjIxNDYrLTEuMTU0NiAgICAgPyAgICAxMTMuODgzMistMS42NTk5ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE0OXggc2xvd2VyCiAgIGdvb2dsZS1jaHJvbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDUuNjE4NCstMC44ODY2ICAgICA/ICAgICA0Ni41MTQ3
Ky0wLjgyMTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTk2eCBzbG93ZXIKICAgZ29vZ2xlLWNocm9t
ZS13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC42NDMxKy0wLjY1MTQgICAg
ICAgICAgIDQ0LjIxMDYrLTAuNTI4NSAgICAgICAgCiAgIGdvb2dsZS1maXJlZm94ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuOTE5NistMC40NzgwICAgICA/ICAgICAyMy4w
OTg3Ky0wLjUwNDIgICAgICAgID8KICAgZ29vZ2xlLWZpcmVmb3gtd2luICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNy4wNDM1Ky0wLjM1ODEgICAgID8gICAgIDI3LjMzNzIrLTAuNDY2
NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDl4IHNsb3dlcgogICBnb29nbGUtc2FmYXJpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LjE2OTYrLTAuNDA4OSAgICAgPyAgICAg
NDcuNjA0MystMS4xNjM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxMXggc2xvd2VyCiAgIHR3aXR0
ZXItY2hyb21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTA0MistMC4y
NDExICAgICAgICAgICAgNy44MTY1Ky0wLjE4NTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBm
YXN0ZXIKICAgdHdpdHRlci1jaHJvbWUtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNy42OTQzKy0wLjIxNzQgICAgID8gICAgICA3LjcyMTMrLTAuMjA1MSAgICAgICAgPwogICB0
d2l0dGVyLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE0Nzgr
LTAuMDQ3OCAgICAgPyAgICAgIDEuMTU5MSstMC4wNDc3ICAgICAgICA/CiAgIHR3aXR0ZXItZmly
ZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTA1NystMC4wNDI2ICAg
ICA/ICAgICAgMS4xMTAyKy0wLjAzNTEgICAgICAgID8KICAgdHdpdHRlci1zYWZhcmkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy40MzE2Ky0wLjI2MDUgICAgID8gICAgICA3
LjQzOTArLTAuMTE0NCAgICAgICAgPwogICB5YWhvby1jaHJvbWUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ1LjU4NjcrLTEuMTY1MiAgICAgICAgICAgNDUuNTc3OCstMC45
NjEyICAgICAgICAKICAgeWFob28tY2hyb21lLXdpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzOS43MzUxKy0wLjU0NDYgICAgID8gICAgIDQwLjUxODcrLTAuNTk1OCAgICAgICAg
PyBtaWdodCBiZSAxLjAxOTd4IHNsb3dlcgogICB5YWhvby1maXJlZm94ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQ1LjE5MDMrLTAuNzY1OCAgICAgPyAgICAgNDUuMjU1Mist
MC45ODAxICAgICAgICA/CiAgIHlhaG9vLWZpcmVmb3gtd2luICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzAuMzEyMCstMC4yODE4ICAgICA/ICAgICAzMS4wNjAyKy0wLjcxNTAgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjQ3eCBzbG93ZXIKICAgeWFob28tc2FmYXJpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0NC40NTg4Ky0wLjY5MTMgICAgID8gICAgIDQ0Ljk5
MTArLTAuNjU0MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjB4IHNsb3dlcgoKICAgPGdlb21ldHJp
Yz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4xMTczKy0wLjA4MDkg
ICAgID8gICAgIDE2LjI2NTQrLTAuMDk1NCAgICAgICAgPyBtaWdodCBiZSAxLjAwOTJ4IHNsb3dl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKTWljcm9iZW5jaG1hcmtzOgogICBhYmMtZm9yd2FyZC1sb29wLWVx
dWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMDMrLTAuMDEzNyAgICAgICAgICAg
IDAuMjIyOCstMC4wMTMzICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzOHggZmFzdGVyCiAgIGFiYy1w
b3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI2MSstMC4w
MTA0ICAgICA/ICAgICAgMC4yMjg4Ky0wLjAxNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMTIweCBz
bG93ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMjI5Ky0wLjAxMDAgICAgID8gICAgICAwLjIzMDIrLTAuMDExMCAgICAgICAgPyBtaWdo
dCBiZSAxLjAzMjZ4IHNsb3dlcgogICBhYmMtc2ltcGxlLWZvcndhcmQtbG9vcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIyODUrLTAuMDExNiAgICAgPyAgICAgIDAuMjI5OCstMC4wMTQ2
ICAgICAgICA/CiAgIGFiYy1za2lwcHktbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjI0NSstMC4wMDc3ICAgICA/ICAgICAgMC4yMzI4Ky0wLjAwODQgICAgICAgID8g
bWlnaHQgYmUgMS4wMzY2eCBzbG93ZXIKICAgYWJzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi44NzA3Ky0wLjA0NjUgICAgID8gICAgICAyLjg3NzUrLTAu
MDY3MiAgICAgICAgPwogICBhZGFwdC10by1kb3VibGUtZGl2aWRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE2Ljc3NzYrLTAuMjQ3NyAgICAgPyAgICAgMTYuODA4NSstMC4xOTQyICAgICAg
ICA/CiAgIGFsaWFzZWQtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAg
IDEuNTcwMSstMC4wODAxICAgICAgICAgICAgMS41NjI3Ky0wLjA5MTEgICAgICAgIAogICBhbGxv
Y2F0ZS1iaWctb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEwMzArLTAu
MTQ0NiAgICAgICAgICAgIDYuMDc3OSstMC4xMjcyICAgICAgICAKICAgYXBwbHktbm90LWFwcGx5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjY1Ky0wLjAwNzIgICAgICAg
ICAgICAwLjIyNDYrLTAuMDA2NSAgICAgICAgCiAgIGFyZ3VtZW50cy1uYW1lZC1hbmQtcmVmbGVj
dGl2ZSAgICAgICAgICAgICAgICAgICAgIDAuMjI2MistMC4wMTA3ICAgICAgICAgICAgMC4yMjQz
Ky0wLjAwODAgICAgICAgIAogICBhcmd1bWVudHMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIzNDQrLTAuMDIxMSAgICAgICAgICAgIDAuMjMyOSstMC4wMTQ2ICAg
ICAgICAKICAgYXJndW1lbnRzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMzE1Ky0wLjAwODUgICAgICAgICAgICAwLjIyNTMrLTAuMDA0NyAgICAgICAgICBtaWdo
dCBiZSAxLjAyNzN4IGZhc3RlcgogICBhcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIyMzIrLTAuMDA2OSAgICAgPyAgICAgIDAuMjI0NSstMC4wMjM5
ICAgICAgICA/CiAgIGFyaXR5LW1pc21hdGNoLWlubGluaW5nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuOTQ5OCstMC4wMjg4ICAgICA/ICAgICAgMC45OTUzKy0wLjA2NDggICAgICAgID8g
bWlnaHQgYmUgMS4wNDc4eCBzbG93ZXIKICAgYXJyYXktYWNjZXNzLXBvbHltb3JwaGljLXN0cnVj
dHVyZSAgICAgICAgICAgICAgICAgOS40NTQ0Ky0wLjE5MDggICAgID8gICAgICA5LjQ3NDIrLTAu
MTk1OSAgICAgICAgPwogICBhcnJheS1ub25hcnJheS1wb2x5bW9yaHBpYy1hY2Nlc3MgICAgICAg
ICAgICAgICAgIDI5LjM3NTYrLTAuNzM1MCAgICAgICAgICAgMjkuMTcwNSstMC43Mjc2ICAgICAg
ICAKICAgYXJyYXktcHJvdG90eXBlLWV2ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
Ny44NTk0Ky0wLjY0NDYgICAgID8gICAgIDg3LjkxMzMrLTEuMjU1OCAgICAgICAgPwogICBhcnJh
eS1wcm90b3R5cGUtZm9yRWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4LjYxNDErLTAu
OTUxMSAgICAgXiAgICAgODYuMjAyNistMC43MzM1ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMjgw
eCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLW1hcCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5Ny42OTA3Ky0xLjkyMjQgICAgICAgICAgIDk0LjA2NjMrLTIuMjEwNyAgICAgICAgICBt
aWdodCBiZSAxLjAzODV4IGZhc3RlcgogICBhcnJheS1wcm90b3R5cGUtcmVkdWNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDg3LjkzNjUrLTEuMTQ4MCAgICAgXiAgICAgODQuNTU3NistMS4z
NzcwICAgICAgICBeIGRlZmluaXRlbHkgMS4wNDAweCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBl
LXJlZHVjZVJpZ2h0ICAgICAgICAgICAgICAgICAgICAgIDEyNy43OTUxKy01Ljg1MDcgICAgICAg
ICAgMTIzLjAyODkrLTQuMjAyMiAgICAgICAgICBtaWdodCBiZSAxLjAzODd4IGZhc3RlcgogICBh
cnJheS1wcm90b3R5cGUtc29tZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg3Ljk0MDUr
LTEuMTQ4MiAgICAgPyAgICAgODkuMDc3MistNC4zNTkxICAgICAgICA/IG1pZ2h0IGJlIDEuMDEy
OXggc2xvd2VyCiAgIGFycmF5LXNwbGljZS1jb250aWd1b3VzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzAuOTEwNystMC4zMDQxICAgICAgICAgICAzMC43MzA3Ky0wLjI4NTkgICAgICAgIAog
ICBhcnJheS13aXRoLWRvdWJsZS1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM0
OTIrLTAuMDkyMiAgICAgICAgICAgIDQuMjc2NCstMC4wOTg1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE3MHggZmFzdGVyCiAgIGFycmF5LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAgICAg
ICAgICAgICAgIDMuNDI0MCstMC4wODE5ICAgICA/ICAgICAgMy40NDA1Ky0wLjEwNjcgICAgICAg
ID8KICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAg
NC44NzAyKy0wLjA3NzQgICAgICAgICAgICA0Ljg1NjIrLTAuMDcwOCAgICAgICAgCiAgIGFycmF5
LXdpdGgtZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjk5MCstMC4x
MDQxICAgICA/ICAgICAgMy4zNjk0Ky0wLjA5NDQgICAgICAgID8gbWlnaHQgYmUgMS4wMjEzeCBz
bG93ZXIKICAgYXJyYXktd2l0aC1pbnQzMi1hZGQtc3ViICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi41MDQwKy0wLjEwMDUgICAgICAgICAgICA2LjQwODMrLTAuMDk3MCAgICAgICAgICBtaWdo
dCBiZSAxLjAxNDl4IGZhc3RlcgogICBhcnJheS13aXRoLWludDMyLW9yLWRvdWJsZS1zdW0gICAg
ICAgICAgICAgICAgICAgICAzLjQxOTYrLTAuMDc3MiAgICAgPyAgICAgIDMuNDM0MSstMC4wODM3
ICAgICAgICA/CiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
Mi45MTI5Ky0wLjc1MzUgICAgICEgICAgIDk1LjA1NzMrLTAuNzg4OSAgICAgICAgISBkZWZpbml0
ZWx5IDEuMDIzMXggc2xvd2VyCiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxvbmctbGl2
ZWQgICAgICAgICAgICAgMzUuNjA0OSstMC42Mjc1ICAgICAgICAgICAzNS4yNzA0Ky0wLjU5NjAg
ICAgICAgIAogICBBcnJheUJ1ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZzZXQgICAgICAgICAgICAg
ICAgICAzLjk1NDMrLTAuMDYwMiAgICAgICAgICAgIDMuOTI0NystMC4wNDU0ICAgICAgICAKICAg
QXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5OC43MTUxKy0wLjYz
NzAgICAgID8gICAgIDk5LjMxNzQrLTAuOTQ0NSAgICAgICAgPwogICBBcnJheUJ1ZmZlci1JbnQ4
QXJyYXktYWxsb2MtbG9uZy1saXZlZC1idWZmZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ni4wODU0Ky0xLjI4NzAgICAgID8gICAgIDU3
LjA4NjIrLTIuNTEyMiAgICAgICAgPyBtaWdodCBiZSAxLjAxNzh4IHNsb3dlcgogICBBcnJheUJ1
ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgIDM0Ljc4NjMrLTAuNjcz
MCAgICAgICAgICAgMzQuMTY3MCstMC42Nzk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4MXggZmFz
dGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAg
MzIuNTc1NCstMC41Nzc1ICAgICAgICAgICAzMi4zMjk1Ky0wLjM3MjkgICAgICAgIAogICBhcnJv
d2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3RydWN0b3IgICAgICAgICAgICAwLjI2MTYrLTAu
MDA3NyAgICAgPyAgICAgIDAuMjcyMCstMC4wMTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwMHgg
c2xvd2VyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2QgICAgICAgICAgICAg
ICAgMjMuODIwOSstMC4zNjUwICAgICA/ICAgICAyNC4yNDUwKy0wLjQzNDUgICAgICAgID8gbWln
aHQgYmUgMS4wMTc4eCBzbG93ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0aW9uICAg
ICAgICAgICAgICAgICAgICAgMC4yMjQwKy0wLjAwNjggICAgICAgICAgICAwLjIxOTcrLTAuMDA2
NyAgICAgICAgICBtaWdodCBiZSAxLjAyMDB4IGZhc3RlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyODErLTAuMDExNyAgICAgPyAgICAg
IDAuMjQwOSstMC4wMjIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDU2MXggc2xvd2VyCiAgIGFzbWpz
X2Jvb2xfYnVnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguODk0OSstMC4y
MDA2ICAgICAgICAgICAgOC44MjA3Ky0wLjEyMTYgICAgICAgIAogICBhc3NpZ24tY3VzdG9tLXNl
dHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAzLjUxNzYrLTAuMDc3MiAgICAgPyAg
ICAgIDMuNTQzMCstMC4wOTU3ICAgICAgICA/CiAgIGFzc2lnbi1jdXN0b20tc2V0dGVyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzc3MSstMC4xMDU0ICAgICA/ICAgICAgNS4zOTg1
Ky0wLjA2NDQgICAgICAgID8KICAgYmFzaWMtc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMC41OTQ0Ky0wLjExOTAgICAgID8gICAgIDEwLjgyMTArLTAuMTcxMiAg
ICAgICAgPyBtaWdodCBiZSAxLjAyMTR4IHNsb3dlcgogICBiaWctaW50LW11bCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk3NjErLTAuMTQ2NCAgICAgICAgICAgIDMu
ODM0NCstMC4wNzAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3MHggZmFzdGVyCiAgIGJpZ3N3aXRj
aC1pbmRpcmVjdC1zeW1ib2wtb3ItdW5kZWZpbmVkICAgICAgICAgICAgNzQuNTMyOSstMTAuODg3
NiAgICA/ICAgICA4MC42MDg5Ky0xLjA1NTQgICAgICAgID8gbWlnaHQgYmUgMS4wODE1eCBzbG93
ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbCAgICAgICAgICAgICAgICAgICAgICAgICA4
Ni44NTc4Ky0xLjUzNzIgICAgICAgICAgIDg1LjUzOTUrLTAuOTIzMSAgICAgICAgICBtaWdodCBi
ZSAxLjAxNTR4IGZhc3RlcgogICBiaWdzd2l0Y2gtaW5kaXJlY3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUzLjcxOTIrLTAuMjQzMyAgICAgPyAgICAgNTQuMjI1MSstMC43MTk5ICAg
ICAgICA/CiAgIGJpZ3N3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDIuNjcwNystMC43ODYyICAgICAgICAgICA0MS42MzE3Ky0wLjU2NzYgICAgICAgICAgbWln
aHQgYmUgMS4wMjUweCBmYXN0ZXIKICAgYm9vbGVhbi10ZXN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy4zOTU2Ky0wLjAyOTkgICAgICAgICAgICAzLjM3NzcrLTAuMDI0
NSAgICAgICAgCiAgIGJvdW5kLWZ1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTAuODQ1NSstMC4xNzc2ICAgICA/ICAgICAxMC44NjczKy0wLjIwMDggICAgICAgID8K
ICAgYm91bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICAgMC4y
MzA0Ky0wLjAxMzcgICAgID8gICAgICAwLjI0MTYrLTAuMDE2MyAgICAgICAgPyBtaWdodCBiZSAx
LjA0ODN4IHNsb3dlcgogICBicmFuY2gtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjU1MDIrLTAuMDY0MiAgICAgICAgICAgIDQuNTA2OSstMC4wNDczICAgICAg
ICAKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAy
MC43NjM4Ky0wLjE4ODkgICAgICAgICAgIDIwLjcwODArLTAuMjU4MiAgICAgICAgCiAgIGJ1Zy0x
NTM0MzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIyMistMC4w
MDgyICAgICAgICAgICAgMC4yMjE2Ky0wLjAwOTQgICAgICAgIAogICBidWlsZC1sYXJnZS1vYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLjc3MDQrLTEuMTcxNyAgICAgPyAg
ICAgNDAuODgwMystMS4wMjQ2ICAgICAgICA/CiAgIGJ5LXZhbC1nZW5lcmljICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI0NistMC4wMDgzICAgICA/ICAgICAgMC4yMzY3
Ky0wLjAyMTIgICAgICAgID8gbWlnaHQgYmUgMS4wNTQweCBzbG93ZXIKICAgY2FsbC1vci1ub3Qt
Y2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzU2Ky0wLjAwOTQgICAg
ICAgICAgICAwLjIzMzErLTAuMDA5OCAgICAgICAgICBtaWdodCBiZSAxLjAxMDV4IGZhc3Rlcgog
ICBjYWxsLXNwcmVhZC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0Ljc1
NzErLTAuNDU4MCAgICAgICAgICAgMzQuNTA3NSstMC4zNDc4ICAgICAgICAKICAgY2FsbC1zcHJl
YWQtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC4yNjE2Ky0wLjg5NjMg
ICAgID8gICAgIDM0LjMyOTIrLTAuNDkyOSAgICAgICAgPwogICBjYXB0dXJlZC1hc3NpZ25tZW50
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM5NTQrLTAuMDIyNCAgICAgPyAgICAg
IDAuNDE0NystMC4wMjA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4OHggc2xvd2VyCiAgIGNhc3Qt
aW50LXRvLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNzcxNCstMC4w
ODU3ICAgICAgICAgICAgNS43Mjk1Ky0wLjA2NjIgICAgICAgIAogICBjZWxsLWFyZ3VtZW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjY4NDUrLTAuMDU5NCAgICAgPyAg
ICAgIDQuNzAwMCstMC4wODg3ICAgICAgICA/CiAgIGNmZy1zaW1wbGlmeSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjIwOSstMC4wOTUwICAgICA/ICAgICAgMy4yNTM1
Ky0wLjA5NDYgICAgICAgID8gbWlnaHQgYmUgMS4wMTAxeCBzbG93ZXIKICAgY2hhaW4tZ2V0dGVy
LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDM4Ky0wLjAxNjUgICAg
ID8gICAgICAwLjI0OTUrLTAuMDExOCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzF4IHNsb3dlcgog
ICBjbXBlcS1vYmotdG8tb2JqLW90aGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjUy
OTcrLTAuMDg4NCAgICAgISAgICAgMTAuOTI4MistMC4xNjI0ICAgICAgICAhIGRlZmluaXRlbHkg
MS4wMzc4eCBzbG93ZXIKICAgY29uY2F0LWFwcGVuZC1vbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yMTg5Ky0wLjAwOTEgICAgID8gICAgICAwLjIyNzUrLTAuMDExNiAgICAg
ICAgPyBtaWdodCBiZSAxLjAzOTZ4IHNsb3dlcgogICBjb25zdGFudC10ZXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1LjM4NTgrLTAuMTA0OSAgICAgICAgICAgIDUuMzYz
MCstMC4xMTA0ICAgICAgICAKICAgY3JlYXRlLWxvdHMtb2YtZnVuY3Rpb25zICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMS45Njk4Ky0wLjE1NjMgICAgICAgICAgIDExLjkwMzUrLTAuMTIyOSAg
ICAgICAgCiAgIGNzZS1uZXctYXJyYXktYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjI4NystMC4wMTA3ICAgICA/ICAgICAgMC4yMzcxKy0wLjAxNjMgICAgICAgID8gbWln
aHQgYmUgMS4wMzY5eCBzbG93ZXIKICAgY3NlLW5ldy1hcnJheSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMTY2Ky0wLjAwNjkgICAgID8gICAgICAwLjIyMzYrLTAuMDE1
NCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjV4IHNsb3dlcgogICBjdXN0b20tc2V0dGVyLWdldHRl
ci1hcy1wdXQtZ2V0LWJ5LWlkICAgICAgICAgICAgICAwLjIyNzgrLTAuMDEyOCAgICAgICAgICAg
IDAuMjI3MystMC4wMTIxICAgICAgICAKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAg
ICAgICAgICAgICAgICAgICAgICA5OC40MTE0Ky0xLjI5MDIgICAgID8gICAgIDk5LjY4ODErLTIu
NjI4NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzB4IHNsb3dlcgogICBkZWxheS10ZWFyLW9mZi1h
cmd1bWVudHMtc3RyaWN0bW9kZSAgICAgICAgICAgICAgICA5LjkxMTUrLTAuNDg3NiAgICAgICAg
ICAgIDkuNzA2NCstMC4xNjQzICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXggZmFzdGVyCiAgIGRl
bHRhYmx1ZS1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUuOTg5NSst
MC42Nzk0ICAgICAgICAgICA0NS43OTYwKy0wLjUxMTMgICAgICAgIAogICBkZWx0YWJsdWUtdmFy
YXJncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLjE5OTArLTAuNzQzNiAgICAg
ICAgICAgNDAuMDg0NSstMC40MDM2ICAgICAgICAKICAgZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2OS41MDYxKy0xLjQxMTkgICAgICAgICAgIDY3Ljk3
MjArLTAuOTAzNSAgICAgICAgICBtaWdodCBiZSAxLjAyMjZ4IGZhc3RlcgogICBkZXN0cnVjdHVy
aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjkrLTAuMDE4NiAgICAg
ICAgICAgIDAuMjEwMistMC4wMDk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYwNHggZmFzdGVyCiAg
IGRlc3RydWN0dXJpbmctc3dhcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDg3
OCstMC4xNTI2ICAgICAgICAgICAgNS40MTU3Ky0wLjA1ODAgICAgICAgICAgbWlnaHQgYmUgMS4w
MTMzeCBmYXN0ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS41NzgwKy0wLjExMzcgICAgICAgICAgICAxLjUzNTkrLTAuMDcxOCAgICAgICAg
ICBtaWdodCBiZSAxLjAyNzR4IGZhc3RlcgogICBkaXJlY3QtYXJndW1lbnRzLWxlbmd0aCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LjQ4MjIrLTAuMjE2OSAgICAgPyAgICAgIDguNTUxOSst
MC4yMDUyICAgICAgICA/CiAgIGRpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGggICAg
ICAgICAgICAgICAgIDguMTkxOCstMC4zMjkyICAgICA/ICAgICAgOC40MjEzKy0wLjI2OTcgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjgweCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJs
eS1vdmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4LjY5MzgrLTAuMTI5OSAgICAgICAgICAgIDguNTk3MSstMC4x
NjgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMnggZmFzdGVyCiAgIGRpdi1ib29sZWFuLWRvdWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzIxNystMC4xMDAyICAgICA/ICAg
ICAgNC43NjE2Ky0wLjA3MzcgICAgICAgID8KICAgZGl2LWJvb2xlYW4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy45MjgwKy0wLjEyOTAgICAgICAgICAgICA3Ljg1MDMr
LTAuMTI0MSAgICAgICAgCiAgIGRvdWJsZS1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAg
ICAgICAgICAgICAgIDAuMjIyMistMC4wMDkxICAgICA/ICAgICAgMC4yMjUxKy0wLjAxMDEgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTI5eCBzbG93ZXIKICAgZG91YmxlLXBvbGx1dGlvbi1nZXRieXZh
bCAgICAgICAgICAgICAgICAgICAgICAgICAgOC4wMjY1Ky0wLjEzMjAgICAgID8gICAgICA4LjA2
MTgrLTAuMDg0NSAgICAgICAgPwogICBkb3VibGUtcG9sbHV0aW9uLXB1dGJ5b2Zmc2V0ICAgICAg
ICAgICAgICAgICAgICAgICA1Ljg3NjIrLTAuMTUwOSAgICAgICAgICAgIDUuNzQ5OCstMC4wNTc0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMHggZmFzdGVyCiAgIGRvdWJsZS1yZWFsLXVzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIxNCstMC4wMDYzICAgICA/ICAgICAg
MC4yMzQ5Ky0wLjAxMjQgICAgICAgID8gbWlnaHQgYmUgMS4wNjExeCBzbG93ZXIKICAgZG91Ymxl
LXRvLWludDMyLXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAgICAgMC4yNjUyKy0wLjAw
NjIgICAgID8gICAgICAwLjI2OTArLTAuMDA4NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDR4IHNs
b3dlcgogICBkb3VibGUtdG8taW50MzItdHlwZWQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAg
ICAyLjQ2MDkrLTAuMDUwMyAgICAgICAgICAgIDIuNDIxNSstMC4wNDA3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE2M3ggZmFzdGVyCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXktbm8taW5s
aW5lICAgICAgICAgICAgIDAuMjc0MistMC4wMTQxICAgICA/ICAgICAgMC4yODcyKy0wLjAzMjUg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDc2eCBzbG93ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBl
ZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgMi40ODkwKy0wLjAzMjUgICAgID8gICAgICAy
LjUyOTErLTAuMDc5OSAgICAgICAgPyBtaWdodCBiZSAxLjAxNjF4IHNsb3dlcgogICBlbGlkYWJs
ZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjU5MTUrLTAuMjgx
OCAgICAgICAgICAgMjUuMzM4NSstMC4yMTM0ICAgICAgICAKICAgZWxpZGFibGUtbmV3LW9iamVj
dC1yb2ZsY29wdGVyICAgICAgICAgICAgICAgICAgICAyOC42NDUzKy0zLjUxMzggICAgID8gICAg
IDMwLjE0NzErLTQuNTQzOCAgICAgICAgPyBtaWdodCBiZSAxLjA1MjR4IHNsb3dlcgogICBlbGlk
YWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAgICAgIDI2Ljk1ODArLTAu
NDI0NCAgICAgPyAgICAgMjcuMTUyNystMC4yODI5ICAgICAgICA/CiAgIGVsaWRhYmxlLW5ldy1v
YmplY3QtdHJlZSAgICAgICAgICAgICAgICAgICAgICAgICAgMjguNTA0MSstMC42NzU5ICAgICAg
ICAgICAyOC4zMzc1Ky0wLjE4OTQgICAgICAgIAogICBlbXB0eS1zdHJpbmctcGx1cy1pbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQ1NDIrLTAuMTk2NiAgICAgICAgICAgIDkuMzM1
MSstMC4xNTM3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOHggZmFzdGVyCiAgIGVtc2NyaXB0ZW4t
Y3ViZTJoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEuODE3NSstMC44MTc3ICAg
ICAgICAgICA0MS41NjMyKy0wLjQ3NjMgICAgICAgIAogICBldmFsLWNvbXB1dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMTIrLTAuMDA5MiAgICAgICAgICAgIDAu
MjE4MystMC4wMDcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzM3ggZmFzdGVyCiAgIGV2YWwtbm90
LWV2YWwtY29tcHV0ZS1hcmdzICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzNSstMC4wMDgw
ICAgICA/ICAgICAgMC4yMzAxKy0wLjAxNDIgICAgICAgID8gbWlnaHQgYmUgMS4wMjk1eCBzbG93
ZXIKICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yMjg3Ky0wLjAwOTggICAgID8gICAgICAwLjIzOTMrLTAuMDIzMSAgICAgICAgPyBtaWdodCBi
ZSAxLjA0NjR4IHNsb3dlcgogICBleGl0LWxlbmd0aC1vbi1wbGFpbi1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIyODArLTAuMDE1MiAgICAgICAgICAgIDAuMjIxNystMC4wMDc2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI4MnggZmFzdGVyCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRi
eXZhbCAgICAgICAgICAgICAgICAgICAgICAgIDEuNzg1MSstMC4xMDAxICAgICA/ICAgICAgMS43
OTQ2Ky0wLjEwMjMgICAgICAgID8KICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1dGJ5dmFsICAgICAg
ICAgICAgICAgICAgICAgICAgMy4yMDk0Ky0wLjA3MjggICAgID8gICAgICAzLjI3NTQrLTAuMTE1
OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMDZ4IHNsb3dlcgogICBmaXhlZC10eXBlZC1hcnJheS1z
dG9yYWdlLXZhci1pbmRleCAgICAgICAgICAgICAgICAxLjQzNTArLTAuMDUwNSAgICAgICAgICAg
IDEuNDI3NystMC4wMzIxICAgICAgICAKICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgMS4xMjU3Ky0wLjA0NzYgICAgICAgICAgICAxLjA3NjgrLTAu
MDM2NiAgICAgICAgICBtaWdodCBiZSAxLjA0NTV4IGZhc3RlcgogICBGbG9hdDMyQXJyYXktbWF0
cml4LW11bHQgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljk5MTErLTAuMjQ5MyAgICAgPyAg
ICAgIDYuMTI1NSstMC4yMzcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyNHggc2xvd2VyCiAgIEZs
b2F0MzJBcnJheS10by1GbG9hdDY0QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgNTUuNDgwNist
MS4zMDIyICAgICAgICAgICA1NC4xMTUyKy0wLjc1MjEgICAgICAgICAgbWlnaHQgYmUgMS4wMjUy
eCBmYXN0ZXIKICAgRmxvYXQ2NEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAg
ICAgICA4NS44NTYxKy0wLjY5MzUgICAgID8gICAgIDg2LjA2OTQrLTEuMDgzNSAgICAgICAgPwog
ICBGbG9hdDY0QXJyYXktdG8tSW50MTZBcnJheS1zZXQgICAgICAgICAgICAgICAgICAgIDY5LjMz
MzkrLTAuODAxNyAgICAgICAgICAgNjkuMTgyNystMC42NDY1ICAgICAgICAKICAgZm9sZC1kb3Vi
bGUtdG8taW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4wODMyKy0wLjExOTcg
ICAgID8gICAgIDE2LjE4NTArLTAuMTkwNSAgICAgICAgPwogICBmb2xkLWdldC1ieS1pZC10by1t
dWx0aS1nZXQtYnktb2Zmc2V0LXJhcmUtaW50ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNjY3MSstMC45MTgyICAgICA/ICAgICAxMi4w
NjU3Ky0xLjA5NDMgICAgICAgID8gbWlnaHQgYmUgMS4wMzQyeCBzbG93ZXIKICAgZm9sZC1nZXQt
YnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldCAgICAgICAgICAgICAgOS4zNTMwKy0wLjk5MTEg
ICAgID8gICAgICA5Ljk4MTIrLTEuNDI5MiAgICAgICAgPyBtaWdodCBiZSAxLjA2NzJ4IHNsb3dl
cgogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tZ2V0LWJ5LW9mZnNldCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjM0NzErLTEu
NDM3NyAgICAgPyAgICAgIDcuNDk4MSstMS4zMDU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwNngg
c2xvd2VyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1wb2x5LWdldC1ieS1vZmZzZXQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OS42NTM5Ky0xLjAzNDUgICAgID8gICAgICA5Ljc3NDArLTAuMTQ4OCAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMjR4IHNsb3dlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcG9seS1wdXQt
Ynktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuMTExMystMS4xMjM5ICAgICAgICAgICAgOS43MDM2Ky0xLjU1MzIgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDIweCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRv
LXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNy42MTY3Ky0xLjM3MzEgICAgICAgICAgICA2LjAzNzkrLTEuNTM5NyAg
ICAgICAgICBtaWdodCBiZSAxLjI2MTV4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZz
ZXQtdG8tcmVwbGFjZS1vci10cmFuc2l0aW9uLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4wNDkyKy0xLjQ4MDcg
ICAgID8gICAgIDE5LjA1MzUrLTEuMjcxNyAgICAgICAgPwogICBmb2xkLXB1dC1ieS1pZC10by1t
dWx0aS1wdXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDEyLjA3MjQrLTEuOTM2MSAgICAgPyAgICAg
MTIuMTIxMystMi4wMDgxICAgICAgICA/CiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10
by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAuMjczOSstMS4wMTc5ICAgICA/ICAgICAxMS4xNDIxKy0x
LjYxNjQgICAgICAgID8gbWlnaHQgYmUgMS4wODQ1eCBzbG93ZXIKICAgZm9sZC1wdXQtYnktdmFs
LXdpdGgtc3ltYm9sLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC44MjYxKy0xLjMzMzEgICAgID8g
ICAgIDExLjE3OTgrLTEuNTkzMCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjd4IHNsb3dlcgogICBm
b2xkLXB1dC1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc2NjUr
LTAuODE4NyAgICAgPyAgICAgIDUuNTY2NistMS4yNjkwICAgICAgICA/IG1pZ2h0IGJlIDEuMTY3
OXggc2xvd2VyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMgICAgICAgICAgICAgICAg
ICAgICAgMTcuNjQwNSstMC42NTM3ICAgICA/ICAgICAxNy43MTE0Ky0wLjYzNTAgICAgICAgID8K
ICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXkta2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgNi41
NTc0Ky0wLjA5MjIgICAgID8gICAgICA2LjU3NDkrLTAuMTEyMCAgICAgICAgPwogICBmb3Itb2Yt
aXRlcmF0ZS1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICA2LjM4MjcrLTAuMTM3
OCAgICAgPyAgICAgIDYuNTI0NCstMC4xNTg1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyMnggc2xv
d2VyCiAgIGZyZWV6ZS1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTYuNjYzMSstMC4wODMxICAgICAgICAgICAxNi40ODA4Ky0wLjE1NjAgICAgICAgICAgbWlnaHQg
YmUgMS4wMTExeCBmYXN0ZXIKICAgZnJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMS42MDE5Ky0wLjEzNDUgICAgICAgICAgIDExLjU4MzErLTAuMTE1MyAg
ICAgICAgCiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAgICAgICAg
ICAgNzguMjc4NistMC44Nzg3ICAgICAhICAgICA4Mi43NzYyKy0xLjM2MDYgICAgICAgICEgZGVm
aW5pdGVseSAxLjA1NzV4IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI3LjExMjArLTAuMjYwOCAgICAgICAgICAgMjYuOTE3OSstMC4z
OTQ0ICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdGFuZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yNDAyKy0wLjAwODMgICAgICAgICAgICAwLjIzNTQrLTAuMDEwMiAgICAgICAg
ICBtaWdodCBiZSAxLjAyMDJ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0b3IgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjIzNzIrLTAuMDA4NCAgICAgPyAgICAgIDAuMjQzNyst
MC4wMTE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3NXggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhp
Yy1iaXR4b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQ3NCstMC4wMTI3ICAgICAg
ICAgICAgMC4yMzY0Ky0wLjAxMDEgICAgICAgICAgbWlnaHQgYmUgMS4wNDY2eCBmYXN0ZXIKICAg
ZnRsLXBvbHltb3JwaGljLWRpdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDg0
Ky0wLjAxNTQgICAgICAgICAgICAwLjIzNTErLTAuMDA5MSAgICAgICAgICBtaWdodCBiZSAxLjA1
NjN4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtbHNoaWZ0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjI1NDgrLTAuMDE3NSAgICAgICAgICAgIDAuMjM3NSstMC4wMDU5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDcyOXggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1tdWwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjM4MistMC4wMTMwICAgICA/ICAgICAgMC4yMzkzKy0w
LjAxMTUgICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLXJzaGlmdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yNDg0Ky0wLjAxODcgICAgICAgICAgICAwLjIzOTMrLTAuMDEyMCAgICAg
ICAgICBtaWdodCBiZSAxLjAzODJ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtU3RyaW5nRnJv
bUNoYXJDb2RlICAgICAgICAgICAgICAgICAwLjI1NjErLTAuMDE5MCAgICAgICAgICAgIDAuMjQx
OCstMC4wMDcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDU4OHggZmFzdGVyCiAgIGZ0bC1wb2x5bW9y
cGhpYy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQwMistMC4wMDU5ICAg
ICAgICAgICAgMC4yMzQwKy0wLjAwNjcgICAgICAgICAgbWlnaHQgYmUgMS4wMjY4eCBmYXN0ZXIK
ICAgZnRsLXBvbHltb3JwaGljLXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
NDY4Ky0wLjAxMTUgICAgID8gICAgICAwLjI1MTUrLTAuMDEwMiAgICAgICAgPyBtaWdodCBiZSAx
LjAxOTJ4IHNsb3dlcgogICBmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIyODUrLTAuMDExNSAgICAgICAgICAgIDAuMjE3NSstMC4wMDgyICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDUwNnggZmFzdGVyCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTc1MistMC4wODQ5ICAgICAgICAgICAgMi41MDgw
Ky0wLjA1MTIgICAgICAgICAgbWlnaHQgYmUgMS4wMjY4eCBmYXN0ZXIKICAgZnVuY3Rpb24tdGVz
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMjc4Ky0wLjA3MzQgICAg
ICAgICAgICAzLjEyMjIrLTAuMDQ5MSAgICAgICAgCiAgIGZ1bmN0aW9uLXdpdGgtZXZhbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIyMCstMC4wMDY2ICAgICA/ICAgICAgMC4y
MzcxKy0wLjAxNDggICAgICAgID8gbWlnaHQgYmUgMS4wNjc3eCBzbG93ZXIKICAgZ2NzZS1wb2x5
LWdldC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAgICAgICAgICAyMi4yMzcxKy0wLjIyOTYg
ICAgID8gICAgIDIyLjM5MzIrLTAuMjExNiAgICAgICAgPwogICBnY3NlLXBvbHktZ2V0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjUyOTYrLTAuMjAyOSAgICAgPyAgICAg
MjIuNjQ1NCstMC4xNDkwICAgICAgICA/CiAgIGdjc2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuNDc3NystMC4wODczICAgICAgICAgICAgNC40NzAxKy0w
LjA1MDggICAgICAgIAogICBnZW5lcmF0b3ItY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIyNDYrLTAuMDA5MCAgICAgPyAgICAgIDAuMjI5MCstMC4wMTYxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE5M3ggc2xvd2VyCiAgIGdlbmVyYXRvci1maWIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDAuNzg5MistMC4yODg4ICAgICAhICAgICA0MS42ODk4
Ky0wLjU4NDYgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjF4IHNsb3dlcgogICBnZW5lcmF0b3It
ZnVuY3Rpb24tY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxNzQrLTAuMDA3NiAg
ICAgPyAgICAgIDAuMjI1OCstMC4wMTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4Nnggc2xvd2Vy
CiAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgIDYu
ODI5OCstMC4xNjczICAgICAgICAgICAgNi42NjAzKy0wLjEyNTAgICAgICAgICAgbWlnaHQgYmUg
MS4wMjU1eCBmYXN0ZXIKICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAg
ICAgICAgICAgIDE0Ny44MTgzKy01LjcyNjQgICAgICAgICAgMTQyLjgxNzIrLTYuODIyMyAgICAg
ICAgICBtaWdodCBiZSAxLjAzNTB4IGZhc3RlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNr
LXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43ODc1Ky0wLjA4MDcgICAgICAgICAgICAy
Ljc4NTMrLTAuMDUzOSAgICAgICAgCiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0
dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUuNjUyOCstMC4wNzgyICAgICAgICAgICAgNS42NDYwKy0wLjA5Nzcg
ICAgICAgIAogICBnZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAg
ICAgICAyLjUzMzArLTAuMDUzMyAgICAgPyAgICAgIDIuNTU4MistMC4wNDc1ICAgICAgICA/CiAg
IGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAgIDMuOTkw
MistMC4xNDQ0ICAgICAgICAgICAgMy45NzM3Ky0wLjEyMjMgICAgICAgIAogICBnZXQtYnktaWQt
cHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjE3NTIrLTAuODQwNCAg
ICAgICAgICAgMTMuODA2OCstMC45MjU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2N3ggZmFzdGVy
CiAgIGdldC1ieS1pZC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2lt
cGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuMzg4OCstMC4wNjk0ICAgICAgICAgICAgMy4zMjY1Ky0wLjA1MDMgICAgICAgICAgbWln
aHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXNlbGYtb3ItcHJvdG8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNC4xNjk4Ky0wLjg4OTIgICAgID8gICAgIDE0LjI4MTUrLTAuNzgx
MSAgICAgICAgPwogICBnZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjIzMDQrLTAuMDA5OSAgICAgPyAgICAgIDAuMjUzOCstMC4wMjQ1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMTAxNnggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3Jw
aGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44MTAzKy0wLjA2NTEgICAg
ICAgICAgICAzLjc3MTkrLTAuMDI2MCAgICAgICAgICBtaWdodCBiZSAxLjAxMDJ4IGZhc3Rlcgog
ICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWlu
YXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOC4wOTExKy0wLjI5MjMgICAgICAgICAgICA3LjgzMTErLTAuMDk5MiAgICAgICAgICBt
aWdodCBiZSAxLjAzMzJ4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoYWluLWZy
b20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNjI3MystMC4wNzAyICAgICAgICAgICAgMi42MDM3Ky0wLjA2OTggICAg
ICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjcxNzQrLTAuMDgxOCAgICAgICAgICAgIDYuNjQ4MCstMC4wNzI0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDEwNHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2Vs
ZiAgICAgICAgICAgICAgMTMuODU1NCstMC4yMTExICAgICA/ICAgICAxNC4wMjY2Ky0wLjI3MTkg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTI0eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmlu
Zy1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMjQ1OSst
MC4xMTMyICAgICA/ICAgICAgNS4yODQ5Ky0wLjExNTIgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13
aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMy43NzY4Ky0wLjIxNzIgICAg
ID8gICAgIDEzLjk4NjgrLTAuMTc2MyAgICAgICAgPyBtaWdodCBiZSAxLjAxNTJ4IHNsb3dlcgog
ICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWlu
YXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuMjIzNCstMC4wNTQwICAgICAgICAgICAgMy4xOTA0Ky0wLjA1OTEgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTA0eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1i
aW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMDg0OSstMC4xMDI1ICAgICA/
ICAgICAxMS4xODExKy0wLjE4MzUgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1j
aGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjY0MTArLTAuMDgyNSAgICAgPyAgICAgIDIuNjQyMCstMC4w
NjQ0ICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hlY2stc3RydWN0dXJlLWVs
aW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDguMzQxOCstMC4wODE3ICAgICA/ICAgICAgOC4zOTYxKy0wLjEwNjQgICAgICAg
ID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1wcm90by1vci1zZWxmICAgICAgICAgICAgICAx
My44ODEyKy0wLjE4MTEgICAgID8gICAgIDEzLjg5ODErLTAuMDk2OSAgICAgICAgPwogICBnZXQt
YnktdmFsLXdpdGgtc3ltYm9sLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
bi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC41Mzg0Ky0wLjA3OTcgICAgICAgICAgICA0LjUxNjgrLTAuMTExMyAgICAgICAg
CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgMTMu
ODM4MSstMC4xNzUzICAgICA/ICAgICAxMy44NTE3Ky0wLjE3NTEgICAgICAgID8KICAgZ2V0X2J5
X3ZhbC1JbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNzUyKy0wLjA0
MTYgICAgICAgICAgICAxLjEzODIrLTAuMDUxMCAgICAgICAgICBtaWdodCBiZSAxLjAzMjZ4IGZh
c3RlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjM3MzQrLTAuMTI5OSAgICAgICAgICAgIDYuMzE0MSstMC4xMjA3ICAgICAgICAKICAgZ2V0
X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yOTY4Ky0w
LjExMDkgICAgICAgICAgICA2LjI5MDArLTAuMTE4NSAgICAgICAgCiAgIGdldHRlci1uby1hY3Rp
dmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDM0MystMC4wNTU0ICAgICAg
ICAgICAgMy45OTQ2Ky0wLjAzMzcgICAgICAgIAogICBnZXR0ZXItcHJvdG90eXBlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMjMrLTAuMDEwOSAgICAgICAgICAgIDAuMjI4
NCstMC4wMTQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MXggZmFzdGVyCiAgIGdldHRlci1yaWNo
YXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE0MSstMC4wMTI1ICAg
ICA/ICAgICAgMC4zMjA1Ky0wLjAxNTEgICAgICAgID8gbWlnaHQgYmUgMS4wMjA1eCBzbG93ZXIK
ICAgZ2V0dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ni42
NDk5Ky0zLjA4MDMgICAgID8gICAgIDc3LjYwODQrLTQuMjQxNSAgICAgICAgPyBtaWdodCBiZSAx
LjAxMjV4IHNsb3dlcgogICBnZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjQ4NTArLTAuMDg2MSAgICAgICAgICAgIDQuNDU5OSstMC4wODIxICAgICAg
ICAKICAgZ2xvYmFsLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ny4xMTYyKy0wLjEwMTEgICAgICAgICAgIDE3LjA2NjcrLTAuMTU1MSAgICAgICAgCiAgIGdsb2Jh
bC1vYmplY3QtYWNjZXNzLXdpdGgtbXV0YXRpbmctc3RydWN0dXJlICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE2NSstMC4wMTQzICAg
ICAgICAgICAgMC4yMTY0Ky0wLjAxMzIgICAgICAgIAogICBnbG9iYWwtdmFyLWNvbnN0LWluZmVy
LWZpcmUtZnJvbS1vcHQgICAgICAgICAgICAgICAwLjIzMDcrLTAuMDA4MyAgICAgPyAgICAgIDAu
MjM3NystMC4wMDgwICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwNXggc2xvd2VyCiAgIGdsb2JhbC12
YXItY29uc3QtaW5mZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMxOCstMC4wMTUy
ICAgICAgICAgICAgMC4yMjc0Ky0wLjAxMjYgICAgICAgICAgbWlnaHQgYmUgMS4wMTkyeCBmYXN0
ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjay1lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yMzQzKy0wLjAyMzAgICAgID8gICAgICAwLjIzNzQrLTAuMDE0NyAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMzB4IHNsb3dlcgogICBoYXJkLW92ZXJmbG93LWNoZWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIyMDArLTAuMDExNSAgICAgICAgICAgIDAuMjE4NystMC4wMTEwICAg
ICAgICAKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5cyAgICAgICAgICAgICAgICAgICAg
ICAyOS41MDY3Ky0wLjUyNjQgICAgID8gICAgIDI5LjY5NzQrLTAuNDEzOSAgICAgICAgPwogICBI
YXNoTWFwLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLjAxOTYr
LTAuNDk2NSAgICAgICAgICAgMjkuOTkyMistMC40NDc3ICAgICAgICAKICAgSGFzaE1hcC1zdHJp
bmctcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAzOS45NDk3Ky0wLjY3ODkgICAg
ICAgICAgIDM5LjQ5MDArLTAuNDM0OSAgICAgICAgICBtaWdodCBiZSAxLjAxMTZ4IGZhc3Rlcgog
ICBob2lzdC1tYWtlLXJvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIz
NzArLTAuMDIyNSAgICAgICAgICAgIDAuMjI5MistMC4wMTE0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDM0MHggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29w
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMjI3NystMC4wMTI1ICAgICAgICAgICAgMC4yMjQ0Ky0wLjAxMzYgICAgICAgICAgbWlnaHQg
YmUgMS4wMTQ1eCBmYXN0ZXIKICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4yMzk5Ky0wLjAxNzAgICAgICAgICAgICAwLjIzNDArLTAuMDA5NSAg
ICAgICAgICBtaWdodCBiZSAxLjAyNTB4IGZhc3RlcgogICBpbXBsaWNpdC1iaWdzd2l0Y2gtaW5k
aXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgIDYxLjg5MTkrLTAuMzQwMiAgICAgPyAgICAgNjIu
MDcxMCstMC42MDkwICAgICAgICA/CiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuOTM1MCstMC4wOTI2ICAgICA/ICAgICAgNC4yMjMyKy0wLjMx
NTAgICAgICAgID8gbWlnaHQgYmUgMS4wNzMyeCBzbG93ZXIKICAgaW11bC1pbnQtb25seSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40NTQyKy0wLjE1NjggICAgID8gICAg
ICA2LjU0NTUrLTAuMTIwMyAgICAgICAgPyBtaWdodCBiZSAxLjAxNDJ4IHNsb3dlcgogICBpbXVs
LW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjgzMzYrLTAu
MDc5MCAgICAgPyAgICAgIDMuODQ4MistMC4wNjU4ICAgICAgICA/CiAgIGluLWZvdXItY2FzZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuMzYwOSstMC45NTIzICAgICA/
ICAgICAyMy4wODk3Ky0wLjIzMzUgICAgICAgID8gbWlnaHQgYmUgMS4wMzI2eCBzbG93ZXIKICAg
aW4tb25lLWNhc2UtZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4xNDYw
Ky0wLjExNTkgICAgICAgICAgIDEwLjA0ODgrLTAuMDY5MiAgICAgICAgCiAgIGluLW9uZS1jYXNl
LXRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMTQyNSstMC4xNjk3ICAg
ICAgICAgICAxMC4wMjUyKy0wLjExMDAgICAgICAgICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIK
ICAgaW4tdHdvLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC40
Nzc0Ky0wLjIxMjkgICAgICAgICAgIDEwLjM3OTYrLTAuMDg5NyAgICAgICAgCiAgIGluZGV4ZWQt
cHJvcGVydGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAgIDMuMjkxOSstMC4wNTg5
ICAgICA/ICAgICAgMy4zMjMzKy0wLjA2OTQgICAgICAgID8KICAgaW5mZXItY2xvc3VyZS1jb25z
dC10aGVuLW1vdi1uby1pbmxpbmUgICAgICAgICAgICAgMC4yMjU2Ky0wLjAwODYgICAgICAgICAg
ICAwLjIyMzMrLTAuMDA5NyAgICAgICAgICBtaWdodCBiZSAxLjAxMDV4IGZhc3RlcgogICBpbmZl
ci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92ICAgICAgICAgICAgICAgICAgICAgIDExLjcyMDUrLTAu
MDc1NiAgICAgPyAgICAgMTEuNzU5NCstMC4xMDYyICAgICAgICA/CiAgIGluZmVyLWNsb3N1cmUt
Y29uc3QtdGhlbi1wdXQtdG8tc2NvcGUtbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5MSstMC4wMTEzICAgICAgICAg
ICAgMC4yMTkzKy0wLjAwNjQgICAgICAgICAgbWlnaHQgYmUgMS4wNDQ5eCBmYXN0ZXIKICAgaW5m
ZXItY2xvc3VyZS1jb25zdC10aGVuLXB1dC10by1zY29wZSAgICAgICAgICAgICAyNC4xMTMzKy0w
LjI5MjIgICAgICAgICAgIDIzLjk4NzIrLTAuMzA1OSAgICAgICAgCiAgIGluZmVyLWNsb3N1cmUt
Y29uc3QtdGhlbi1yZWVudGVyLW5vLWlubGluZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjArLTAuMDEwMyAgICAgPyAgICAgIDAu
MjI0NistMC4wMTAyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExM3ggc2xvd2VyCiAgIGluZmVyLWNs
b3N1cmUtY29uc3QtdGhlbi1yZWVudGVyICAgICAgICAgICAgICAgICAgMjQuMDg4NystMC4zMzYx
ICAgICA/ICAgICAyNC4xMzY1Ky0wLjM4NDQgICAgICAgID8KICAgaW5mZXItY29uc3RhbnQtZ2xv
YmFsLXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgMy4zMTgxKy0wLjA1MDEgICAgICAgICAg
ICAzLjI1OTQrLTAuMDYxMSAgICAgICAgICBtaWdodCBiZSAxLjAxODB4IGZhc3RlcgogICBpbmZl
ci1jb25zdGFudC1wcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcxNzArLTAu
MDU4NiAgICAgICAgICAgIDIuNzAxOCstMC4wNDAzICAgICAgICAKICAgaW5mZXItb25lLXRpbWUt
Y2xvc3VyZS10ZW4tdmFycyAgICAgICAgICAgICAgICAgICAgMC4yMTc0Ky0wLjAwNjAgICAgID8g
ICAgICAwLjIyNzcrLTAuMDEzMiAgICAgICAgPyBtaWdodCBiZSAxLjA0NzJ4IHNsb3dlcgogICBp
bmZlci1vbmUtdGltZS1jbG9zdXJlLXR3by12YXJzICAgICAgICAgICAgICAgICAgICAwLjIzODcr
LTAuMDMwMCAgICAgICAgICAgIDAuMjMxNCstMC4wMDk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMx
OXggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjI0NSstMC4wMTAyICAgICAgICAgICAgMC4yMjMzKy0wLjAxNDAgICAgICAgIAog
ICBpbmZlci1vbmUtdGltZS1kZWVwLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAwLjI0
NjArLTAuMDE0MCAgICAgPyAgICAgIDAuMjQ2MCstMC4wMjU3ICAgICAgICA/CiAgIGlubGluZS1h
cmd1bWVudHMtYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuOTkzNistMC4xNDMy
ICAgICA/ICAgICAxMC4zMjI2Ky0wLjIwNjEgICAgICAgID8gbWlnaHQgYmUgMS4wMzI5eCBzbG93
ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1hbGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAx
MC4xNjk0Ky0wLjE4MDAgICAgID8gICAgIDEwLjE5NDArLTAuMjQwOSAgICAgICAgPwogICBpbmxp
bmUtYXJndW1lbnRzLWxvY2FsLWVzY2FwZSAgICAgICAgICAgICAgICAgICAgICA5Ljk2ODcrLTAu
MDk5NCAgICAgPyAgICAgIDkuOTkyMistMC4xMjg0ICAgICAgICA/CiAgIGlubGluZS1nZXQtc2Nv
cGVkLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzUyMSstMC4xMTA0ICAgICAg
ICAgICAgMy4yNjg1Ky0wLjA2MTcgICAgICAgICAgbWlnaHQgYmUgMS4wMjU2eCBmYXN0ZXIKICAg
aW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICAgICAxMS4zMTAx
Ky0wLjE1MDQgICAgID8gICAgIDExLjMxNjgrLTAuMTYzNSAgICAgICAgPwogICBpbmxpbmVkLXB1
dC1ieS12YWwtd2l0aC1zdHJpbmctdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwLjExOTkrLTAuOTk5MCAgICAgICAgICAg
NDkuMjg0NystMC40NDUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OXggZmFzdGVyCiAgIGlubGlu
ZWQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEuMDI0NystMS4xNDg0ICAgICAg
ICAgICA1MC4xNjQ2Ky0wLjY4ODEgICAgICAgICAgbWlnaHQgYmUgMS4wMTcxeCBmYXN0ZXIKICAg
aW5zdGFuY2VvZi1ib3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNjQw
Ky0wLjAxNTkgICAgID8gICAgICAwLjI3MzQrLTAuMDE2MCAgICAgICAgPyBtaWdodCBiZSAxLjAz
NTZ4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAg
ICAgICAgICA1LjE1NzQrLTAuMDgwNiAgICAgPyAgICAgIDUuMTY0MSstMC4wNzYyICAgICAgICA/
CiAgIGludC1vci1vdGhlci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTku
NTA1MistMC4yNjU0ICAgICA/ICAgICAxOS42MTcyKy0wLjMwODUgICAgICAgID8KICAgaW50LW9y
LW90aGVyLWFkZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC43MjIzKy0wLjA5
MDAgICAgID8gICAgICA0LjczMTgrLTAuMDY2NCAgICAgICAgPwogICBpbnQtb3Itb3RoZXItYWRk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc5NjkrLTAuMDkxOCAgICAgPyAg
ICAgIDUuODMxNCstMC4wODA2ICAgICAgICA/CiAgIGludC1vci1vdGhlci1kaXYtdGhlbi1nZXQt
YnktdmFsICAgICAgICAgICAgICAgICAgIDQuMjkxMystMC4wODQ2ICAgICAgICAgICAgNC4yNTc3
Ky0wLjA2MDIgICAgICAgIAogICBpbnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZhbCAgICAg
ICAgICAgICAgICAgICA0LjU0MzMrLTAuMDQ2OCAgICAgICAgICAgIDQuNTA5NSstMC4xMDUzICAg
ICAgICAKICAgaW50LW9yLW90aGVyLW1pbi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgNC4yOTY0Ky0wLjA2ODQgICAgICAgICAgICA0LjI1MTkrLTAuMDc3MiAgICAgICAgICBtaWdo
dCBiZSAxLjAxMDV4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbW9kLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAgICAgICA0LjI5NDArLTAuMDUwNCAgICAgICAgICAgIDQuMjY4NistMC4wNzg1
ICAgICAgICAKICAgaW50LW9yLW90aGVyLW11bC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAg
ICAgICAgNy4xOTY1Ky0wLjA2MTYgICAgID8gICAgICA3LjIxMTErLTAuMDk3OCAgICAgICAgPwog
ICBpbnQtb3Itb3RoZXItbmVnLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0Ljg2
ODQrLTAuMDM4MCAgICAgPyAgICAgIDQuOTE2MistMC4xMDg5ICAgICAgICA/CiAgIGludC1vci1v
dGhlci1uZWctemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTkuMzgxOSstMC4yMjI1
ICAgICA/ICAgICAxOS40NTgzKy0wLjE2NzUgICAgICAgID8KICAgaW50LW9yLW90aGVyLXN1Yi10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS44NDkyKy0wLjA2OTYgICAgID8gICAg
ICA1LjkzMTArLTAuMTAwNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDB4IHNsb3dlcgogICBpbnQt
b3Itb3RoZXItc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc5NjUrLTAu
MDc5MSAgICAgPyAgICAgIDQuODI1OCstMC4wNTU0ICAgICAgICA/CiAgIGludC1vdmVyZmxvdy1s
b2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODc1NystMC4xNjY2ICAgICAg
ICAgICAgNC44MDAzKy0wLjA2MzIgICAgICAgICAgbWlnaHQgYmUgMS4wMTU3eCBmYXN0ZXIKICAg
SW50MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA2Mi43MDYw
Ky0wLjQ0MDUgICAgID8gICAgIDYzLjEwMDcrLTAuNjYxNiAgICAgICAgPwogICBJbnQxNkFycmF5
LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDIyLjYxMzYrLTAuNTA1OSAg
ICAgICAgICAgMjIuMDQ1OSstMC41MTE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1N3ggZmFzdGVy
CiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIu
NTQxNystMC4zMjMyICAgICA/ICAgICAyMi42MjUwKy0wLjE0OTcgICAgICAgID8KICAgSW50MTZB
cnJheS1sb2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44MTU0Ky0wLjAz
ODkgICAgICAgICAgICAxLjgwNTUrLTAuMDUxNyAgICAgICAgCiAgIEludDE2QXJyYXktdG8tSW50
MzJBcnJheS1zZXQgICAgICAgICAgICAgICAgICAgICAgNTIuMzI4MSstMS4zMjEwICAgICAhICAg
ICA1Ni4wMDI3Ky0wLjk2OTAgICAgICAgICEgZGVmaW5pdGVseSAxLjA3MDJ4IHNsb3dlcgogICBJ
bnQzMkFycmF5LWFsbG9jLWxhcmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjI3MjUr
LTAuNTU5MyAgICAgICAgICAgMjMuOTg0NCstMC4yNjA1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEy
MHggZmFzdGVyCiAgIEludDMyQXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAg
ICAgICAgNzMuMjQyNCstMC45ODEwICAgICAgICAgICA3Mi40MDc4Ky0wLjYwOTEgICAgICAgICAg
bWlnaHQgYmUgMS4wMTE1eCBmYXN0ZXIKICAgSW50MzJBcnJheS1hbGxvYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOS4yMzM1Ky0wLjEyMDIgICAgICAgICAgICA5LjEzNDMrLTAu
MTc3NyAgICAgICAgICBtaWdodCBiZSAxLjAxMDl4IGZhc3RlcgogICBJbnQzMkFycmF5LUludDhB
cnJheS12aWV3LWFsbG9jICAgICAgICAgICAgICAgICAgIDE4LjQ3ODMrLTAuMjMxNyAgICAgICAg
ICAgMTguNDQ0MSstMC4zMjE3ICAgICAgICAKICAgaW50NTItc3BpbGwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzU0Ky0wLjAxNTcgICAgICAgICAgICAwLjIzMzUr
LTAuMDE0MSAgICAgICAgCiAgIEludDhBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAg
ICAgICAgICAgICAgNTguNzUyOCstMC45NzMxICAgICAgICAgICA1OC4wOTkyKy0wLjM5MjMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAgSW50OEFycmF5LWxvYWQtd2l0aC1ieXRl
TGVuZ3RoICAgICAgICAgICAgICAgICAgICAgMy42OTY3Ky0wLjA1MzMgICAgICAgICAgICAzLjY3
NzErLTAuMDYwMiAgICAgICAgCiAgIEludDhBcnJheS1sb2FkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuNjk5MistMC4wNDI1ICAgICA/ICAgICAgMy43MTI5Ky0wLjA1Mjkg
ICAgICAgID8KICAgaW50ZWdlci1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMi43MDEzKy0wLjIzMzMgICAgICAgICAgIDEyLjU3ODgrLTAuMTY2OCAgICAgICAgCiAg
IGludGVnZXItbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjQw
NystMC4wNjY4ICAgICAhICAgICAgMi4zNTkwKy0wLjAzODQgICAgICAgICEgZGVmaW5pdGVseSAx
LjA1Mjh4IHNsb3dlcgogICBpcy1ib29sZWFuLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjcxOTkrLTAuMTA0NSAgICAgICAgICAgIDMuNTg3NCstMC4wODQ5ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDM3MHggZmFzdGVyCiAgIGlzLWJvb2xlYW4tZm9sZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzM3MCstMC4wNTkyICAgICAgICAgICAgMi43MzQ3
Ky0wLjAzODYgICAgICAgIAogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreS1pbnRlcm5hbC1mdW5j
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEyLjY1MzIrLTAuMTEzMCAgICAgISAgICAgMTMuMjcyNCstMC4xNjQzICAgICAgICAhIGRl
ZmluaXRlbHkgMS4wNDg5eCBzbG93ZXIKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy44NDM2Ky0wLjA3ODAgICAgID8gICAgICAzLjg0NDArLTAu
MDg3MSAgICAgICAgPwogICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjc1MTMrLTAuMDc0MiAgICAgPyAgICAgIDIuNzg1NystMC4wNzEyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEyNXggc2xvd2VyCiAgIGlzLW51bWJlci1mb2xkLXRyaWNreSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzY5MystMC4wNTc3ICAgICAgICAgICAgMy43NjAx
Ky0wLjA3MzMgICAgICAgIAogICBpcy1udW1iZXItZm9sZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjc0MTcrLTAuMDU3NyAgICAgPyAgICAgIDIuNzU0OCstMC4wNTg1ICAg
ICAgICA/CiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtZnVuY3Rpb25zICAgICAgICAgICAgICAg
ICAgIDIuODgzMystMC4wNDQ5ICAgICAgICAgICAgMi44MTU3Ky0wLjAzODQgICAgICAgICAgbWln
aHQgYmUgMS4wMjQweCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC1sZXNzLXRyaWNr
eSAgICAgICAgICAgICAgICAgMy44MjIyKy0wLjA3OTMgICAgID8gICAgICAzLjg0NjErLTAuMTEy
MyAgICAgICAgPwogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLXRyaWNreSAgICAgICAgICAgICAg
ICAgICAgICA0LjMzNjcrLTAuMDkwMSAgICAgICAgICAgIDQuMzExNistMC4wOTA5ICAgICAgICAK
ICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44
MjQ3Ky0wLjA4ODEgICAgICAgICAgICAyLjcxOTYrLTAuMDY2MCAgICAgICAgICBtaWdodCBiZSAx
LjAzODd4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1mdW5jdGlvbiAgICAg
ICAgICAgICAgICAzLjk3OTMrLTAuMDkwMiAgICAgICAgICAgIDMuOTQ5OSstMC4xMDU4ICAgICAg
ICAKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4zMzYy
Ky0wLjIyOTMgICAgID8gICAgIDIzLjU2MzErLTAuMzIwMiAgICAgICAgPwogICBpcy1vYmplY3Qt
b3ItbnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAgICAgICAgICAgICAzLjg0MjIrLTAuMDY2NyAg
ICAgPyAgICAgIDMuOTMwMSstMC4wNjA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOXggc2xvd2Vy
CiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1pbnRlcm5hbC1mdW5jdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjUwNzIrLTAu
MTEzMiAgICAgPyAgICAgIDguNjIxOCstMC4xNDE0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzNXgg
c2xvd2VyCiAgIGlzLXN0cmluZy1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuNzg4MistMC4wNTcwICAgICAgICAgICAgMy43NjE1Ky0wLjA4NjkgICAgICAgIAogICBp
cy1zdHJpbmctZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc2NzEr
LTAuMDQ1OCAgICAgICAgICAgIDIuNzMyOSstMC4wNzA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEy
NXggZmFzdGVyCiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMzAzNystMC4wNjg2ICAgICAgICAgICAgMy4yODU3Ky0wLjAzNzcgICAgICAgIAog
ICBpcy11bmRlZmluZWQtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcz
NzYrLTAuMDYyNiAgICAgPyAgICAgIDIuNzU0NCstMC4wNDIwICAgICAgICA/CiAgIEpTT05QLW5l
Z2F0aXZlLTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMTY2OSstMC4wMTIy
ICAgICAgICAgICAgMC4xNTk4Ky0wLjAwOTcgICAgICAgICAgbWlnaHQgYmUgMS4wNDQ1eCBmYXN0
ZXIKICAgbGFyZ2UtaW50LWNhcHR1cmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OC4yODkyKy0wLjExNzYgICAgID8gICAgICA4LjMxMDkrLTAuMTcyNSAgICAgICAgPwogICBsYXJn
ZS1pbnQtbmVnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjgwMDcrLTAu
MTMzNCAgICAgICAgICAgMTAuNzkzMSstMC4xMzY1ICAgICAgICAKICAgbGFyZ2UtaW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS41Njk2Ky0wLjE0MTMgICAgID8g
ICAgICA5LjYwMjArLTAuMjQ1NCAgICAgICAgPwogICBsYXp5LWFycmF5LXNwZWNpZXMtd2F0Y2hw
b2ludHMgICAgICAgICAgICAgICAgICAgICAwLjI0NzIrLTAuMDE3OSAgICAgICAgICAgIDAuMjQz
OSstMC4wMDg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMnggZmFzdGVyCiAgIGxpY20tZHJhZ29u
cy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQ2OSstMC4wMTIzICAg
ICAgICAgICAgMC4yMzU1Ky0wLjAxMTYgICAgICAgICAgbWlnaHQgYmUgMS4wNDgxeCBmYXN0ZXIK
ICAgbGljbS1kcmFnb25zLW92ZXJmbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
MjQzKy0wLjAwODIgICAgID8gICAgICAwLjIzMjgrLTAuMDExNSAgICAgICAgPyBtaWdodCBiZSAx
LjAzNzl4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIzNzkrLTAuMDA4OCAgICAgPyAgICAgIDAuMjQ2MistMC4wMTQyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDM1MHggc2xvd2VyCiAgIGxvYWQtdmFyYXJncy1lbGltaW5hdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzMystMC4wMjQ2ICAgICAgICAgICAgMC4yMjAw
Ky0wLjAwOTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTUweCBmYXN0ZXIKICAgbG9jYWxlLWNvbXBh
cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC42MzM4Ky0wLjg0MzUgICAg
ID8gICAgIDMwLjY4NTkrLTAuNTQ0OSAgICAgICAgPwogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBl
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzODYrLTAuMDEwMiAgICAgICAgICAgIDAu
MjI0OCstMC4wMDQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYxNXggZmFzdGVyCiAgIGxvZ2ljYWwt
bm90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE2MSstMC4wMTAw
ICAgICA/ICAgICAgMC4yMjE0Ky0wLjAxMzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ5eCBzbG93
ZXIKICAgbG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ny42MDQ5Ky0wLjI2MjIgICAgID8gICAgIDE3LjYyNDYrLTAuMjY2NCAgICAgICAgPwogICBtYWtl
LWluZGV4ZWQtc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc4NjcrLTAu
MTc0OCAgICAgICAgICAgIDQuNzU0NystMC4xNDMyICAgICAgICAKICAgbWFrZS1yb3BlLWNzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS41ODA0Ky0wLjMzNDAgICAgICAg
ICAgIDE5LjM1NDUrLTAuMjUxNyAgICAgICAgICBtaWdodCBiZSAxLjAxMTd4IGZhc3RlcgogICBt
YW55LWZvcmVhY2gtY2FsbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg4NjMr
LTAuMDU5NSAgICAgPyAgICAgIDMuOTMyMSstMC4wNjQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEx
OHggc2xvd2VyCiAgIG1hbnktcmVwZWF0LXN0b3JlcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjAuMzE3NistMC4yMjc5ICAgICA/ICAgICAyMC4zODQ1Ky0wLjI5NTcgICAgICAgID8K
ICAgbWFwLWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS45
NzUwKy0wLjA5NzUgICAgID8gICAgICA2LjA3NDQrLTAuMTIwNSAgICAgICAgPyBtaWdodCBiZSAx
LjAxNjZ4IHNsb3dlcgogICBtYXAtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDI2LjM5NDgrLTAuODE0OSAgICAgPyAgICAgMjYuNzI2MystMC4zNDI1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIG1hcnNhZ2xpYS1sYXJnZXItaW50cyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNzcuMjEwNystMS42Njk1ICAgICA/ICAgICA3Ny4yNjU0
Ky0xLjQyMjcgICAgICAgID8KICAgbWFyc2FnbGlhLW9zci1lbnRyeSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMC41ODg2Ky0wLjMwNDAgICAgICAgICAgIDIwLjQzODkrLTAuMTMwNCAg
ICAgICAgCiAgIG1hdGgtcmFuZG9tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjI2NSstMC4wMjAwICAgICAgICAgICAgMC4yMjI1Ky0wLjAwODggICAgICAgICAgbWln
aHQgYmUgMS4wMTc5eCBmYXN0ZXIKICAgbWF0aC10cnVuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMzI4Ky0wLjAxMjAgICAgID8gICAgICAwLjIzNDkrLTAuMDE1
MiAgICAgICAgPwogICBtYXRoLXdpdGgtb3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAg
ICAgICAgICAwLjIyMzYrLTAuMDEzMCAgICAgPyAgICAgIDAuMjMwMSstMC4wMTUxICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI5NHggc2xvd2VyCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuODM2NistMC4wNjY1ICAgICAgICAgICAgMi43NjUwKy0w
LjA0ODAgICAgICAgICAgbWlnaHQgYmUgMS4wMjU5eCBmYXN0ZXIKICAgbWVnYW1vcnBoaWMtbG9h
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS4zODI5Ky0wLjYyMTUgICAgICAg
ICAgIDM1LjA0MzgrLTAuNTQyMyAgICAgICAgCiAgIG1ldGhvZC1vbi1udW1iZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTkuNDUxOCstMC43NTA5ICAgICA/ICAgICAxOS45MDQ4
Ky0wLjExNDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjMzeCBzbG93ZXIKICAgbWluLWJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44MDczKy0wLjA0MjcgICAg
ICAgICAgICAyLjc2MzYrLTAuMDUwMiAgICAgICAgICBtaWdodCBiZSAxLjAxNTh4IGZhc3Rlcgog
ICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcy
MjArLTAuMDQ5OCAgICAgPyAgICAgIDIuODA4OCstMC4wNDg5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDMxOXggc2xvd2VyCiAgIG1pbnVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNTM0MystMC4wNDY4ICAgICA/ICAgICAgMi41ODkxKy0wLjA2MTAgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjE2eCBzbG93ZXIKICAgbWlzYy1idWdzLTg0NzM4OS1qcGVnMjAwMCAg
ICAgICAgICAgICAgICAgICAgICAgNTM2MC40MzE4Ky01Ni4wMDE3ICAgID8gICA1MzgxLjA4MDcr
LTU3Ljc3NDIgICAgICAgPwogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDI2LjIwMDErLTAuOTc1MyAgICAgICAgICAgMjYuMDcwOCstMC45MjEwICAg
ICAgICAKICAgbW9kLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMC4xOTE5Ky0wLjA2NzggICAgID8gICAgIDEwLjI4NjcrLTAuMTQ1NSAgICAgICAgPwogICBt
b2QtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjUzNjMr
LTAuMDkxNCAgICAgICAgICAgIDcuNDMwNystMC4wODgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0
MnggZmFzdGVyCiAgIG11bC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMTcwNystMC4wNTEzICAgICAgICAgICAgMy4xNjM2Ky0wLjA1ODggICAgICAgIAog
ICBtdWwtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg2
NTMrLTAuMDQ0OCAgICAgPyAgICAgIDIuODc5MistMC4wMzk1ICAgICAgICA/CiAgIG5lZy1ib29s
ZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODU0MistMC4wNTUz
ICAgICAgICAgICAgMi44NTQxKy0wLjAzNTYgICAgICAgIAogICBuZWdhdGl2ZS16ZXJvLWRpdmlk
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI5NDcrLTAuMDE0NyAgICAgPyAgICAg
IDAuMzEyMCstMC4wMTI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU4Nnggc2xvd2VyCiAgIG5lZ2F0
aXZlLXplcm8tbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjk3MCstMC4w
MDk2ICAgICA/ICAgICAgMC4zMjAzKy0wLjAxNDIgICAgICAgID8gbWlnaHQgYmUgMS4wNzg1eCBz
bG93ZXIKICAgbmVnYXRpdmUtemVyby1uZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4zMzU5Ky0wLjA0NTEgICAgICAgICAgICAwLjMwODMrLTAuMDI1NiAgICAgICAgICBtaWdo
dCBiZSAxLjA4OTN4IGZhc3RlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQ4Ljk0OTArLTAuNDYwNSAgICAgPyAgICAgNDkuNjkwNystMC41NzE1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1Mnggc2xvd2VyCiAgIG5ldy1hcnJheS1idWZmZXItZGVh
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTguMDI5NistMC45MjkyICAgICA/ICAgICA5
OC42NDc4Ky0xLjY2ODYgICAgICAgID8KICAgbmV3LWFycmF5LWJ1ZmZlci1wdXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMi40NTUyKy0wLjI0MDcgICAgICAgICAgIDEyLjIzMDkrLTAu
MTU2NCAgICAgICAgICBtaWdodCBiZSAxLjAxODN4IGZhc3RlcgogICBuZXctYXJyYXktZGVhZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjM3MjUrLTAuMTc0NiAgICAgPyAg
ICAgMTUuMzg0NCstMC4yMjQ4ICAgICAgICA/CiAgIG5ldy1hcnJheS1wdXNoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjQ1MSstMC4yNDY4ICAgICA/ICAgICAgNy4zOTI2
Ky0wLjIyNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMjA0eCBzbG93ZXIKICAgbm8taW5saW5lLWNv
bnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjEyKy0wLjAxMDUgICAg
ID8gICAgICAwLjIzMjcrLTAuMDEzMyAgICAgICAgPyBtaWdodCBiZSAxLjA1MjB4IHNsb3dlcgog
ICBOdW1iZXItaXNOYU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2Ljgw
ODArLTAuNjczMCAgICAgICAgICAgMTYuNjI4MCstMC42MDM2ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwOHggZmFzdGVyCiAgIG51bWJlci10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMzg3NCstMC4wNDc3ICAgICAgICAgICAgMy4zNzA2Ky0wLjA0OTUgICAgICAg
IAogICBvYmplY3QtYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
Ljc2ODQrLTAuMDczMyAgICAgPyAgICAgIDUuNzc1NistMC4wNTkxICAgICAgICA/CiAgIG9iamVj
dC1jbG9zdXJlLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjE4NSstMC4x
NzAzICAgICAgICAgICAgNi4xNTc1Ky0wLjEzMzMgICAgICAgIAogICBvYmplY3QtZ2V0LW93bi1w
cm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjQ1OSstMC4xNjU4ICAgICAgICAgICAg
NS41MzI3Ky0wLjE3OTAgICAgICAgICAgbWlnaHQgYmUgMS4wMjA1eCBmYXN0ZXIKICAgb2JqZWN0
LWludC1hZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS44MDgzKy0wLjE4
MDUgICAgID8gICAgIDE1LjkwMTgrLTAuMTQ4MSAgICAgICAgPwogICBvYmplY3QtaW50LWFkZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjQzNzErLTAuMTk1OCAgICAgICAg
ICAgMTguMjY0NistMC4xMjEyICAgICAgICAKICAgb2JqZWN0LWludC1hbmQtYXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNS44MjY1Ky0wLjEyMzEgICAgID8gICAgIDE1Ljg1MDAr
LTAuMTY5MCAgICAgICAgPwogICBvYmplY3QtaW50LW11bC1hcnJheSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE1Ljg0NjkrLTAuMTY0MiAgICAgPyAgICAgMTUuODcxOCstMC4wODgxICAg
ICAgICA/CiAgIG9iamVjdC1pbnQtc3ViLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTIuODk2MCstMC4xMTc4ICAgICA/ICAgICAxMi45OTExKy0wLjEyMDggICAgICAgID8KICAg
b2JqZWN0LWludC1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC4zNTky
Ky0wLjIxMTcgICAgID8gICAgIDE4LjUxNzArLTAuMTk2NyAgICAgICAgPwogICBvYmplY3QtbHNo
aWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc5MjUrLTAuMDYwNCAg
ICAgICAgICAgIDUuNzY1MistMC4wNTkzICAgICAgICAKICAgb2JqZWN0LW9yICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43MTc0Ky0wLjA1MjcgICAgICAgICAgICA1
LjcxNTcrLTAuMDYxMyAgICAgICAgCiAgIG9iamVjdC1yc2hpZnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuNzYzNSstMC4wNjc1ICAgICA/ICAgICAgNS43NjQ2Ky0wLjA5
MTQgICAgICAgID8KICAgb2JqZWN0LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy4wNjkwKy0wLjA2MTYgICAgID8gICAgICAzLjA5NzErLTAuMDgzMyAgICAgICAg
PwogICBvYmplY3QtdXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
Ljc4MzkrLTAuMDkyNiAgICAgPyAgICAgIDUuODgxMistMC4xMTkwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE2OHggc2xvd2VyCiAgIG9iamVjdC14b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuNzEzMCstMC4wNTAxICAgICA/ICAgICAgNS43MzY1Ky0wLjA2NzIgICAg
ICAgID8KICAgb2J2aW91cy1zaW5rLXBhdGhvbG9neS10YWtlbiAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMjAxKy0wLjAwNzkgICAgID8gICAgICAwLjIyMjArLTAuMDA4MiAgICAgICAgPwogICBv
YnZpb3VzLXNpbmstcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyODEr
LTAuMDEyNCAgICAgICAgICAgIDAuMjE4MistMC4wMTE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1
M3ggZmFzdGVyCiAgIG9idmlvdXNseS1lbGlkYWJsZS1uZXctb2JqZWN0ICAgICAgICAgICAgICAg
ICAgICAgMjYuNDA4OCstMC40MTU3ICAgICA/ICAgICAyNi40NzE1Ky0wLjM5MjAgICAgICAgID8K
ICAgcGx1cy1ib29sZWFuLWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43
MDg1Ky0wLjA3MjkgICAgICAgICAgICAyLjY0NTErLTAuMDQ2MSAgICAgICAgICBtaWdodCBiZSAx
LjAyNDB4IGZhc3RlcgogICBwbHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjc0MzkrLTAuMDYyOCAgICAgPyAgICAgIDIuODA2OSstMC4wNTMwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDIyOXggc2xvd2VyCiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTkzNCstMC4wNDkyICAgICAgICAgICAgMi41NDE5
Ky0wLjA0MDkgICAgICAgICAgbWlnaHQgYmUgMS4wMjAzeCBmYXN0ZXIKICAgcG9seS1jaGFpbi1h
Y2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTI5MCstMC4wNjk5ICAgICA/ICAg
ICAgMi45NTk2Ky0wLjA0ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMTA1eCBzbG93ZXIKICAgcG9s
eS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMgICAgICAgICAgICAgMy4wMDkwKy0w
LjA0MzcgICAgICAgICAgICAyLjk4NDYrLTAuMDcwMSAgICAgICAgCiAgIHBvbHktY2hhaW4tYWNj
ZXNzLXNpbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTIyMCstMC4wNDgyICAgICAg
ICAgICAgMi45MDExKy0wLjA1MDQgICAgICAgIAogICBwb2x5LWNoYWluLWFjY2VzcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg4NDcrLTAuMDU3MCAgICAgPyAgICAgIDIuOTEx
MystMC4wNTY2ICAgICAgICA/CiAgIHBvbHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjUuNTA1NystMS4xNDU2ICAgICAgICAgICA2NC44NzUwKy0wLjYxOTUg
ICAgICAgIAogICBwb2x5bW9ycGhpYy1hcnJheS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjA0NzIrLTAuMTA0NyAgICAgPyAgICAgIDIuMDUzOCstMC4wNzg0ICAgICAgICA/CiAg
IHBvbHltb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI0
OSstMC4wMTAwICAgICA/ICAgICAgMC4yMjk3Ky0wLjAxNDkgICAgICAgID8gbWlnaHQgYmUgMS4w
MjE1eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtcHV0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yNDM0Ky0wLjAxNDUgICAgICAgICAgICAwLjI0MDErLTAuMDE2OSAgICAgICAg
ICBtaWdodCBiZSAxLjAxMzR4IGZhc3RlcgogICBwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgt
c3RyaW5nICAgICAgICAgICAgICAgICAwLjIzODYrLTAuMDE1MyAgICAgICAgICAgIDAuMjI5OCst
MC4wMDc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4NnggZmFzdGVyCiAgIHBvbHltb3JwaGljLXB1
dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgICAgIDAuMjUxMistMC4wMTMwICAgICA/
ICAgICAgMC4yNTEyKy0wLjAxMjQgICAgICAgID8KICAgcG9seW1vcnBoaWMtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNS41OTg3Ky0wLjE3NzMgICAgICAgICAgIDE1LjUy
NTArLTAuMjA3MSAgICAgICAgCiAgIHBvbHl2YXJpYW50LW1vbm9tb3JwaGljLWdldC1ieS1pZCAg
ICAgICAgICAgICAgICAgIDUuMDAyMSstMC4wODAyICAgICAgICAgICAgNC45ODUwKy0wLjA3NzMg
ICAgICAgIAogICBwcmV2ZW50LWV4dGVuc2lvbnMtYW5kLWRvLXdvcmsgICAgICAgICAgICAgICAg
ICAgIDE2LjU4MDArLTAuMTg3MSAgICAgPyAgICAgMTYuNjkyMCstMC4xNzY2ICAgICAgICA/CiAg
IHByb3RvLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMw
OSstMC4wMDg0ICAgICA/ICAgICAgMC4yMzM5Ky0wLjAxMzggICAgICAgID8gbWlnaHQgYmUgMS4w
MTMyeCBzbG93ZXIKICAgcHJvdG90eXBlLWFjY2Vzcy13aXRoLW11dGF0aW5nLXByb3RvdHlwZSAg
ICAgICAgICAgMC4yMzc5Ky0wLjAzODUgICAgICAgICAgICAwLjIyNjQrLTAuMDEzNCAgICAgICAg
ICBtaWdodCBiZSAxLjA1MDh4IGZhc3RlcgogICBwdXQtYnktaWQtcmVwbGFjZS1hbmQtdHJhbnNp
dGlvbiAgICAgICAgICAgICAgICAgIDEwLjAxODYrLTAuMTQwMCAgICAgICAgICAgIDkuOTY4Mist
MC4xMjUwICAgICAgICAKICAgcHV0LWJ5LWlkLXNsaWdodGx5LXBvbHltb3JwaGljICAgICAgICAg
ICAgICAgICAgICAgMi45MDY0Ky0wLjA1MzggICAgICAgICAgICAyLjg5MzcrLTAuMDc1NiAgICAg
ICAgCiAgIHB1dC1ieS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVhZGVyICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuODI0OSst
MC4zMTU3ICAgICA/ICAgICAxNy4wODIxKy0wLjI4MTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTUz
eCBzbG93ZXIKICAgcHV0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMy42MDcwKy0wLjIxNzUgICAgID8gICAgIDEzLjYxMDQrLTAuMTg0NiAgICAgICAgPwog
ICBwdXQtYnktdmFsLWRpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMx
MjcrLTAuMDI3NCAgICAgICAgICAgIDAuMjkzOSstMC4wMTgzICAgICAgICAgIG1pZ2h0IGJlIDEu
MDY0MHggZmFzdGVyCiAgIHB1dC1ieS12YWwtbGFyZ2UtaW5kZXgtYmxhbmstaW5kZXhpbmctdHlw
ZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE0LjE0MjkrLTAuMjM5MiAgICAgICAgICAgMTQuMDMxOCstMC4xNzI5ICAgICAgICAKICAgcHV0
LWJ5LXZhbC1tYWNoaW5lLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNTQ2Ky0w
LjAxMDUgICAgID8gICAgICAwLjI2NzcrLTAuMDE0NiAgICAgICAgPyBtaWdodCBiZSAxLjA1MTN4
IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24g
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NC43Mzg4Ky0wLjE4ODMgICAgICAgICAgIDE0LjYwNjcrLTAuMTU4NiAgICAgICAgCiAgIHB1dC1i
eS12YWwtd2l0aC1zdHJpbmctc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43OTc5Ky0wLjAzMDcgICAg
ID8gICAgICAzLjgyNzQrLTAuMDczMyAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjEyNTkrLTAuMjI3MiAgICAgICAgICAgMTQu
MDIxMystMC4yNjg3ICAgICAgICAKICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC1yZXBsYWNlLWFu
ZC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTMuNjYwNSstMC4xMTgwICAgICAhICAgICAxMy45NDg4Ky0wLjE1NTMgICAg
ICAgICEgZGVmaW5pdGVseSAxLjAyMTF4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9s
LXNsaWdodGx5LXBvbHltb3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuMDgxNystMC4wNjI3ICAgICA/ICAgICAgMy4xMDY0Ky0w
LjA1NDkgICAgICAgID8KICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNC4wODU2Ky0wLjE3NjMgICAgID8gICAgIDE0LjIwNjIrLTAuMjkyNyAgICAg
ICAgPwogICByYXJlLW9zci1leGl0LW9uLWxvY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE0LjUwOTcrLTAuMTU5NyAgICAgPyAgICAgMTQuNjAyNystMC4yMDUyICAgICAgICA/CiAgIHJh
eXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgIDcuMjQ0NSst
MC4yMzQzICAgICAgICAgICAgNy4wOTg1Ky0wLjEyODkgICAgICAgICAgbWlnaHQgYmUgMS4wMjA2
eCBmYXN0ZXIKICAgcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yNjE0Ky0wLjAwOTUgICAgID8gICAgICAwLjI2NTArLTAuMDE3NyAgICAgICAgPyBt
aWdodCBiZSAxLjAxNDB4IHNsb3dlcgogICByZWdleHAtZXhlYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ0LjIzNTkrLTAuNTM0NyAgICAgPyAgICAgNDQuNTE2MCstMC44
MDM2ICAgICAgICA/CiAgIHJlZ2V4cC1sYXN0LWluZGV4ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTcuNzUzMistMC4xODQwICAgICAgICAgICAxNy43NDQ4Ky0wLjE3OTMgICAgICAg
IAogICByZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAw
LjM1NzQrLTAuMDIwNCAgICAgPyAgICAgIDAuMzU4MCstMC4wMTcxICAgICAgICA/CiAgIHJlZ2V4
cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDg0MSstMC4wMzMy
ICAgICA/ICAgICAgMS4xMjkyKy0wLjA3MzAgICAgICAgID8gbWlnaHQgYmUgMS4wNDE2eCBzbG93
ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MjI4OSstMC4wMTQ3ICAgICAgICAgICAgMC4yMjQ1Ky0wLjAwNjcgICAgICAgICAgbWlnaHQgYmUg
MS4wMTk1eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjQzNjErLTAuMDMzMiAgICAgPyAgICAgIDIuNDg0NystMC4wNjMyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE5OXggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjcyNistMC4wMjEyICAgICA/ICAgICAgMC4yNzM4Ky0wLjAx
MjEgICAgICAgID8KICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4zMjUzKy0wLjAzMzAgICAgICAgICAgICAwLjMwNzArLTAuMDEwOCAgICAg
ICAgICBtaWdodCBiZSAxLjA1OTh4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzE3Ky0wLjAyODMgICAgICAgICAgICAw
LjMyNjcrLTAuMDEwMSAgICAgICAgICBtaWdodCBiZSAxLjAxNTN4IGZhc3RlcgogICByZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzI1
NCstMC4wMTc4ICAgICAgICAgICAgMC4zMTM5Ky0wLjAxMTUgICAgICAgICAgbWlnaHQgYmUgMS4w
MzY3eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMzE4NistMC4wMTUwICAgICAgICAgICAgMC4zMDg5Ky0wLjAxMjEg
ICAgICAgICAgbWlnaHQgYmUgMS4wMzE0eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzEzOSstMC4wMTEwICAgICA/ICAg
ICAgMC4zMjQwKy0wLjAyMjMgICAgICAgID8gbWlnaHQgYmUgMS4wMzI0eCBzbG93ZXIKICAgcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMx
ODYrLTAuMDEyMCAgICAgPyAgICAgIDAuMzIyMSstMC4wMjI2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMzMxMistMC4wMTQ1ICAgICA/ICAgICAgMC4zMzI4Ky0wLjAyMzQgICAgICAgID8K
ICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuOTk2OSst
MC4wMzU2ICAgICA/ICAgICAgMS4wMTYxKy0wLjAyODEgICAgICAgID8gbWlnaHQgYmUgMS4wMTkz
eCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
MiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjI0NTQrLTAuMDEzMSAgICAgICAgICAgIDAuMjMyOCstMC4wMDU3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDU0MnggZmFzdGVyCiAgIHJlZ2V4cC1zZXQtbGFzdC1pbmRleCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTcuNDgyOSstMC4yNTU5ICAgICAgICAgICAxNy4yNjY1Ky0wLjIyNTMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgcmVnaXN0ZXItcHJlc3N1cmUtZnJv
bS1vc3IgICAgICAgICAgICAgICAgICAgICAgICAyMi41NTU3Ky0wLjIyNDMgICAgICAgICAgIDIy
LjU0ODQrLTAuMjMzNyAgICAgICAgCiAgIHJlcGVhdC1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjEzMCstMC4wMTAyICAgICAgICAgICAgMC4yMTIyKy0wLjAw
OTMgICAgICAgIAogICByZXN0LXBhcmFtZXRlci1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAg
ICAgICAgICAwLjIyMjIrLTAuMDA5MyAgICAgPyAgICAgIDAuMjI0MystMC4wMDgwICAgICAgICA/
CiAgIHJpY2hhcmRzLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgNjUu
NTUxMSstMC43MzQxICAgICA/ICAgICA2Ni4zMjUzKy0xLjM4MjkgICAgICAgID8gbWlnaHQgYmUg
MS4wMTE4eCBzbG93ZXIKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yNzU5Ky0wLjAxMzAgICAgICAgICAgICAwLjI2ODArLTAuMDA2MSAgICAg
ICAgICBtaWdodCBiZSAxLjAyOTJ4IGZhc3RlcgogICBzY29wZWQtYXJndW1lbnRzLWxlbmd0aCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA4OTErLTAuMDgxMiAgICAgICAgICAgIDguMDI4
MSstMC4wODU2ICAgICAgICAKICAgc2NvcGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aCAg
ICAgICAgICAgICAgICAgNy45NDQ1Ky0wLjA4MDIgICAgID8gICAgICA3Ljk0NzgrLTAuMTIxMCAg
ICAgICAgPwogICBzY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgu
NzQ0NSstMC4wOTgxICAgICA/ICAgICAgOC44MjU5Ky0wLjE0NjYgICAgICAgID8KICAgc2VhbC1h
bmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi41NjA2Ky0wLjIy
MTcgICAgID8gICAgIDE2LjYzNDYrLTAuMTMyMiAgICAgICAgPwogICBzZXQtZm9yLWVhY2ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk5NTYrLTAuMDcwMyAgICAgXiAg
ICAgIDQuODI1OSstMC4wNzc0ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMzUxeCBmYXN0ZXIKICAg
c2V0LWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS41NDkx
Ky0wLjE1MDQgICAgID8gICAgIDE1LjU2MjMrLTAuMjQzMCAgICAgICAgPwogICBzZXR0ZXItcHJv
dG90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzOTcrLTAuMDE1NiAg
ICAgPyAgICAgIDAuMjQ2NCstMC4wMTgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3OXggc2xvd2Vy
CiAgIHNldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
ODk4OCstMC4wNjQ4ICAgICA/ICAgICAgMy45MTI5Ky0wLjA4OTUgICAgICAgID8KICAgc2ltcGxl
LWFjdGl2YXRpb24tZGVtbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi44NTczKy0wLjQ0
NzQgICAgICAgICAgIDI2Ljc0MTkrLTAuMjE4NyAgICAgICAgCiAgIHNpbXBsZS1nZXR0ZXItYWNj
ZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5NystMC4wMTAyICAgICA/ICAg
ICAgMC4yNDE5Ky0wLjAyOTEgICAgICAgID8gbWlnaHQgYmUgMS4wNTM1eCBzbG93ZXIKICAgc2lt
cGxlLXBvbHktY2FsbC1uZXN0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44NzM5Ky0w
LjA5NjAgICAgICAgICAgICA0Ljg1NTErLTAuMDk4MCAgICAgICAgCiAgIHNpbXBsZS1wb2x5LWNh
bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTYyMistMC4wMzc4ICAgICAg
ICAgICAgMS41MjM3Ky0wLjA0ODAgICAgICAgICAgbWlnaHQgYmUgMS4wMjUyeCBmYXN0ZXIKICAg
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAgNi40NTA2
Ky0wLjE5NDEgICAgICAgICAgICA2LjMyMzErLTAuMDk2NSAgICAgICAgICBtaWdodCBiZSAxLjAy
MDJ4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZyAgICAgICAgICAgICAgICAg
ICAgICAgIDIzLjAwNDcrLTAuNDY5MyAgICAgICAgICAgMjIuNTg0NCstMC4zODAxICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE4NnggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZh
aWwtd2l0aC1ob2lzdGVkLXJlZ2V4cCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEyLjAxMjQrLTAuMjA1MCAgICAgICAgICAgMTEuNjAwMyst
MC4yODUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NXggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwgICAgICAgICAgICAgICAgICAgMTkuNTU0OSstMC4yNzcxICAgICAg
ICAgICAxOS4zMzg4Ky0wLjI5MzAgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAg
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctd2l0aC1ob2lzdGVkLXJlZ2V4cCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjMwNjgrLTAu
MDkzNSAgICAgICAgICAgMTIuMTM5NCstMC4wOTE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHgg
ZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nICAgICAgICAgICAgICAgICAgICAg
ICAgMjAuOTE3MystMC4xODUyICAgICAgICAgICAyMC42OTQ2Ky0wLjM2MjkgICAgICAgICAgbWln
aHQgYmUgMS4wMTA4eCBmYXN0ZXIKICAgc2luLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy45MzE5Ky0wLjE4NzQgICAgICAgICAgICA3Ljc2NDYrLTAuMDgz
NCAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZhc3RlcgogICBzaW5nbGV0b24tc2NvcGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxODQrLTAuMDEwMCAgICAgPyAgICAg
IDAuMjI3MystMC4wMTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxMXggc2xvd2VyCiAgIHNpbmst
ZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzOCstMC4w
MTA5ICAgICA/ICAgICAgMC4yMjc1Ky0wLjAxNDYgICAgICAgID8gbWlnaHQgYmUgMS4wMTY1eCBz
bG93ZXIKICAgc2luay1odWdlLWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMzY5Ky0wLjAxNTQgICAgICAgICAgICAwLjIyNTQrLTAuMDA5MyAgICAgICAgICBtaWdo
dCBiZSAxLjA1MTJ4IGZhc3RlcgogICBzaW5rYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIyNDArLTAuMDA5MiAgICAgPyAgICAgIDAuMjI4MSstMC4wMTE2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4M3ggc2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3Qt
dGFrZW4gICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMwNystMC4wMTkyICAgICAgICAgICAg
MC4yMjU0Ky0wLjAxMDUgICAgICAgICAgbWlnaHQgYmUgMS4wMjMzeCBmYXN0ZXIKICAgc2lua2Fi
bGUtbmV3LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTU4Ky0wLjAw
ODUgICAgID8gICAgICAwLjIyNjMrLTAuMDE4OSAgICAgICAgPyBtaWdodCBiZSAxLjA0ODV4IHNs
b3dlcgogICBzbG93LWFycmF5LXByb2ZpbGUtY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAg
ICAzLjY1MTcrLTAuMDc4OCAgICAgPyAgICAgIDMuNjc4MystMC4wODMwICAgICAgICA/CiAgIHNs
b3ctY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTU3OCst
MC4wNDI4ICAgICAgICAgICAgMy4xNTQ1Ky0wLjA0MzUgICAgICAgIAogICBzbG93LXRlcm5hcmll
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjk1MjcrLTAuMjM3NCAgICAg
ICAgICAgMjEuNjg3MystMC4yMjQxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMnggZmFzdGVyCiAg
IHNvcnRpbmctYmVuY2htYXJrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuNDEw
NistMC41Nzg4ICAgICA/ICAgICAyNC40ODE0Ky0wLjY1NzMgICAgICAgID8KICAgc3BhcnNlLWNv
bmRpdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zNTkxKy0wLjA0MDgg
ICAgICAgICAgICAxLjM0MjArLTAuMDI1MCAgICAgICAgICBtaWdodCBiZSAxLjAxMjd4IGZhc3Rl
cgogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIx
LjUwNzgrLTAuMTg0MyAgICAgICAgICAgMjEuMjQzOSstMC4wOTY1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEyNHggZmFzdGVyCiAgIHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMjIzMCstMC4wMDk5ICAgICA/ICAgICAgMC4yMjk5Ky0wLjAxNzkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzA5eCBzbG93ZXIKICAgc3RyY2F0LWxlbmd0aC1jb25zdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzY2Ky0wLjA0NDYgICAgICAgICAgICAwLjIy
MzkrLTAuMDA3MiAgICAgICAgICBtaWdodCBiZSAxLjA1NzB4IGZhc3RlcgogICBzdHJpY3Qtb3Ny
LWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjM4MTArLTAuMTcyMCAg
ICAgICAgICAgMTQuMjYwMCstMC4xMTQyICAgICAgICAKICAgc3RyaW5nLWNoYXItY29kZS1hdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy41MzE4Ky0wLjE0NjcgICAgICAgICAgIDE3
LjQzMzErLTAuMTU1MiAgICAgICAgCiAgIHN0cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuMTc1NSstMC4xMTU1ICAgICA/ICAgICAgNi4zMTY2Ky0wLjMw
NzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjI4eCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1wYWly
LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgNi4wMDIxKy0wLjE0NjUgICAgID8gICAg
ICA2LjI2NTArLTAuMjAwNSAgICAgICAgPyBtaWdodCBiZSAxLjA0Mzh4IHNsb3dlcgogICBzdHJp
bmctY29uY2F0LXBhaXItc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc5ODgrLTAu
MDg4NiAgICAgICAgICAgIDMuNzIwNCstMC4wNDkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXgg
ZmFzdGVyCiAgIHN0cmluZy1jb25jYXQtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTMuMzcwNistMC4xODI1ICAgICA/ICAgICAxMy43NDEwKy0wLjIxOTMgICAgICAgID8gbWln
aHQgYmUgMS4wMjc3eCBzbG93ZXIKICAgc3RyaW5nLWNvbnMtcmVwZWF0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMS4zMTUwKy0wLjA3MTIgICAgICAgICAgIDExLjIwNTArLTAuMjM1
NyAgICAgICAgCiAgIHN0cmluZy1jb25zLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTEuNTcwNistMC4xMjYyICAgICAgICAgICAxMS41NjQ0Ky0wLjA5MDQgICAgICAgIAog
ICBzdHJpbmctZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5Ljk5
NjErLTAuMjM3OSAgICAgPyAgICAgMjAuMDQ2MystMC4yMTY4ICAgICAgICA/CiAgIHN0cmluZy1m
cm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNzEyMSstMC4xOTg5
ICAgICAgICAgICAxMC42MDQxKy0wLjE4NTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTAyeCBmYXN0
ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAg
Ni4zMzM0Ky0wLjExMjQgICAgICAgICAgICA2LjI5MDUrLTAuMDc1MiAgICAgICAgCiAgIHN0cmlu
Zy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMtaW5zYW5lICAgICAgICAgICAgIDQuOTUwMSstMC4x
MTA2ICAgICBeICAgICAgNC42ODE5Ky0wLjA3NzYgICAgICAgIF4gZGVmaW5pdGVseSAxLjA1NzN4
IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAg
ICAgICA1LjY1MTcrLTAuMTAzMSAgICAgICAgICAgIDUuNjM4NCstMC4wODAzICAgICAgICAKICAg
c3RyaW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NTgz
Ky0wLjA0MjYgICAgID8gICAgICAyLjY4ODcrLTAuMDM1MiAgICAgICAgPyBtaWdodCBiZSAxLjAx
MTR4IHNsb3dlcgogICBzdHJpbmctaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjI2MzQrLTAuMDYxNCAgICAgICAgICAgIDIuMjMxOSstMC4wNTM1ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE0MXggZmFzdGVyCiAgIHN0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5ICAg
ICAgICAgICAgICAgICAgICAgICAgMTYuNjA4MCstMC4wODM3ICAgICAgICAgICAxNi41Njg1Ky0w
LjA3MzIgICAgICAgIAogICBzdHJpbmctb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIxMTQrLTAuMDA4OSAgICAgPyAgICAgIDAuMjIwOCstMC4wMDc4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQ0N3ggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuMzQ2NCstMC4wNDkyICAgICA/ICAgICAgMS4zODYyKy0w
LjAzNDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjk2eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlw
ZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMzMSstMC4wMTA2ICAgICA/ICAg
ICAgMC4yMzUwKy0wLjAwNjggICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjM0MCstMC4wMTEyICAgICAgICAgICAgMC4yMzQwKy0w
LjAxMjIgICAgICAgIAogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yMzM1Ky0wLjAxNzAgICAgICAgICAgICAwLjIyNDMrLTAuMDE5MyAgICAgICAg
ICBtaWdodCBiZSAxLjA0MTF4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuODA4NistMC4wNjcwICAgICA/ICAgICAgMi44MTIyKy0wLjA4
MjQgICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yODE4Ky0wLjAxMjMgICAgID8gICAgICAwLjI4ODQrLTAuMDMwOSAgICAgICAgPyBt
aWdodCBiZSAxLjAyMzV4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjMzMTYrLTAuMDMwMiAgICAgICAgICAgIDAuMzEwNCst
MC4wMDgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4NXggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM0MDArLTAuMDM4NiAg
ICAgICAgICAgIDAuMzIzOSstMC4wMTEzICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ5N3ggZmFzdGVy
CiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9y
ZUNhc2UgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4zMzMwKy0wLjAxMTkgICAgID8gICAgICAwLjM0NDErLTAuMDI3MiAgICAgICAgPyBt
aWdodCBiZSAxLjAzMzJ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNzgyKy0wLjA1NjAgICAgICAgICAgICAwLjMz
NDgrLTAuMDE1MyAgICAgICAgICBtaWdodCBiZSAxLjEyOTh4IGZhc3RlcgogICBzdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNDA0Ky0wLjAy
ODkgICAgICAgICAgICAwLjMzMzcrLTAuMDI3OSAgICAgICAgICBtaWdodCBiZSAxLjAyMDF4IGZh
c3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11
bmljb2RlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMzQ0MystMC4wMjA0ICAgICA/ICAgICAgMC4zNTE1Ky0wLjAzMzQgICAgICAgID8g
bWlnaHQgYmUgMS4wMjA5eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4zMzY5Ky0wLjAxODQgICAgICAgICAgICAwLjMyNjIrLTAuMDA5
NSAgICAgICAgICBtaWdodCBiZSAxLjAzMjl4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LWFyaXRo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjA3NjQrLTAuMzc5MiAgICAgICAgICAg
MjYuNjgyMistMC40MjQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0OHggZmFzdGVyCiAgIHN0cmlu
Zy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDUuODcwNSstMC4x
OTY5ICAgICAgICAgICAgNS44MzU3Ky0wLjA3MTcgICAgICAgIAogICBzdHJpbmctcmVwZWF0LW5v
dC1yZXNvbHZpbmctbm8taW5saW5lICAgICAgICAgICAgICAwLjIyMjgrLTAuMDEzOCAgICAgICAg
ICAgIDAuMjEyMCstMC4wMDgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxMXggZmFzdGVyCiAgIHN0
cmluZy1yZXBlYXQtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgICAgIDguOTc2OSst
MC4yNTY0ICAgICA/ICAgICAgOS4wMzE3Ky0wLjE4NTEgICAgICAgID8KICAgc3RyaW5nLXJlcGVh
dC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAgICAgICAgICAzMy4wNDAwKy0wLjQ4OTIgICAg
ID8gICAgIDMzLjEwODUrLTAuNTczMiAgICAgICAgPwogICBzdHJpbmctcmVwZWF0LXJlc29sdmlu
Zy1uby1pbmxpbmUgICAgICAgICAgICAgICAgICAwLjIzODIrLTAuMDEzMSAgICAgICAgICAgIDAu
MjI4NSstMC4wMTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyNXggZmFzdGVyCiAgIHN0cmluZy1y
ZXBlYXQtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkuNzE2OCstMC42NDk1
ICAgICA/ICAgICAzOS44MTgzKy0wLjM3NzggICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1zaW5n
bGUtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgOS40NDQzKy0wLjE5NTUgICAgICAgICAg
ICA5LjE3MTUrLTAuMjIwMCAgICAgICAgICBtaWdodCBiZSAxLjAyOTd4IGZhc3RlcgogICBzdHJp
bmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICA5LjU0MjMrLTAu
MTY1NyAgICAgPyAgICAgIDkuNTc4NystMC4yMTcwICAgICAgICA/CiAgIHN0cmluZy1yZXBlYXQt
c21hbGwtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgIDcuNjA5NistMC4yNDg2ICAgICAg
ICAgICAgNy40NjE4Ky0wLjEwMjEgICAgICAgICAgbWlnaHQgYmUgMS4wMTk4eCBmYXN0ZXIKICAg
c3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAzOS4yNzA0
Ky0wLjQ2MzMgICAgID8gICAgIDM5Ljg1ODUrLTAuNjMxMSAgICAgICAgPyBtaWdodCBiZSAxLjAx
NTB4IHNsb3dlcgogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE4LjY5OTcrLTAuMjA1OCAgICAgPyAgICAgMTguOTIxNCstMC4xNTY1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDExOXggc2xvd2VyCiAgIHN0cmluZy1yZXBsYWNlLWdlbmVyaWMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjYuMTAwOSstMS4wMDIxICAgICA/ICAgICA2Ny44NDcxKy0w
Ljg2MDggICAgICAgID8gbWlnaHQgYmUgMS4wMjY0eCBzbG93ZXIKICAgc3RyaW5nLXJlcGxhY2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4wNDY4Ky0wLjIxNTMgICAgID8g
ICAgIDE5LjA1MTArLTAuMjI3MyAgICAgICAgPwogICBzdHJpbmctcm9wZS13aXRoLW9iamVjdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxNjErLTAuMDA4NiAgICAgPyAgICAgIDAuMjM2
NistMC4wMzg2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk0OXggc2xvd2VyCiAgIHN0cmluZy1zdWIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQuNDcxNSstMC42MzAyICAg
ICA/ICAgICA0NC41MDU1Ky0wLjY5MjEgICAgICAgID8KICAgc3RyaW5nLXRlc3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yODA5Ky0wLjA4NDUgICAgICAgICAgICAz
LjE4MjkrLTAuMDU5NyAgICAgICAgICBtaWdodCBiZSAxLjAzMDh4IGZhc3RlcgogICBzdHJpbmct
dHJhbnNjb2RpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjIyNTUrLTAuNTA1
NiAgICAgICAgICAgMjUuMDU1NistMC40ODQyICAgICAgICAKICAgc3RyaW5nLXZhci1lcXVhbGl0
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy42ODQ5Ky0wLjM5OTEgICAgID8gICAg
IDM3Ljk2MjIrLTAuNDEwNiAgICAgICAgPwogICBzdHJ1Y3R1cmUtaG9pc3Qtb3Zlci10cmFuc2l0
aW9ucyAgICAgICAgICAgICAgICAgICA0LjIxOTArLTAuMDk0MSAgICAgICAgICAgIDQuMjExMyst
MC4xMjMxICAgICAgICAKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0Ny4yNjg4Ky0wLjM2MTcgICAgID8gICAgIDQ3LjM3MjgrLTAuNDAzOSAgICAg
ICAgPwogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQ3LjgxODkrLTAuNTM4OSAgICAgPyAgICAgNDguNTkwMystMC41OTM4ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE2MXggc2xvd2VyCiAgIHN1YnN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTEuOTMzNSstMC41NjA2ICAgICA/ICAgICA1Mi4zOTA3Ky0wLjQ5MTgg
ICAgICAgID8KICAgc3dpdGNoLWNoYXItY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi42NzE3Ky0wLjA2OTUgICAgICAgICAgICAyLjY1NDYrLTAuMDg0NyAgICAgICAgCiAg
IHN3aXRjaC1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzY3
MistMC40Nzk4ICAgICAgICAgICAgNi4yNzAyKy0wLjA0MzYgICAgICAgICAgbWlnaHQgYmUgMS4w
MTU1eCBmYXN0ZXIKICAgc3dpdGNoLWNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC4yMTU3Ky0wLjEyOTggICAgID8gICAgICA4LjI1NzgrLTAuMTUxNyAgICAgICAg
PwogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIgICAgICAgICAgICAgICAgICAgICAgIDE4
LjMxNjUrLTAuMTM5NyAgICAgPyAgICAgMTguMzI3MistMC4yMDk4ICAgICAgICA/CiAgIHN3aXRj
aC1zdHJpbmctYmFzaWMtYmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNjMxOCstMC4y
NDAwICAgICAgICAgICAxNi40NjQ3Ky0wLjEwNjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTAxeCBm
YXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy12YXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxOC4xMDIyKy0wLjA4MjYgICAgICAgICAgIDE4LjA4MTcrLTAuMTU1MyAgICAgICAgCiAgIHN3
aXRjaC1zdHJpbmctYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuMTg2MCst
MC4xNDAwICAgICAgICAgICAxNS4xMDA5Ky0wLjEzODAgICAgICAgIAogICBzd2l0Y2gtc3RyaW5n
LWJpZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgIDIzLjQ0MDMrLTAuNTQxNCAgICAg
ICAgICAgMjMuNDM3NistMC4yNjA5ICAgICAgICAKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93
ZXItdmFyICAgICAgICAgICAgICAgICAgICAxOC43MTYxKy0wLjE1NDEgICAgID8gICAgIDE4Ljc5
MDgrLTAuMjEyMSAgICAgICAgPwogICBzd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlciAgICAgICAg
ICAgICAgICAgICAgICAgIDE0LjQ1ODArLTAuMTE0NiAgICAgPyAgICAgMTQuNjAxNCstMC4wOTE1
ICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctc2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTQuNjkzMCstMC4xODkyICAgICAgICAgICAxNC42MTA3Ky0wLjE3OTMgICAgICAgIAog
ICBzd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjU5
NDIrLTAuNTM3NiAgICAgICAgICAgMTEuNDE0NistMC41MTA1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE1N3ggZmFzdGVyCiAgIHN5bWJvbC10b3N0cmluZ3RhZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMjczMystMC4wMDkxICAgICA/ICAgICAgMC4yNzM0Ky0wLjAxNDIgICAgICAg
ID8KICAgdGVhci1vZmYtYXJndW1lbnRzLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
NS45NjM5Ky0wLjE0MDggICAgICAgICAgICA1Ljg5ODArLTAuMTYwOCAgICAgICAgICBtaWdodCBi
ZSAxLjAxMTJ4IGZhc3RlcgogICB0ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjAyNjIrLTAuMjA3OSAgICAgICAgICAgIDYuOTk2NSstMC4wNzczICAg
ICAgICAKICAgdGVtcG9yYWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMy4yMTE4Ky0wLjI1NjEgICAgID8gICAgIDEzLjQ2MTArLTAuMjA4MSAgICAgICAgPyBtaWdo
dCBiZSAxLjAxODl4IHNsb3dlcgogICB0by1pbnQzMi1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE1Ljc0OTMrLTAuMTQxMyAgICAgICAgICAgMTUuNjY0MCstMC4xMDkw
ICAgICAgICAKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW51bWJlci1zdHJpbmctbnVtYmVyLXN0
cmluZyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0Ljg1NTgrLTAuMDkwNSAgICAgPyAgICAgIDQuOTg2NCstMC4wODQ5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDI2OXggc2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1vbmx5LW51bWJl
ciAgICAgICAgICAgICAgICAgIDAuODMxNSstMC4wMjg5ICAgICBeICAgICAgMC43MjQwKy0wLjA1
MTggICAgICAgIF4gZGVmaW5pdGVseSAxLjE0ODV4IGZhc3RlcgogICB0by1udW1iZXItY29uc3Ry
dWN0b3Itb25seS1zdHJpbmcgICAgICAgICAgICAgICAgICAyLjI4NjErLTAuMDQ3MSAgICAgPyAg
ICAgIDIuMjg3NSstMC4wOTAwICAgICAgICA/CiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1zdHJp
bmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC4yOTQxKy0wLjExODAgICAgICAgICAgICA0LjI4OTIr
LTAuMDg1NSAgICAgICAgCiAgIHRvLW51bWJlci1udW1iZXItc3RyaW5nLW51bWJlci1zdHJpbmcg
ICAgICAgICAgICAgIDQuMzgxMCstMC4xMTMwICAgICA/ICAgICAgNC40MDU2Ky0wLjA2NzggICAg
ICAgID8KICAgdG8tbnVtYmVyLW9ubHktbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC42NDQ1Ky0wLjEwNTcgICAgICAgICAgICAwLjU5NTYrLTAuMTAxNyAgICAgICAgICBtaWdo
dCBiZSAxLjA4MjF4IGZhc3RlcgogICB0by1udW1iZXItb25seS1zdHJpbmcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjIwNjcrLTAuMDk3MSAgICAgPyAgICAgIDIuMjg5OCstMC4wODY5
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM3N3ggc2xvd2VyCiAgIHRvLW51bWJlci1zdHJpbmctbnVt
YmVyLXN0cmluZy1udW1iZXIgICAgICAgICAgICAgIDQuMTY5MistMC4wOTYwICAgICA/ICAgICAg
NC4yNDAzKy0wLjA4OTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTcweCBzbG93ZXIKICAgdHJ5LWNh
dGNoLWdldC1ieS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAgICAgICAgNy4zODE4Ky0wLjQy
MTEgICAgID8gICAgICA4LjE3NDYrLTAuNjcxNSAgICAgICAgPyBtaWdodCBiZSAxLjEwNzR4IHNs
b3dlcgogICB0cnktY2F0Y2gtZ2V0LWJ5LXZhbC1kaXJlY3QtYXJndW1lbnRzICAgICAgICAgICAg
ICA0LjQ3MjYrLTAuMTc2MiAgICAgPyAgICAgIDQuNTM4NCstMC4xNzAyICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE0N3ggc2xvd2VyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLXNjb3BlZC1hcmd1bWVu
dHMgICAgICAgICAgICAgMTAuNTI3OCstMC4xNDE0ICAgICAgICAgICAxMC4zNDMwKy0wLjEzMTYg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTc5eCBmYXN0ZXIKICAgdHJ5LWdldC1ieS1pZC1iYXNpYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNzY1Ky0wLjAxMjYgICAgICAgICAgICAw
LjI2MjArLTAuMDEwMSAgICAgICAgICBtaWdodCBiZSAxLjA1NTN4IGZhc3RlcgogICB0cnktZ2V0
LWJ5LWlkLXBvbHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1NjQrLTAuMDA1
OSAgICAgPyAgICAgIDAuMjYyMystMC4wMDc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOXggc2xv
d2VyCiAgIHR5cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2ZpbGluZyAgICAgICAgICAgICAg
IDAuMjM2NCstMC4wMTU1ICAgICAgICAgICAgMC4yMjk5Ky0wLjAwOTggICAgICAgICAgbWlnaHQg
YmUgMS4wMjgweCBmYXN0ZXIKICAgdHlwZWQtYXJyYXktc3ViYXJyYXkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4yNjQ1Ky0wLjAxODkgICAgID8gICAgICAwLjI3MzArLTAuMDI1MyAg
ICAgICAgPyBtaWdodCBiZSAxLjAzMjF4IHNsb3dlcgogICB1bmRlZmluZWQtcHJvcGVydHktYWNj
ZXNzICAgICAgICAgICAgICAgICAgICAgICAgMzY1LjEyMTkrLTIuNzMzNSAgICAgPyAgICAzNjcu
NTM0MCstNC4xODYzICAgICAgICA/CiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMzA4NistMC4wNjkzICAgICA/ICAgICAgMy40MjA1Ky0wLjA3
MjkgICAgICAgID8gbWlnaHQgYmUgMS4wMzM4eCBzbG93ZXIKICAgdW5wcm9maWxlZC1saWNtICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4zODYyKy0wLjE1NDYgICAgID8gICAg
IDExLjY1NzcrLTAuMTk5NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMzh4IHNsb3dlcgogICB1bnR5
cGVkLXN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgIDExLjkzNjkrLTAu
MTMyMiAgICAgICAgICAgMTEuODU3MCstMC4yMDc5ICAgICAgICAKICAgdjgtcmF5dHJhY2Utd2l0
aC1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICA0NC4xNzE1Ky0wLjczMDQgICAgID8g
ICAgIDQ1LjI2NzkrLTAuNjY4NSAgICAgICAgPyBtaWdodCBiZSAxLjAyNDh4IHNsb3dlcgogICB2
OC1yYXl0cmFjZS13aXRoLXRyeS1jYXRjaC1oaWdoLWZyZXF1ZW5jeS10aHJvd3MgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yOTQ5Ky0w
LjAwODYgICAgICAgICAgICAwLjI5MzQrLTAuMDA5NyAgICAgICAgCiAgIHY4LXJheXRyYWNlLXdp
dGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjk3OCstMC4wMTMzICAgICA/
ICAgICAgMC4zMDgxKy0wLjAxOTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ3eCBzbG93ZXIKICAg
djgtcmVnZXhwLXNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ni40NTQx
Ky0wLjkwNDUgICAgICAgICAgIDc1LjU4ODgrLTAuODE5NCAgICAgICAgICBtaWdodCBiZSAxLjAx
MTR4IGZhc3RlcgogICB2YXJhcmdzLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjIxODgrLTAuMDEyMyAgICAgICAgICAgIDAuMjE2OSstMC4wMTQ4ICAgICAgICAK
ICAgdmFyYXJncy1jb25zdHJ1Y3QtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
MjEwKy0wLjAxMTUgICAgICAgICAgICAwLjIyMDMrLTAuMDA5NSAgICAgICAgCiAgIHZhcmFyZ3Mt
Y29uc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjM2MistMC4wMTQ5
ICAgICAgICAgICAgMC4yMTY4Ky0wLjAxMDkgICAgICAgICAgbWlnaHQgYmUgMS4wODk0eCBmYXN0
ZXIKICAgdmFyYXJncy1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yMjM4Ky0wLjAxMzYgICAgICAgICAgICAwLjIxMDkrLTAuMDA5NiAgICAgICAgICBtaWdodCBi
ZSAxLjA2MTF4IGZhc3RlcgogICB2YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIxNDUrLTAuMDEwNyAgICAgPyAgICAgIDAuMjE1NSstMC4wMTMyICAg
ICAgICA/CiAgIHZhcmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjE1NCstMC4wMDcyICAgICAgICAgICAgMC4yMTAwKy0wLjAwODAgICAgICAgICAgbWln
aHQgYmUgMS4wMjU4eCBmYXN0ZXIKICAgd2VpcmQtaW5saW5pbmctY29uc3QtcHJvcCAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMTQxKy0wLjAxMTggICAgID8gICAgICAwLjIyMDErLTAuMDE3
MSAgICAgICAgPyBtaWdodCBiZSAxLjAyODN4IHNsb3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41OTY3Ky0wLjAwNzQgICAgICAgICAg
ICAzLjU5NDkrLTAuMDA3NSAgICAgICAgICBtaWdodCBiZSAxLjAwMDV4IGZhc3RlcgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
ICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKQXNtQmVuY2g6CiAgIGJpZ2ZpYi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1NDQuMDgzNSstMTAuMTQ4NyAgICA/ICAgIDU1MC4zMjQyKy0xMC4zNDQz
ICAgICAgID8gbWlnaHQgYmUgMS4wMTE1eCBzbG93ZXIKICAgY3JheS5jICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0NS42OTU1Ky01LjM4ODkgICAgICAgICAgNDQ1
LjYwNzMrLTQuMzI0MCAgICAgICAgCiAgIGRyeS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1OTkuNjA1NSstNDcuNjE0OCAgICAgICAgIDU4NC4wNzcwKy0zMi4w
NjIxICAgICAgICAgbWlnaHQgYmUgMS4wMjY2eCBmYXN0ZXIKICAgRmxvYXRNTS5jICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwMy45NDYwKy00LjkyMTMgICAgID8gICAg
ODA0LjY2MDArLTcuNDI5MSAgICAgICAgPwogICBnY2MtbG9vcHMuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0NDk0LjE2NDArLTIzLjYwMTUgICAgPyAgIDQ1MjcuODk1OSst
MjguOTYwNiAgICAgICA/CiAgIG4tYm9keS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwMzMuMDE3NistNS4zODc1ICAgICAgICAgMTAzMC40NjU0Ky0xNy41OTI5ICAg
ICAgIAogICBRdWlja3NvcnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDgyLjEyMzgrLTQuMjk1MSAgICAgPyAgICA0ODYuMDEzNCstNS41OTQzICAgICAgICA/CiAgIHN0
ZXBhbm92X2NvbnRhaW5lci5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2NzguMjM3Myst
MjYuMTczNiAgICAgICAgMzY2NC4wNTkxKy0xOS42OTA3ICAgICAgIAogICBUb3dlcnMuYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk0LjI4NjYrLTIuMDQzMyAgICAg
ICAgICAyOTIuNjk3NSstMS44NDA2ICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4NjguNjM1MistNy43NTY3ICAgICAgICAgIDg2Ny44
ODMxKy01Ljg5ODMgICAgICAgICAgbWlnaHQgYmUgMS4wMDA5eCBmYXN0ZXIKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAg
ICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCkRTUDoKICAgZmlsdHJyLXBvc3Rlcml6ZS10aW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMC4yMjc4Ky0wLjI3MzkgICAgID8gICAgIDMwLjI0MzQrLTAuMzA4MSAgICAgICAgPwog
ICBmaWx0cnItdGludC1jb250cmFzdC1zYXQtYnJpZ2h0ICAgICAgICAgICAgICAgICAgIDQ0LjUy
MDErLTAuNTg1NiAgICAgICAgICAgNDQuMTgzMystMC4yNzMxICAgICAgICAKICAgZmlsdHJyLXRp
bnQtc2F0LWFkai1jb250ci1tdWx0ICAgICAgICAgICAgICAgICAgICA0OS41Mzg0Ky0wLjY0NTMg
ICAgID8gICAgIDQ5LjY3NTMrLTAuNDUzOCAgICAgICAgPwogICBmaWx0cnItYmx1ci1vdmVybGF5
LXNhdC1jb250ciAgICAgICAgICAgICAgICAgICAgMTA5LjE2NDIrLTIuNTA2OSAgICAgICAgICAx
MDcuODc5MSstMS4zNjc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOXggZmFzdGVyCiAgIGZpbHRy
ci1zYXQtYmx1ci1tdWx0LXNoYXJwZW4tY29udHIgICAgICAgICAgICAgICAxMjMuOTM0MistNy41
MzE3ICAgICA/ICAgIDEyNC44NDI4Ky02Ljk3NjcgICAgICAgID8KICAgZmlsdHJyLXNlcGlhLWJp
YXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy43MDMyKy0wLjQ1OTYgICAgID8g
ICAgIDI4LjAzMjErLTAuNjcwMCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTl4IHNsb3dlcgogICBy
b3V0ZTktdnA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg1ICAgICAxNjE4LjA5NTQr
LTY5LjcyNzUgICAgICAgIDE2MDUuMzMyNCstNDAuMzk5MiAgICAgICAKICAgc3RhcmZpZWxkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4NSAgICAgMTMwOS44MTA1Ky0xOC41NzQwICAg
ICAgICAxMzAyLjgzNDMrLTIyLjIyOTggICAgICAgCiAgIGJlbGxhcmQtanNsaW51eCAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDUgICAgIDM2MjYuNjAwMCstMzcuNDc0NSAgICA/ICAgMzYyNy40
MDAwKy0zMC45Mjk0ICAgICAgID8KICAgenluYXBzLXF1YWtlMyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4NSAgICAgIDU3MS41NTg1Ky02LjY5NTYgICAgICAgICAgNTY5LjAzOTcrLTUuNjQ2
NCAgICAgICAgCiAgIHp5bmFwcy1tYW5kZWxicm90ICAgICAgICAgICAgICAgICAgICAgICAgeDUg
ICAgICA0OTguODU3MistNi42Mzg4ICAgICAgICAgIDQ5Ny44MjE5Ky0zLjg3OTcgICAgICAgIAog
ICBhbW1vanMtYXNtLWpzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg1ICAgICAgIDY5LjYy
NDYrLTIuNzY3OSAgICAgPyAgICAgNzAuNDA3NystMS42OTU5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMnggc2xvd2VyCiAgIGFtbW9qcy1yZWd1bGFyLWpzICAgICAgICAgICAgICAgICAgICAgICAg
eDUgICAgICAgNzAuMjE4NSstMS4zNDI0ICAgICAgICAgICA2OS45OTgxKy0xLjU1MDIgICAgICAg
IAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3
NS4wNjIzKy0yLjQyNTcgICAgICAgICAgMzc0LjY0ODErLTEuODE1NSAgICAgICAgICBtaWdodCBi
ZSAxLjAwMTF4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQ29tcHJlc3Npb25CZW5jaDoKICAgaHVm
Zm1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MS4wNzA0Ky0w
LjYzNTUgICAgID8gICAgIDYxLjE2MDIrLTAuMzQzMSAgICAgICAgPwogICBhcml0aG1ldGljLXNp
bXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQzLjM4NjYrLTMuOTg1MCAgICAg
PyAgICAzNDQuNjIxMCstNi4zNzA3ICAgICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyNzkuNjQ3MistMi4xMjM1ICAgICAgICAgIDI3OS40
MzYyKy00LjQxODIgICAgICAgIAogICBhcml0aG1ldGljLWNvbXBsZXgtcHJlY2lzZSAgICAgICAg
ICAgICAgICAgICAgICAgMjc5LjYwODkrLTUuMTcyNiAgICAgICAgICAyNzcuOTMyNistMS40NDQx
ICAgICAgICAKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTAgICAgICAgICAgICAgICAgICAg
ICAgIDM1MC40MDI5Ky0yLjkyMDggICAgICAgICAgMzQ0LjkyMzIrLTIuODk1NiAgICAgICAgICBt
aWdodCBiZSAxLjAxNTl4IGZhc3RlcgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMSAgICAg
ICAgICAgICAgICAgICAgICAgMzM1LjUyODgrLTMuODIxNCAgICAgICAgICAzMzMuNTA1NSstMy4y
ODgwICAgICAgICAKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTIgICAgICAgICAgICAgICAg
ICAgICAgIDM5OC43OTkyKy00Ljc3NzkgICAgICAgICAgMzk4LjExODcrLTMuNzI3MSAgICAgICAg
CiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgICAzOTku
NTQwMystNC42Mzk2ICAgICAgICAgIDM5Ny4xMTIxKy0zLjQzMjEgICAgICAgIAogICBhcml0aG1l
dGljLXNpbXBsZS1vcmRlci0yICAgICAgICAgICAgICAgICAgICAgICAgNDU1LjQzMTMrLTUuNTkw
OCAgICAgICAgICA0NTMuMzA2NCstMy42MDE2ICAgICAgICAKICAgbHotc3RyaW5nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3MS4xOTY4Ky01LjcxMDggICAgICAgICAg
MjcwLjU5ODIrLTMuNTM0OCAgICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjg2Ljk4MjcrLTEuNTQ3MyAgICAgICAgICAyODUuODk4NSst
MS4yODAwICAgICAgICAgIG1pZ2h0IGJlIDEuMDAzOHggZmFzdGVyCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAg
ICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApH
ZW9tZWFuIG9mIHByZWZlcnJlZCBtZWFuczoKICAgPHNjYWxlZC1yZXN1bHQ+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Ny4zNzUxKy0wLjEwNDMgICAgID8gICAgIDU3LjQ5ODAr
LTAuMDg0MSAgICAgICAgPyBtaWdodCBiZSAxLjAwMjF4IHNsb3dlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>287337</attachid>
            <date>2016-08-29 15:18:56 -0700</date>
            <delta_ts>2016-08-29 15:18:56 -0700</delta_ts>
            <desc>x86_64 benchmark result run 2</desc>
            <filename>bench-result-x86_64-2.txt</filename>
            <type>text/plain</type>
            <size>86050</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCAxNSAmJiB0aW1lIC4vVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MgLS1v
dXRlciAxMCBiYXNlOi9Wb2x1bWVzL0RhdGEvd3Mtb2xkL09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQv
UmVsZWFzZS9EdW1wUmVuZGVyVHJlZSBuZXc6L1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9X
ZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5kZXJUcmVlCjEzNDkyLzEzNDkyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKR2VuZXJhdGluZyBiZW5jaG1hcmsgcmVwb3J0IGF0IC9W
b2x1bWVzL0RhdGEvd3M2L0ludGVybmFsL2Jhc2VfbmV3X1N1blNwaWRlckxvbmdTcGlkZXJWOFNw
aWRlck9jdGFuZUtyYWtlbkpTQmVuY2hNaWNyb2JlbmNobWFya3NBc21CZW5jaERTUENvbXByZXNz
aW9uQmVuY2hfZGV1Y2FsaW9uXzIwMTYwODI5XzE0MjJfcmVwb3J0LnR4dApBbmQgcmF3IGRhdGEg
YXQgL1ZvbHVtZXMvRGF0YS93czYvSW50ZXJuYWwvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRl
clY4U3BpZGVyT2N0YW5lS3Jha2VuSlNCZW5jaE1pY3JvYmVuY2htYXJrc0FzbUJlbmNoRFNQQ29t
cHJlc3Npb25CZW5jaF9kZXVjYWxpb25fMjAxNjA4MjlfMTQyMi5qc29uCgpCZW5jaG1hcmsgcmVw
b3J0IGZvciBTdW5TcGlkZXIsIExvbmdTcGlkZXIsIFY4U3BpZGVyLCBPY3RhbmUsIEtyYWtlbiwg
SlNCZW5jaCwgTWljcm9iZW5jaG1hcmtzLCBBc21CZW5jaCwgRFNQLCBhbmQgQ29tcHJlc3Npb25C
ZW5jaCBvbiBkZXVjYWxpb24gKE1hY1BybzYsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1Zv
bHVtZXMvRGF0YS93cy1vbGQvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5k
ZXJUcmVlIChyMjA1MTAzKQoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVuU291cmNlL1dl
YktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUgKHIyMDUxMDMpCgpDb2xsZWN0ZWQgMTAg
c2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDEwIFZNIGludm9jYXRpb25zIHBlciBiZW5j
aG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRz
LgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11
cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1p
Y3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGlt
ZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
ICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjQ1OTErLTAuMTQxNSAgICAgPyAgICAgIDYuNDY4MSstMC4xMDI2
ICAgICAgICA/CiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuNTk1NistMC4xMTc2ICAgICAgICAgICAgNi41OTAxKy0wLjExMDUgICAgICAgIAog
ICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ljg1
NjArLTAuMTMxMSAgICAgPyAgICAgIDcuMDAwNystMC4wOTM1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDIxMXggc2xvd2VyCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMzYyNSstMC4wODAxICAgICA/ICAgICAgMy4zNjg0Ky0wLjA4MjMgICAgICAg
ID8KICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ni44ODk0Ky0wLjIyOTQgICAgID8gICAgICA2Ljk5MDgrLTAuMDc0NyAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNDd4IHNsb3dlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjE3MTkrLTAuMDU1MyAgICAgPyAgICAgIDMuMjExOCstMC4wODk4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzg5NistMC4xMDE2ICAgICAgICAgICAgNC4z
ODY5Ky0wLjA5ODkgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjI5NTcrLTAuMDk1NiAgICAgPyAgICAgIDEuNDE0MistMC4xMzc2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDkxNXggc2xvd2VyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTQ1NCstMC4wMzUwICAgICA/ICAgICAg
Mi45Njg5Ky0wLjA1MzMgICAgICAgID8KICAgYml0b3BzLWJpdHdpc2UtYW5kICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi4zMjcwKy0wLjA0NTYgICAgICAgICAgICAyLjMwNTMrLTAu
MDQ2NyAgICAgICAgCiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuNzAyMistMC4wNjI4ICAgICAgICAgICAgMy42NzQzKy0wLjA2NjYgICAgICAg
IAogICBjb250cm9sZmxvdy1yZWN1cnNpdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
Ljk2MzIrLTAuMDY0NCAgICAgICAgICAgIDIuODk3NystMC4wMzMwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIyNnggZmFzdGVyCiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuODYwMCstMC4xMDQ1ICAgICA/ICAgICAgNS44OTIzKy0wLjA4NDQgICAg
ICAgID8KICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4wNTkyKy0wLjA3MDIgICAgID8gICAgICAzLjEwNDIrLTAuMDUxOCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxNDd4IHNsb3dlcgogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjk5MDMrLTAuMDQ5MSAgICAgPyAgICAgIDMuMDQ2OSstMC4wODEz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4OXggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMjg5OSstMC4yMDY5ICAgICAgICAgICAx
My4yNjk4Ky0wLjE2ODUgICAgICAgIAogICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3LjgxOTcrLTAuMTM2MyAgICAgPyAgICAgIDcuOTQ1NCstMC4w
ODc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2MXggc2xvd2VyCiAgIG1hdGgtY29yZGljICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjYwNCstMC4wNjg5ICAgICA/ICAg
ICAgMy4yNzYwKy0wLjA3MjAgICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS40MDMzKy0wLjA5NjEgICAgICAgICAgICA1LjM3ODgr
LTAuMDk0NCAgICAgICAgCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuMzk2NistMC4wMzk2ICAgICA/ICAgICAgMi40MDE0Ky0wLjAzNjQgICAg
ICAgID8KICAgcmVnZXhwLWRuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS40Mzc1Ky0wLjEyMTIgICAgID8gICAgICA5LjUzNzkrLTAuMTkzNSAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMDZ4IHNsb3dlcgogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjkwMTIrLTAuMDcyMSAgICAgPyAgICAgIDcuMDMxNCstMC4xMjQx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4OXggc2xvd2VyCiAgIHN0cmluZy1mYXN0YSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNzIzNistMC4xMzk3ICAgICAgICAgICAg
Ny43MDIyKy0wLjE1MDUgICAgICAgIAogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjYyMjkrLTAuMjIzOSAgICAgPyAgICAgMTEuODMxNCstMC4y
NTcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OXggc2xvd2VyCiAgIHN0cmluZy11bnBhY2stY29k
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuOTM3MystMC43MTMyICAgICAgICAg
ICAyNS43ODE2Ky0wLjM4MDIgICAgICAgIAogICBzdHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjE2OTErLTAuMTA1NCAgICAgPyAgICAgIDcuMzEzOCst
MC4xNTUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMnggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjMwMTErLTAuMDMzOCAgICAg
PyAgICAgIDYuMzM4MSstMC4wMjA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDA1OXggc2xvd2VyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApMb25nU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMDkxLjM5MjUrLTEyLjE1NDUgICAgPyAgIDExMDAuOTkwMist
MTIuMTYxOSAgICAgICA/CiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3MjMuMjU3NistNC44MzQ2ICAgICA/ICAgIDcyNS41NzcyKy02LjIyNjUgICAg
ICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYxNS4zNjUzKy0yLjAyMjIgICAgID8gICAgNjIwLjgwMDErLTguNjIzMSAgICAgICAgPwogICBh
Y2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMxLjY3NjIr
LTIuODU1OSAgICAgPyAgIDEwMzMuMzM2MCstMi45MDE1ICAgICAgICA/CiAgIGFjY2Vzcy1mYW5u
a3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMTcuOTM3OCstNS42ODA1ICAg
ICA/ICAgIDMxOS4xODIzKy04LjE5MTcgICAgICAgID8KICAgYWNjZXNzLW5ib2R5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzMC42OTY5Ky0xLjQyNjMgICAgICAgICAgNjMw
LjEwMjgrLTEuMjc1MCAgICAgICAgCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzODYuMzI4OCstMy4wMDM0ICAgICAgICAgIDM4NS44NzYwKy0yLjQy
OTcgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM3LjQ5NzcrLTAuNDUzNiAgICAgICAgICAgMzcuNDAwOCstMC41MTg3ICAgICAgICAK
ICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MC43
NjQ2Ky0xLjQxMTcgICAgID8gICAgMTQyLjI2NzYrLTIuMTY3NyAgICAgICAgPyBtaWdodCBiZSAx
LjAxMDd4IHNsb3dlcgogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDQ3LjQ4MzMrLTIuNTgzOSAgICAgICAgICA0NDUuNDMzNystMi4yMTk4ICAgICAg
ICAKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0
Ny42NTA0Ky0zLjkwNzAgICAgID8gICAgNTU5LjMwNTcrLTE2LjMxOTcgICAgICAgPyBtaWdodCBi
ZSAxLjAyMTN4IHNsb3dlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNzM0LjYzMDQrLTIuODMzNyAgICAgICAgICA3MzQuNDQwMystMS44MDkwICAg
ICAgICAKICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDU3Ni4xMDQwKy02LjEwMjIgICAgID8gICAgNTc3LjM1MTkrLTguOTkwNiAgICAgICAgPwogICBj
cnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzcxLjYyOTgr
LTcuNjUwNCAgICAgPyAgICA3NzIuNjU4NSstNC4xNjkxICAgICAgICA/CiAgIGRhdGUtZm9ybWF0
LXRvZnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MjkuMjc0NistNy4wMjIyICAg
ICA/ICAgIDUzMC44MDEwKy01Ljc3NjUgICAgICAgID8KICAgZGF0ZS1mb3JtYXQteHBhcmIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc4NC43NDg1Ky01MS40MDI5ICAgICAgICAgNzc5
Ljc0MjYrLTE0LjcxMzkgICAgICAgCiAgIGhhc2gtbWFwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxODMuMjgzMCstMS41NTUzICAgICAgICAgIDE4Mi44Mzg3Ky0xLjY5
NzQgICAgICAgIAogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTY5LjM5NzQrLTkuNTE3MiAgICAgPyAgICA1NzUuMzY2MSstOC44OTU3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0MDguODk4MystNS45MDgyICAgICAgICAgIDQwOC40Mjc2Ky01
LjI0NDMgICAgICAgIAogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNjAwLjAzNDYrLTMuNDM5NCAgICAgICAgICA1OTguNTY0MystMy44OTE2ICAgICAg
ICAKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUw
Mi4xMzEyKy00LjU3MTIgICAgICAgICAgNTAwLjM3MzgrLTMuNzUzNCAgICAgICAgCiAgIHN0cmlu
Zy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTUuNTE3OCstMy4z
NjIwICAgICAhICAgIDQyNS4zMTY2Ky00LjU2NDAgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMzZ4
IHNsb3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjA5LjY1MTArLTIuMzg2MiAgICAgPyAgICAyMTIuMTEzMistMS41NjY4ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDExN3ggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDQzLjU3NjArLTEuMjE4MSAgICAgPyAgICA0NDUuMjM5NystMS4y
MjI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAzOHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAg
ICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApWOFNw
aWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0NS4wOTUwKy0wLjI4NDcgICAgID8gICAgIDQ1LjYyOTMrLTAuNDM4OSAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMTh4IHNsb3dlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDczLjYxNTErLTIuMTE4NCAgICAgICAgICAgNzIuMDkyNistMi4xNDI3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXggZmFzdGVyCiAgIGVhcmxleS1ib3llciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcuNzA5MCstMC44NTE5ICAgICAgICAgICA0
Ny40NTAyKy0wLjUzMDIgICAgICAgIAogICByYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUxLjIyMjMrLTAuNTEzNSAgICAgICAgICAgNTAuOTE2NystMS4x
MTM2ICAgICAgICAKICAgcmVnZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3MS4zNjgyKy0wLjgxOTggICAgICAgICAgIDcxLjI3NDYrLTAuNzExNiAgICAgICAg
CiAgIHJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQu
NjkyNystMC45NzMwICAgICAgICAgICA1My42NjI4Ky0xLjI4NjggICAgICAgICAgbWlnaHQgYmUg
MS4wMTkyeCBmYXN0ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1Mi44NjUyKy0wLjc2MzMgICAgICAgICAgIDUyLjY2NTQrLTAuNDE0NyAgICAg
ICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDU1LjczOTYrLTAuMzg3OCAgICAgICAgICAgNTUuMzgyNistMC4zNzg5ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDA2NHggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApPY3RhbmU6CiAgIGVuY3J5cHQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMDQxOSstMC4wMDE4MCAg
ICAgICAgICAwLjIwNDA0Ky0wLjAwMTEwICAgICAgIAogICBkZWNyeXB0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTE3NTYrLTAuMDUyMTcgICAgICAgICAgMy40
OTQxNCstMC4wMjM4MSAgICAgICAKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiAgICAgICAwLjE4NTUyKy0wLjAxMDU4ICAgID8gICAgIDAuMTk4MzYrLTAuMDE3
NDUgICAgICAgPyBtaWdodCBiZSAxLjA2OTJ4IHNsb3dlcgogICBlYXJsZXkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzg0MjQrLTAuMDAyNTkgICAgPyAgICAg
MC4zODQ1OCstMC4wMDQyNyAgICAgICA/CiAgIGJveWVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNi4wMzMxOCstMC4wMzMwMiAgICAgICAgICA2LjAwODY5Ky0w
LjAxMzcwICAgICAgIAogICBuYXZpZXItc3Rva2VzICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyICAgICAgIDUuNTc2NDgrLTAuMDA2NjQgICAgPyAgICAgNS42MTAyNSstMC4wNDI3NCAgICAg
ICA/CiAgIHJheXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAg
MS4yMTczNistMC4wMTEyNSAgICA/ICAgICAxLjIzMTMxKy0wLjAxODM4ICAgICAgID8gbWlnaHQg
YmUgMS4wMTE1eCBzbG93ZXIKICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiAgICAgICAwLjEwOTc2Ky0wLjAwMTQwICAgICAgICAgIDAuMTA4OTIrLTAuMDAyMzUg
ICAgICAgCiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAg
ICAgMC40MDYyNCstMC4wMDMyNiAgICAgICAgICAwLjQwNTA0Ky0wLjAwNTM4ICAgICAgIAogICBy
ZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMjUuMjc5NTQr
LTAuMzI1NzUgICAgICAgICAyNS4xODc1MystMC4xMjA4MyAgICAgICAKICAgcGRmanMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDQ4LjE5NjY2Ky0wLjU0NzMxICAg
ID8gICAgNDguNjQzMzYrLTAuNDk2OTggICAgICAgPwogICBtYW5kcmVlbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyICAgICAgNTEuNzk5MTkrLTAuMzEzMzYgICAgPyAgICA1MS44
MTkwNystMC40NDM4MiAgICAgICA/CiAgIGdiZW11ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIgICAgICA0MC4xNTMyOCstMC4yNTI0NSAgICA/ICAgIDQwLjE5MTg0Ky0wLjI1
NTcyICAgICAgID8KICAgY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjM4NTA3Ky0wLjAwMTY4ICAgICAgICAgIDAuMzgyODgrLTAuMDAyMjMgICAgICAg
CiAgIGpxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45
ODIwMCstMC4wMzExNiAgICAgICAgICA0Ljk2ODA2Ky0wLjA1NzU0ICAgICAgIAogICBib3gyZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMTIuMDA4NTcrLTAuMDQw
MzcgICAgPyAgICAxMi4wMjI2NCstMC4wMzE0NCAgICAgICA/CiAgIHpsaWIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDM5NS41Njk2MCstOS4xNDIzMiAgICA/ICAg
Mzk4Ljk4NjM3Ky0xMS43MDkzNiAgICAgID8KICAgdHlwZXNjcmlwdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgODI5LjkxNDcwKy02Ljk5MjA2ICAgID8gICA4MzQuNDAwODgr
LTExLjUwOTg4ICAgICAgPwoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjMwOTIwKy0wLjAzNTE0ICAgID8gICAgIDYuMzQzNjErLTAuMDQzMDkg
ICAgICAgPyBtaWdodCBiZSAxLjAwNTV4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAg
ICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgog
ICBhaS1hc3RhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMy41
NjIrLTEuNjcxICAgICAgPyAgICAgMTE0LjUxMystMS40NjQgICAgICAgICA/CiAgIGF1ZGlvLWJl
YXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjMzMCstMC4zMzMg
ICAgICA/ICAgICAgNzUuNzgwKy0wLjI1NyAgICAgICAgID8KICAgYXVkaW8tZGZ0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTUuMjY3Ky0xLjIzNSAgICAgICAgICAg
IDExNC41ODcrLTAuNTMxICAgICAgICAgCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUxLjA4NCstMC40NzEgICAgICAgICAgICAgNTAuOTk0Ky0w
LjU0MSAgICAgICAgIAogICBhdWRpby1vc2NpbGxhdG9yICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2OC42MzUrLTAuNjkxICAgICAgICAgICAgIDY4LjA2NSstMC4zMjggICAgICAg
ICAKICAgaW1hZ2luZy1kYXJrcm9vbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OTMuMjM4Ky0xLjMxNSAgICAgICAgICAgICA5Mi4zMjIrLTEuMTAzICAgICAgICAgCiAgIGltYWdp
bmctZGVzYXR1cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1LjQ1OSstMC43
NTMgICAgICA/ICAgICAgNjUuNTIwKy0wLjg3NyAgICAgICAgID8KICAgaW1hZ2luZy1nYXVzc2lh
bi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODkuNzkzKy01LjU2MCAgICAgICAg
ICAgICA4Ni41MTMrLTYuMTI1ICAgICAgICAgICBtaWdodCBiZSAxLjAzNzl4IGZhc3RlcgogICBq
c29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny41ODMr
LTAuODA1ICAgICAgPyAgICAgIDQ3LjgwNSstMC40OTUgICAgICAgICA/CiAgIGpzb24tc3RyaW5n
aWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1LjUxNistMC4yMjMgICAg
ICAgICAgICAgMzUuMTI5Ky0wLjU1NSAgICAgICAgICAgbWlnaHQgYmUgMS4wMTEweCBmYXN0ZXIK
ICAgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgu
ODY5Ky0wLjc5MCAgICAgICAgICAgICA1OC40NTYrLTAuMjgyICAgICAgICAgCiAgIHN0YW5mb3Jk
LWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LjU1NCstMS42NDMg
ICAgICA/ICAgICAgNjkuMTcxKy0xLjYzNiAgICAgICAgID8gbWlnaHQgYmUgMS4wMjM5eCBzbG93
ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MjAuNTY1Ky0yLjExNyAgICAgICAgICAgIDExOS45OTcrLTEuMzIyICAgICAgICAgCiAgIHN0YW5m
b3JkLWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAgICAgICAgICAgICAgIDQ5LjQzNistMC40
MDEgICAgICA/ICAgICAgNDkuODA5Ky0wLjc5NyAgICAgICAgID8KCiAgIDxhcml0aG1ldGljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjEzNSstMC40MzIgICAgICAg
ICAgICAgNzQuOTA0Ky0wLjYxNCAgICAgICAgICAgbWlnaHQgYmUgMS4wMDMxeCBmYXN0ZXIKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCkpTQmVuY2g6CiAgIGFtYXpvbi1jaHJvbWUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuMjQ3NSstMC4xOTYzICAgICA/ICAgICAgNC4zMDgxKy0wLjE2
OTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTQzeCBzbG93ZXIKICAgYW1hem9uLWNocm9tZS13aW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40MDI1Ky0wLjEwMDkgICAgID8gICAg
ICA0LjQ0MTQrLTAuMTMzNiAgICAgICAgPwogICBhbWF6b24tZmlyZWZveCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjQwNjcrLTAuMTM1NCAgICAgPyAgICAgIDMuNDE5Mist
MC4wODk1ICAgICAgICA/CiAgIGFtYXpvbi1maXJlZm94LXdpbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuMjg2MystMC4xMDI4ICAgICA/ICAgICAgMy4zODU2Ky0wLjEwMDkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzAyeCBzbG93ZXIKICAgYW1hem9uLXNhZmFyaSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43MzE2Ky0wLjE0NjEgICAgID8gICAgICA0Ljgy
NjkrLTAuMDc4MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMDF4IHNsb3dlcgogICBmYWNlYm9vay1j
aHJvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0LjI4MzcrLTAuNjc2MyAg
ICAgPyAgICAgNTQuMjk4OCstMC40NDkzICAgICAgICA/CiAgIGZhY2Vib29rLWNocm9tZS13aW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTEuMzcyMCstMC44NDk2ICAgICAhICAgIDEx
Mi43Njc4Ky0wLjUwNDAgICAgICAgICEgZGVmaW5pdGVseSAxLjAxMjV4IHNsb3dlcgogICBmYWNl
Ym9vay1maXJlZm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLjY3MjUrLTAu
MjM1NyAgICAgPyAgICAgMzEuODA4NistMC4yOTExICAgICAgICA/CiAgIGZhY2Vib29rLWZpcmVm
b3gtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuNzc4NystMC4xMzgyICAgICA/
ICAgICAyMC44MzM5Ky0wLjIxNzcgICAgICAgID8KICAgZmFjZWJvb2stc2FmYXJpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDExNC41NjkxKy0xLjgxMjIgICAgID8gICAgMTE2LjU4
OTArLTEuODA3NiAgICAgICAgPyBtaWdodCBiZSAxLjAxNzZ4IHNsb3dlcgogICBnb29nbGUtY2hy
b21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1LjY2NDgrLTAuNTA1MSAg
ICAgPyAgICAgNDYuMjU0MCstMC4yOTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyOXggc2xvd2Vy
CiAgIGdvb2dsZS1jaHJvbWUtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMu
OTIxNCstMC41ODA3ICAgICA/ICAgICA0NS4wMDc3Ky0wLjU3MjIgICAgICAgID8gbWlnaHQgYmUg
MS4wMjQ3eCBzbG93ZXIKICAgZ29vZ2xlLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMy4xOTcwKy0wLjIzMDUgICAgID8gICAgIDIzLjI0MzYrLTAuMjg3MiAgICAg
ICAgPwogICBnb29nbGUtZmlyZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDI3LjIxOTIrLTAuNDY4NiAgICAgPyAgICAgMjcuMjUzNistMC40NjM3ICAgICAgICA/CiAgIGdv
b2dsZS1zYWZhcmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYuNjIzOSst
MC41OTQ1ICAgICA/ICAgICA0Ny45MTI4Ky0wLjc3MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMjc2
eCBzbG93ZXIKICAgdHdpdHRlci1jaHJvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy44OTY4Ky0wLjI2MDUgICAgICAgICAgICA3Ljg0NTQrLTAuMTAwMiAgICAgICAgCiAg
IHR3aXR0ZXItY2hyb21lLXdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNjYz
MistMC4xNjMyICAgICA/ICAgICAgNy45MzA5Ky0wLjE2NTggICAgICAgID8gbWlnaHQgYmUgMS4w
MzQ5eCBzbG93ZXIKICAgdHdpdHRlci1maXJlZm94ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS4yMDU5Ky0wLjA1ODYgICAgICAgICAgICAxLjE3NTkrLTAuMDQ3NSAgICAgICAg
ICBtaWdodCBiZSAxLjAyNTZ4IGZhc3RlcgogICB0d2l0dGVyLWZpcmVmb3gtd2luICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjA5NTQrLTAuMDM5OCAgICAgPyAgICAgIDEuMDk4MSst
MC4wNDAwICAgICAgICA/CiAgIHR3aXR0ZXItc2FmYXJpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDcuNDY2OSstMC4xMTM0ICAgICAgICAgICAgNy40NjUyKy0wLjI0NzMgICAg
ICAgIAogICB5YWhvby1jaHJvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQ0LjU5OTcrLTEuMDgzMCAgICAgPyAgICAgNDYuNjg4MSstMS4zMTk1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDQ2OHggc2xvd2VyCiAgIHlhaG9vLWNocm9tZS13aW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDAuMDU4OSstMC4yNzU1ICAgICA/ICAgICA0MC44OTYwKy0wLjY2ODcg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjA5eCBzbG93ZXIKICAgeWFob28tZmlyZWZveCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NS4zODIzKy0wLjY3OTMgICAgID8gICAgIDQ1
LjYyNDArLTAuOTY5NSAgICAgICAgPwogICB5YWhvby1maXJlZm94LXdpbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMwLjY1MDcrLTAuMTc2MyAgICAgPyAgICAgMzEuNTYzNSstMC43
NzQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5OHggc2xvd2VyCiAgIHlhaG9vLXNhZmFyaSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQuNzA0MistMC45MDg2ICAgICA/ICAg
ICA0NS43NDI4Ky0xLjEzMTMgICAgICAgID8gbWlnaHQgYmUgMS4wMjMyeCBzbG93ZXIKCiAgIDxn
ZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuMjA2NSst
MC4wNjE5ICAgICAhICAgICAxNi40MDk2Ky0wLjA3ODEgICAgICAgICEgZGVmaW5pdGVseSAxLjAx
MjV4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKTWljcm9iZW5jaG1hcmtzOgogICBhYmMtZm9yd2Fy
ZC1sb29wLWVxdWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNTQrLTAuMDExNCAg
ICAgICAgICAgIDAuMjIxNystMC4wMTA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NnggZmFzdGVy
CiAgIGFiYy1wb3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MjIyMCstMC4wMTIyICAgICA/ICAgICAgMC4yMjQ1Ky0wLjAxMTcgICAgICAgID8gbWlnaHQgYmUg
MS4wMTExeCBzbG93ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1sb29wICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yMjgyKy0wLjAxOTAgICAgICAgICAgICAwLjIyNjErLTAuMDA3MiAgICAg
ICAgCiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMjI1NSstMC4wMDczICAgICA/ICAgICAgMC4yMjY3Ky0wLjAxMDAgICAgICAgID8KICAgYWJj
LXNraXBweS1sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzY2Ky0w
LjAxNjkgICAgICAgICAgICAwLjIzMDErLTAuMDA5MyAgICAgICAgICBtaWdodCBiZSAxLjAyODJ4
IGZhc3RlcgogICBhYnMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjkwOTcrLTAuMDYyMSAgICAgICAgICAgIDIuODk3MystMC4wNTk1ICAgICAgICAKICAg
YWRhcHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi45MzMy
Ky0wLjIxOTMgICAgICAgICAgIDE2LjczMDUrLTAuMTA4MiAgICAgICAgICBtaWdodCBiZSAxLjAx
MjF4IGZhc3RlcgogICBhbGlhc2VkLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjU3NjcrLTAuMDU5OCAgICAgICAgICAgIDEuNTIzNCstMC4wNDEzICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM1MHggZmFzdGVyCiAgIGFsbG9jYXRlLWJpZy1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuMjAyMCstMC4xMzM1ICAgICAgICAgICAgNi4xMjU2Ky0w
LjExMDUgICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgYXBwbHktbm90LWFwcGx5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzY3Ky0wLjAxNDYgICAgICAg
ICAgICAwLjIyNzMrLTAuMDA5MiAgICAgICAgICBtaWdodCBiZSAxLjA0MTV4IGZhc3RlcgogICBh
cmd1bWVudHMtbmFtZWQtYW5kLXJlZmxlY3RpdmUgICAgICAgICAgICAgICAgICAgICAwLjIyNDQr
LTAuMDA5MiAgICAgPyAgICAgIDAuMjI2MystMC4wMTAxICAgICAgICA/CiAgIGFyZ3VtZW50cy1v
dXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzNystMC4wMTE1ICAg
ICA/ICAgICAgMC4yMjY0Ky0wLjAxMTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTI0eCBzbG93ZXIK
ICAgYXJndW1lbnRzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
Mzg3Ky0wLjAyMjggICAgICAgICAgICAwLjIzODMrLTAuMDEwMSAgICAgICAgCiAgIGFyZ3VtZW50
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI3MSstMC4wMTAy
ICAgICA/ICAgICAgMC4yMzQwKy0wLjAxNDggICAgICAgID8gbWlnaHQgYmUgMS4wMzA0eCBzbG93
ZXIKICAgYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC45ODc3Ky0wLjA0MDggICAgICAgICAgICAwLjk0MjQrLTAuMDM3NCAgICAgICAgICBtaWdodCBi
ZSAxLjA0ODB4IGZhc3RlcgogICBhcnJheS1hY2Nlc3MtcG9seW1vcnBoaWMtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICA5LjUzNjIrLTAuMTEyNyAgICAgICAgICAgIDkuNDI1MCstMC4wODk5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDExOHggZmFzdGVyCiAgIGFycmF5LW5vbmFycmF5LXBvbHltb3Jo
cGljLWFjY2VzcyAgICAgICAgICAgICAgICAgMjkuMjgxOSstMC44MDY4ICAgICA/ICAgICAyOS43
MDY4Ky0wLjM2MzQgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ1eCBzbG93ZXIKICAgYXJyYXktcHJv
dG90eXBlLWV2ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OC45NTgzKy0wLjkyMTAg
ICAgICAgICAgIDg4LjA0MDgrLTAuODEzOCAgICAgICAgICBtaWdodCBiZSAxLjAxMDR4IGZhc3Rl
cgogICBhcnJheS1wcm90b3R5cGUtZm9yRWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4
LjczNTMrLTAuODEwNyAgICAgICAgICAgODcuNjQ1NystMC42OTc1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEyNHggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1tYXAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOTYuODQ2OCstMS4wNTA3ICAgICAgICAgICA5NS4zMTIyKy0wLjk0OTMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4OC45MzI1Ky0xLjk0NzAgICAgICAgICAgIDg4Ljcx
NjMrLTQuMTA1NCAgICAgICAgCiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2VSaWdodCAgICAgICAg
ICAgICAgICAgICAgICAxMjEuMDE4MCstOC43MDY3ICAgICA/ICAgIDEyMi45MTU1Ky01LjAxOTIg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTU3eCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXNvbWUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OC4xMTY2Ky0wLjU2MzQgICAgID8gICAgIDg4
LjY5NjcrLTAuOTM2MyAgICAgICAgPwogICBhcnJheS1zcGxpY2UtY29udGlndW91cyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMwLjc5ODUrLTAuNDE3MyAgICAgPyAgICAgMzEuMTkwMystMC40
MzE2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyN3ggc2xvd2VyCiAgIGFycmF5LXdpdGgtZG91Ymxl
LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjkyMSstMC4wODU0ICAgICA/ICAg
ICAgNC4zMjIzKy0wLjEwNjIgICAgICAgID8KICAgYXJyYXktd2l0aC1kb3VibGUtaW5jcmVtZW50
ICAgICAgICAgICAgICAgICAgICAgICAgMy40ODgxKy0wLjA4ODkgICAgICAgICAgICAzLjQ2MDEr
LTAuMDg0NiAgICAgICAgCiAgIGFycmF5LXdpdGgtZG91YmxlLW11bC1hZGQgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuOTQzNystMC4wODMxICAgICA/ICAgICAgNC45NzgxKy0wLjEzNzcgICAg
ICAgID8KICAgYXJyYXktd2l0aC1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4zMTQ2Ky0wLjA2MTUgICAgICAgICAgICAzLjI3MDkrLTAuMDc3MCAgICAgICAgICBtaWdo
dCBiZSAxLjAxMzR4IGZhc3RlcgogICBhcnJheS13aXRoLWludDMyLWFkZC1zdWIgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjQ1MzgrLTAuMTE0MiAgICAgPyAgICAgIDYuNTAxNistMC4xMzQ0
ICAgICAgICA/CiAgIGFycmF5LXdpdGgtaW50MzItb3ItZG91YmxlLXN1bSAgICAgICAgICAgICAg
ICAgICAgIDMuNDgyNistMC4wODc1ICAgICAgICAgICAgMy40NDg2Ky0wLjA1NTQgICAgICAgIAog
ICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTMuNDg0MSstMC4z
ODI1ICAgICA/ICAgICA5NC40NDU4Ky0wLjg4NDcgICAgICAgID8gbWlnaHQgYmUgMS4wMTAzeCBz
bG93ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAg
ICAzNi4wMTA0Ky0wLjg5OTggICAgICAgICAgIDM1LjY0NTIrLTEuMDc1OCAgICAgICAgICBtaWdo
dCBiZSAxLjAxMDJ4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZzZXQg
ICAgICAgICAgICAgICAgICA0LjAwMDMrLTAuMDgwNSAgICAgICAgICAgIDMuOTc3NSstMC4wMjY5
ICAgICAgICAKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
OS43MDA5Ky0wLjc1NzcgICAgID8gICAgIDk5Ljc3NDgrLTIuMTE2NCAgICAgICAgPwogICBBcnJh
eUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZC1idWZmZXIgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NS43NDA5Ky0wLjUzMzAg
ICAgICAgICAgIDU0Ljk5NzkrLTAuNDExNiAgICAgICAgICBtaWdodCBiZSAxLjAxMzV4IGZhc3Rl
cgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgIDM0
LjQwNzArLTAuMTk5NCAgICAgPyAgICAgMzQuODQxNCstMC42Mzg0ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDEyNnggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAgICAgICAg
ICAgICAgICAgICAgMzIuOTg0NCstMC41Njg1ICAgICAgICAgICAzMi45MjM2Ky0wLjI5MTcgICAg
ICAgIAogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3RydWN0b3IgICAgICAgICAg
ICAwLjI2ODQrLTAuMDEzMSAgICAgPyAgICAgIDAuMjcyNCstMC4wMTI3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE0Nnggc2xvd2VyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2Qg
ICAgICAgICAgICAgICAgMjQuMjE4OCstMC4yNTg0ICAgICAgICAgICAyNC4yMDQ1Ky0wLjI5NDYg
ICAgICAgIAogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tZnVuY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAwLjIzNDYrLTAuMDE1MSAgICAgICAgICAgIDAuMjI5NCstMC4wMDU0ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIyNnggZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjI2NSstMC4wMDkzICAgICA/ICAgICAgMC4yMzAxKy0wLjAx
MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMTU4eCBzbG93ZXIKICAgYXNtanNfYm9vbF9idWcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC43OTk0Ky0wLjA1NjkgICAgID8gICAg
ICA4Ljk3NDArLTAuMTQxMSAgICAgICAgPyBtaWdodCBiZSAxLjAxOTh4IHNsb3dlcgogICBhc3Np
Z24tY3VzdG9tLXNldHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAzLjUzNTIrLTAu
MDgyOSAgICAgICAgICAgIDMuNTE4NCstMC4wNjUwICAgICAgICAKICAgYXNzaWduLWN1c3RvbS1z
ZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zODQxKy0wLjEwNzIgICAgID8g
ICAgICA1LjQ5ODgrLTAuMTA2NyAgICAgICAgPyBtaWdodCBiZSAxLjAyMTN4IHNsb3dlcgogICBi
YXNpYy1zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjczMDQr
LTAuMTYxNSAgICAgPyAgICAgMTAuODE2MistMC4xNTM2ICAgICAgICA/CiAgIGJpZy1pbnQtbXVs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTIwNCstMC4wNTg5ICAg
ICBeICAgICAgMy43ODEwKy0wLjA2OTggICAgICAgIF4gZGVmaW5pdGVseSAxLjAzNjl4IGZhc3Rl
cgogICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sLW9yLXVuZGVmaW5lZCAgICAgICAgICAgIDc5
LjU2ODYrLTEuNjY1OCAgICAgPyAgICAgODIuMTQ3OCstMS43MzgyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDMyNHggc2xvd2VyCiAgIGJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wgICAgICAgICAgICAg
ICAgICAgICAgICAgODYuMjUzNistMC44MTU1ICAgICA/ICAgICA4Ni4zMTIwKy0xLjUwNjEgICAg
ICAgID8KICAgYmlnc3dpdGNoLWluZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1NC40NzU1Ky0wLjU5OTYgICAgID8gICAgIDU0Ljg4OTErLTAuODI5OCAgICAgICAgPwogICBi
aWdzd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjc1NTEr
LTEuMDY3OSAgICAgPyAgICAgNDEuOTgwMSstMC4yODUwICAgICAgICA/CiAgIGJvb2xlYW4tdGVz
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzk5MSstMC4wNzAzICAg
ICAgICAgICAgMy4zOTA2Ky0wLjEwMDcgICAgICAgIAogICBib3VuZC1mdW5jdGlvbi1jYWxsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjkzNTIrLTAuMDg5MSAgICAgICAgICAgMTAu
ODYxMistMC4xMDYzICAgICAgICAKICAgYm91bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZv
cm1hbmNlICAgICAgICAgICAgMC4yNDU3Ky0wLjAyNTcgICAgICAgICAgICAwLjIyNDErLTAuMDEw
MCAgICAgICAgICBtaWdodCBiZSAxLjA5NjR4IGZhc3RlcgogICBicmFuY2gtZm9sZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUyMTQrLTAuMDU3MCAgICAgICAgICAg
IDQuNTAyMistMC4wNDMxICAgICAgICAKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAg
ICAgICAgICAgICAgICAgICAgICAyMC43NTcwKy0wLjEwNzAgICAgID8gICAgIDIwLjgxNzMrLTAu
MjM1NSAgICAgICAgPwogICBidWctMTUzNDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIyNTQrLTAuMDExMSAgICAgPyAgICAgIDAuMjI5MCstMC4wMTI4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE1OHggc2xvd2VyCiAgIGJ1aWxkLWxhcmdlLW9iamVjdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDAuNTEwMystMC40MjkxICAgICA/ICAgICA0MS4wNjYx
Ky0wLjQxNzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTM3eCBzbG93ZXIKICAgYnktdmFsLWdlbmVy
aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjY0Ky0wLjAxMDkgICAg
ID8gICAgICAwLjIzODMrLTAuMDEyNyAgICAgICAgPyBtaWdodCBiZSAxLjA1MjR4IHNsb3dlcgog
ICBjYWxsLW9yLW5vdC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIy
NTUrLTAuMDA1OSAgICAgPyAgICAgIDAuMjI3OSstMC4wMDc3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEwN3ggc2xvd2VyCiAgIGNhbGwtc3ByZWFkLWFwcGx5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzQuNjk0NystMC4yMzgxICAgICAgICAgICAzNC40NDczKy0wLjM2MzYgICAgICAg
IAogICBjYWxsLXNwcmVhZC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0
LjAxNTUrLTAuNjMxNCAgICAgICAgICAgMzMuNzM4MystMC44ODM5ICAgICAgICAKICAgY2FwdHVy
ZWQtYXNzaWdubWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MTUzKy0wLjA0
MDUgICAgICAgICAgICAwLjQwOTkrLTAuMDExMyAgICAgICAgICBtaWdodCBiZSAxLjAxMzB4IGZh
c3RlcgogICBjYXN0LWludC10by1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1Ljc0ODIrLTAuMDY5OCAgICAgICAgICAgIDUuNzQwOCstMC4wODExICAgICAgICAKICAgY2Vs
bC1hcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43Mzk0Ky0w
LjA3MTAgICAgID8gICAgICA0Ljc1NTIrLTAuMTI4MiAgICAgICAgPwogICBjZmctc2ltcGxpZnkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM0OTIrLTAuMDQ3NiAgICAg
ICAgICAgIDMuMzAyMCstMC4wNjgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0M3ggZmFzdGVyCiAg
IGNoYWluLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjYw
MystMC4wMTkxICAgICAgICAgICAgMC4yNDUxKy0wLjAwOTUgICAgICAgICAgbWlnaHQgYmUgMS4w
NjE5eCBmYXN0ZXIKICAgY21wZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMC42MjE4Ky0wLjEzOTggICAgICEgICAgIDEwLjk4NTMrLTAuMTM1NCAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDM0Mnggc2xvd2VyCiAgIGNvbmNhdC1hcHBlbmQtb25lICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMwOCstMC4wMTI1ICAgICAgICAgICAgMC4yMjcx
Ky0wLjAxMjIgICAgICAgICAgbWlnaHQgYmUgMS4wMTY2eCBmYXN0ZXIKICAgY29uc3RhbnQtdGVz
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zMzI3Ky0wLjEwMzMgICAg
ID8gICAgICA1LjM1MzUrLTAuMTA5OCAgICAgICAgPwogICBjcmVhdGUtbG90cy1vZi1mdW5jdGlv
bnMgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjAzNDYrLTAuMTIwOSAgICAgICAgICAgMTIu
MDA2OCstMC4xMzk2ICAgICAgICAKICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMzY3Ky0wLjAxNDAgICAgICAgICAgICAwLjIyNzUrLTAuMDA5
NyAgICAgICAgICBtaWdodCBiZSAxLjA0MDd4IGZhc3RlcgogICBjc2UtbmV3LWFycmF5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNDMrLTAuMDA4MyAgICAgPyAgICAg
IDAuMjM0NystMC4wMTM4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2NXggc2xvd2VyCiAgIGN1c3Rv
bS1zZXR0ZXItZ2V0dGVyLWFzLXB1dC1nZXQtYnktaWQgICAgICAgICAgICAgIDAuMjM2MSstMC4w
MTg5ICAgICAgICAgICAgMC4yMzMzKy0wLjAxNjYgICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBm
YXN0ZXIKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAg
ICA5OC45Nzk0Ky0wLjk3MDUgICAgID8gICAgIDk5LjE5NzgrLTEuMjQ2MiAgICAgICAgPwogICBk
ZWxheS10ZWFyLW9mZi1hcmd1bWVudHMtc3RyaWN0bW9kZSAgICAgICAgICAgICAgICA5LjY3NjQr
LTAuMTMyNyAgICAgPyAgICAgMTAuMDMxNystMC40MzkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDM2
N3ggc2xvd2VyCiAgIGRlbHRhYmx1ZS1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDUuNjM2MCstMC42MDUyICAgICA/ICAgICA0Ni4yOTIyKy0wLjY3NDEgICAgICAgID8g
bWlnaHQgYmUgMS4wMTQ0eCBzbG93ZXIKICAgZGVsdGFibHVlLXZhcmFyZ3MgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0MC4yODE1Ky0wLjQ0NDUgICAgID8gICAgIDQwLjkxODkrLTAu
ODY0MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNTh4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLWFy
Z3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwLjU3MjUrLTAuNjcyMCAgICAgXiAg
ICAgNjguMTg2OSstMC40NDgwICAgICAgICBeIGRlZmluaXRlbHkgMS4wMzUweCBmYXN0ZXIKICAg
ZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24gICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjI2Ky0w
LjAxMTkgICAgICAgICAgICAwLjIxNDMrLTAuMDA4NCAgICAgICAgICBtaWdodCBiZSAxLjAzODd4
IGZhc3RlcgogICBkZXN0cnVjdHVyaW5nLXN3YXAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjQ0OTkrLTAuMDg4NiAgICAgPyAgICAgIDUuNDcxMCstMC4wODMzICAgICAgICA/CiAg
IGRpcmVjdC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTQz
MistMC4wMzQzICAgICA/ICAgICAgMS41NjE2Ky0wLjA5NzEgICAgICAgID8gbWlnaHQgYmUgMS4w
MTIweCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1sZW5ndGggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC41NzUwKy0wLjIzNDAgICAgICAgICAgICA4LjQyMDgrLTAuMjI2MSAgICAgICAg
ICBtaWdodCBiZSAxLjAxODN4IGZhc3RlcgogICBkaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4t
bGVuZ3RoICAgICAgICAgICAgICAgICA4LjE4NTgrLTAuMjk5NCAgICAgPyAgICAgIDguMjg1Nist
MC4yOTg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMnggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVu
dHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC42NDgyKy0wLjA5OTggICAgICAgICAgICA4
LjU5MTgrLTAuMTA2MiAgICAgICAgCiAgIGRpdi1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuNjY0OSstMC4wNDU3ICAgICA/ICAgICAgNC43MjE2Ky0wLjA3
MzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgZGl2LWJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy44OTM3Ky0wLjE1NjQgICAgICAgICAg
ICA3Ljg0MTIrLTAuMDk2NyAgICAgICAgCiAgIGRvdWJsZS1nZXQtYnktdmFsLW91dC1vZi1ib3Vu
ZHMgICAgICAgICAgICAgICAgICAgIDAuMjI3NystMC4wMTQzICAgICAgICAgICAgMC4yMjU3Ky0w
LjAwOTYgICAgICAgIAogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICA4LjAzMzIrLTAuMDczOSAgICAgPyAgICAgIDguMDgwMystMC4wNjYyICAgICAg
ICA/CiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQgICAgICAgICAgICAgICAgICAgICAg
IDUuOTI4MistMC4xMTEyICAgICAgICAgICAgNS43OTI3Ky0wLjEwMTMgICAgICAgICAgbWlnaHQg
YmUgMS4wMjM0eCBmYXN0ZXIKICAgZG91YmxlLXJlYWwtdXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4yMzIyKy0wLjAxNDQgICAgICAgICAgICAwLjIyOTMrLTAuMDEyNCAg
ICAgICAgICBtaWdodCBiZSAxLjAxMjV4IGZhc3RlcgogICBkb3VibGUtdG8taW50MzItdHlwZWQt
YXJyYXktbm8taW5saW5lICAgICAgICAgICAgICAwLjI3MjErLTAuMDE1NSAgICAgPyAgICAgIDAu
MjczMistMC4wMDgyICAgICAgICA/CiAgIGRvdWJsZS10by1pbnQzMi10eXBlZC1hcnJheSAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNTIwNSstMC4wNTg0ICAgICAgICAgICAgMi40NTI5Ky0wLjA3
MzAgICAgICAgICAgbWlnaHQgYmUgMS4wMjc2eCBmYXN0ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10
eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAgICAgICAgMC4yNjkxKy0wLjAwOTQgICAgID8gICAg
ICAwLjI4MjkrLTAuMDE4MSAgICAgICAgPyBtaWdodCBiZSAxLjA1MTN4IHNsb3dlcgogICBkb3Vi
bGUtdG8tdWludDMyLXR5cGVkLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAyLjUxOTYrLTAu
MDI1MCAgICAgICAgICAgIDIuNDgzOSstMC4wMzg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NHgg
ZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjUuNjMzNystMC4yMTc4ICAgICA/ICAgICAyNS45MTA1Ky0wLjQ0MjkgICAgICAgID8gbWln
aHQgYmUgMS4wMTA4eCBzbG93ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC1yb2ZsY29wdGVyICAg
ICAgICAgICAgICAgICAgICAzMy40OTAzKy01LjY2MTcgICAgICAgICAgIDMzLjExNDgrLTUuNjAw
NyAgICAgICAgICBtaWdodCBiZSAxLjAxMTN4IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0
LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAgICAgIDI3LjIzMzcrLTAuMjEzNSAgICAgPyAgICAg
MjcuMzM0MystMC4yMDM2ICAgICAgICA/CiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtdHJlZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjguNzU4MCstMC40NDI1ICAgICA/ICAgICAyOC44MTA0Ky0w
LjQ5MTMgICAgICAgID8KICAgZW1wdHktc3RyaW5nLXBsdXMtaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOS40NzkyKy0wLjE0MDEgICAgICAgICAgICA5LjMzNTUrLTAuMTE4MiAgICAg
ICAgICBtaWdodCBiZSAxLjAxNTR4IGZhc3RlcgogICBlbXNjcmlwdGVuLWN1YmUyaGFzaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjczODIrLTAuNTAwNCAgICAgICAgICAgNDEuMjgw
NCstMC4zNzYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMXggZmFzdGVyCiAgIGV2YWwtY29tcHV0
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI4NSstMC4wMTM3ICAg
ICAgICAgICAgMC4yMjY3Ky0wLjAwNzQgICAgICAgIAogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUt
YXJncyAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNzQrLTAuMDEwMSAgICAgICAgICAgIDAu
MjI2NCstMC4wMTA5ICAgICAgICAKICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMjA4Ky0wLjAxMTIgICAgID8gICAgICAwLjIyODUrLTAuMDEy
MSAgICAgICAgPyBtaWdodCBiZSAxLjAzNDd4IHNsb3dlcgogICBleGl0LWxlbmd0aC1vbi1wbGFp
bi1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAwLjIxOTUrLTAuMDA4MCAgICAgPyAgICAg
IDAuMjIxNCstMC4wMTAwICAgICAgICA/CiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAg
ICAgICAgICAgICAgICAgICAgICAgIDEuNjQzMSstMC4wODEzICAgICA/ICAgICAgMS43OTcwKy0w
LjEwMzggICAgICAgID8gbWlnaHQgYmUgMS4wOTM3eCBzbG93ZXIKICAgZXh0ZXJuYWwtYXJndW1l
bnRzLXB1dGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgMy4yMzU3Ky0wLjA3MDUgICAgICAg
ICAgICAzLjIxMjUrLTAuMDg4NiAgICAgICAgCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2Ut
dmFyLWluZGV4ICAgICAgICAgICAgICAgIDEuNDM4NCstMC4wNDY1ICAgICAgICAgICAgMS40MTU4
Ky0wLjA1NzUgICAgICAgICAgbWlnaHQgYmUgMS4wMTYweCBmYXN0ZXIKICAgZml4ZWQtdHlwZWQt
YXJyYXktc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wNjc4Ky0wLjAzMjIgICAg
ID8gICAgICAxLjA4NjYrLTAuMDMyNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzd4IHNsb3dlcgog
ICBGbG9hdDMyQXJyYXktbWF0cml4LW11bHQgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEw
NTArLTAuMjg0OSAgICAgICAgICAgIDUuOTEzNystMC4yMTMwICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMyM3ggZmFzdGVyCiAgIEZsb2F0MzJBcnJheS10by1GbG9hdDY0QXJyYXktc2V0ICAgICAgICAg
ICAgICAgICAgNTUuNDMxMCstMC44ODUwICAgICAgICAgICA1NC45ODg3Ky0wLjYyMzMgICAgICAg
IAogICBGbG9hdDY0QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgIDg2
LjE2MzArLTAuODc2OCAgICAgPyAgICAgODYuMjQ4NystMC42MjQ2ICAgICAgICA/CiAgIEZsb2F0
NjRBcnJheS10by1JbnQxNkFycmF5LXNldCAgICAgICAgICAgICAgICAgICAgNjkuNzUzMCstMC40
NjUyICAgICAgICAgICA2OS40OTI5Ky0wLjQyNzcgICAgICAgIAogICBmb2xkLWRvdWJsZS10by1p
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1Ljk5ODUrLTAuMTQ0MyAgICAgPyAg
ICAgMTYuMTUyMistMC4xODgzICAgICAgICA/CiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdl
dC1ieS1vZmZzZXQtcmFyZS1pbnQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMi4xOTkzKy0wLjk5MTYgICAgICAgICAgIDExLjQ5MjgrLTAu
NTc3NCAgICAgICAgICBtaWdodCBiZSAxLjA2MTV4IGZhc3RlcgogICBmb2xkLWdldC1ieS1pZC10
by1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDExLjE3NjgrLTEuNTIwNiAgICAgICAg
ICAgIDkuOTQ4OSstMS4yODYxICAgICAgICAgIG1pZ2h0IGJlIDEuMTIzNHggZmFzdGVyCiAgIGZv
bGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1nZXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuODkwMystMS4yNDM2ICAg
ICAgICAgICAgNi41Mzk1Ky0wLjk1MzUgICAgICAgICAgbWlnaHQgYmUgMS4wNTM2eCBmYXN0ZXIK
ICAgZm9sZC1tdWx0aS1nZXQtYnktb2Zmc2V0LXRvLXBvbHktZ2V0LWJ5LW9mZnNldCAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjcwOTcr
LTEuNTAzOCAgICAgPyAgICAgIDguOTYxNSstMS4yMjUzICAgICAgICA/IG1pZ2h0IGJlIDEuMTYy
NHggc2xvd2VyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1wb2x5LXB1dC1ieS1vZmZz
ZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS43NTE3Ky0xLjU1NzMgICAgICAgICAgICA5LjYxNjcrLTEuNTE3OCAgICAgICAgICBtaWdo
dCBiZSAxLjAxNDB4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcHV0LWJ5
LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjQwNzIrLTEuNDg0NiAgICAgICAgICAgIDYuNDIwMSstMS41NTIwICAgICAgICAg
IG1pZ2h0IGJlIDEuMTUzN3ggZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1y
ZXBsYWNlLW9yLXRyYW5zaXRpb24tcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjU0MTkrLTEuNTc3NyAgICAgPyAg
ICAgMTkuNjIxNCstMS40MDM1ICAgICAgICA/CiAgIGZvbGQtcHV0LWJ5LWlkLXRvLW11bHRpLXB1
dC1ieS1vZmZzZXQgICAgICAgICAgICAgIDkuMzYzOCstMC4xNzMyICAgICA/ICAgICAxMC4zMjUx
Ky0xLjQ4MTMgICAgICAgID8gbWlnaHQgYmUgMS4xMDI3eCBzbG93ZXIKICAgZm9sZC1wdXQtYnkt
dmFsLXdpdGgtc3RyaW5nLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC44OTc4Ky0xLjQxMzYgICAg
ID8gICAgIDEyLjQ4NTYrLTEuNjU5MSAgICAgICAgPyBtaWdodCBiZSAxLjE0NTd4IHNsb3dlcgog
ICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjA1
NTMrLTEuNjY3NSAgICAgICAgICAgMTAuMTA3MystMS4xNDE1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDkzOHggZmFzdGVyCiAgIGZvbGQtcHV0LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuNzY1NCstMC44MTEzICAgICA/ICAgICAgNC45MDkyKy0wLjgzNTUgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzAyeCBzbG93ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmll
cyAgICAgICAgICAgICAgICAgICAgICAxNy41NzE5Ky0wLjYxMTkgICAgID8gICAgIDE3LjYzMDYr
LTAuNTk4OCAgICAgICAgPwogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS1rZXlzICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjU5MjYrLTAuMTQ5OSAgICAgICAgICAgIDYuNTI5NistMC4xMzE0ICAg
ICAgICAKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktdmFsdWVzICAgICAgICAgICAgICAgICAgICAg
ICAgNi40NTM0Ky0wLjE2NTQgICAgICAgICAgICA2LjQyMDMrLTAuMTI5NyAgICAgICAgCiAgIGZy
ZWV6ZS1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNjI4Nyst
MC4xMTUwICAgICAgICAgICAxNi41NzA5Ky0wLjE3MzEgICAgICAgIAogICBmcm91bmQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjcxMTkrLTAuMjQwMiAgICAg
ICAgICAgMTEuNjQ1MystMC4xNjEyICAgICAgICAKICAgZnRsLWxpYnJhcnktaW5saW5pbmctZGF0
YXZpZXcgICAgICAgICAgICAgICAgICAgICA3OC43ODYyKy0wLjgwMzQgICAgICEgICAgIDgyLjQ5
ODkrLTAuNjY5NyAgICAgICAgISBkZWZpbml0ZWx5IDEuMDQ3MXggc2xvd2VyCiAgIGZ0bC1saWJy
YXJ5LWlubGluaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuMzE2NSstMC4yMjM1
ICAgICAgICAgICAyNy4wNTEwKy0wLjU5NjUgICAgICAgIAogICBmdGwtcG9seW1vcnBoaWMtYml0
YW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1OTYrLTAuMDE1OSAgICAgICAgICAg
IDAuMjU3NistMC4wMTMxICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdG9yICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yMzg1Ky0wLjAxMDUgICAgICAgICAgICAwLjIzMTgrLTAu
MDA1MSAgICAgICAgICBtaWdodCBiZSAxLjAyOTF4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMt
Yml0eG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1MjErLTAuMDEzMyAgICAgICAg
ICAgIDAuMjQwNistMC4wMDk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3NXggZmFzdGVyCiAgIGZ0
bC1wb2x5bW9ycGhpYy1kaXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjM5Nist
MC4wMDg1ICAgICA/ICAgICAgMC4yNDcxKy0wLjAyMzMgICAgICAgID8gbWlnaHQgYmUgMS4wMzEy
eCBzbG93ZXIKICAgZnRsLXBvbHltb3JwaGljLWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yNDc0Ky0wLjAxODQgICAgICAgICAgICAwLjI0MTUrLTAuMDA4NCAgICAgICAgICBt
aWdodCBiZSAxLjAyNDR4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtbXVsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjIzOTQrLTAuMDA4NCAgICAgPyAgICAgIDAuMjQ4NistMC4w
MTM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4N3ggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhpYy1y
c2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjUwNistMC4wMDg2ICAgICAgICAg
ICAgMC4yNDUwKy0wLjAxMDQgICAgICAgICAgbWlnaHQgYmUgMS4wMjI5eCBmYXN0ZXIKICAgZnRs
LXBvbHltb3JwaGljLVN0cmluZ0Zyb21DaGFyQ29kZSAgICAgICAgICAgICAgICAgMC4yNjM1Ky0w
LjAxNjUgICAgICAgICAgICAwLjI1MjkrLTAuMDA5MCAgICAgICAgICBtaWdodCBiZSAxLjA0MjF4
IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjI0NDgrLTAuMDExNyAgICAgICAgICAgIDAuMjQwNCstMC4wMDkwICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE4N3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy11cnNoaWZ0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjQxNCstMC4wMDc3ICAgICA/ICAgICAgMC4yNDgwKy0wLjAx
MzcgICAgICAgID8gbWlnaHQgYmUgMS4wMjczeCBzbG93ZXIKICAgZnVuY3Rpb24tY2FsbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjcxKy0wLjAxMDUgICAgICAgICAg
ICAwLjIyMDYrLTAuMDEzOCAgICAgICAgICBtaWdodCBiZSAxLjAyOTR4IGZhc3RlcgogICBmdW5j
dGlvbi1kb3QtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU3NTUrLTAu
MDU4MCAgICAgICAgICAgIDIuNTQwNCstMC4wNjUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHgg
ZmFzdGVyCiAgIGZ1bmN0aW9uLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuMTYwMystMC4wNTU1ICAgICAgICAgICAgMy4xMjcwKy0wLjA2NTkgICAgICAgICAgbWln
aHQgYmUgMS4wMTA2eCBmYXN0ZXIKICAgZnVuY3Rpb24td2l0aC1ldmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMzAwKy0wLjAxMjAgICAgID8gICAgICAwLjIzNzArLTAuMDEz
OCAgICAgICAgPyBtaWdodCBiZSAxLjAzMDV4IHNsb3dlcgogICBnY3NlLXBvbHktZ2V0LWxlc3Mt
b2J2aW91cyAgICAgICAgICAgICAgICAgICAgICAgIDIyLjQ5MjErLTAuMjQ2MiAgICAgPyAgICAg
MjIuODM1OCstMC4xNjE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1M3ggc2xvd2VyCiAgIGdjc2Ut
cG9seS1nZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuNjM0NistMC4y
MjQ3ICAgICAgICAgICAyMi41MDM3Ky0wLjE1OTUgICAgICAgIAogICBnY3NlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUxMDkrLTAuMDc4MiAgICAgPyAg
ICAgIDQuNTI5NystMC4xNTA4ICAgICAgICA/CiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIyOCstMC4wMTM4ICAgICA/ICAgICAgMC4yMzA5
Ky0wLjAxNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMzY0eCBzbG93ZXIKICAgZ2VuZXJhdG9yLWZp
YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MC45Njg5Ky0wLjQwMTEgICAg
ID8gICAgIDQxLjQ0MzErLTAuNDg4MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMTZ4IHNsb3dlcgog
ICBnZW5lcmF0b3ItZnVuY3Rpb24tY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIy
ODUrLTAuMDExOSAgICAgICAgICAgIDAuMjI2MistMC4wMDk3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwMXggZmFzdGVyCiAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAg
ICAgICAgICAgIDYuNzI4NistMC4wNTEzICAgICA/ICAgICAgNi43OTQ0Ky0wLjE3ODcgICAgICAg
ID8KICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgICAgICAgICAgIDE0
Ny4zMjk1Ky01Ljc0NDEgICAgID8gICAgMTQ5LjIwNzgrLTMuMjk0MSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMjd4IHNsb3dlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1l
bGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi44NjA4Ky0wLjA0MjkgICAgICAgICAgICAyLjg0NzgrLTAuMDQ4
NSAgICAgICAgCiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0
aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUuNzAyMCstMC4wNzExICAgICAgICAgICAgNS42NzM4Ky0wLjA2NjEgICAgICAgIAogICBn
ZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAgICAgICAyLjU3NjMr
LTAuMDY2MCAgICAgPyAgICAgIDIuNTk1OSstMC4xMTk1ICAgICAgICA/CiAgIGdldC1ieS1pZC1j
aGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAgIDMuOTM3MistMC4wNzE3ICAg
ICAgICAgICAgMy45MjE2Ky0wLjExNzggICAgICAgIAogICBnZXQtYnktaWQtcHJvdG8tb3Itc2Vs
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjI2MDcrLTAuNzkyNiAgICAgICAgICAgMTMu
ODczNistMC44MzYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OXggZmFzdGVyCiAgIGdldC1ieS1p
ZC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDMwOCst
MC4wNDgwICAgICBeICAgICAgMy4yOTg0Ky0wLjA2OTggICAgICAgIF4gZGVmaW5pdGVseSAxLjA0
MDF4IGZhc3RlcgogICBnZXQtYnktaWQtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE0LjI3MjErLTAuNzg2MCAgICAgICAgICAgMTMuODk1MystMC45OTYwICAgICAgICAg
IG1pZ2h0IGJlIDEuMDI3MXggZmFzdGVyCiAgIGdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjI2MystMC4wMTIxICAgICA/ICAgICAgMC4yNDExKy0w
LjAxMzAgICAgICAgID8gbWlnaHQgYmUgMS4wNjU3eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRo
LXN0cmluZy1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg4
MDErLTAuMDg2NiAgICAgICAgICAgIDMuNzcwOCstMC4wNDAyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI5MHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0
cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3Ljk1NzYrLTAuMTMzOCAgICAgICAgICAgIDcuODQ0OCstMC4w
OTIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1z
dHJpbmctY2hhaW4tZnJvbS10cnktYmxvY2sgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NjY5Ky0wLjA1OTggICAgICAgICAgICAyLjU4
NDkrLTAuMDU5MiAgICAgICAgICBtaWdodCBiZSAxLjAzMTd4IGZhc3RlcgogICBnZXQtYnktdmFs
LXdpdGgtc3RyaW5nLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjYzNTYrLTAuMDg4NyAg
ICAgPyAgICAgIDYuNzI4MSstMC4wOTM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOXggc2xvd2Vy
CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTQu
MDAzMCstMC4yMTYyICAgICAgICAgICAxMy44NDc3Ky0wLjE3MDUgICAgICAgICAgbWlnaHQgYmUg
MS4wMTEyeCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1xdWFkbW9ycGhpYy1jaGVj
ay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzEyNCstMC4wOTAwICAgICAgICAgICAg
NS4yNTM3Ky0wLjE1NTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAgZ2V0LWJ5
LXZhbC13aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMy45MzQxKy0wLjE4
MjQgICAgID8gICAgIDE0LjAwMTArLTAuMTk2OSAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgt
c3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjE0
NystMC4wNTU4ICAgICA/ICAgICAgMy4yNjMxKy0wLjExMjQgICAgICAgID8gbWlnaHQgYmUgMS4w
MTUxeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3Ry
dWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTEuMTU2NistMC4xNDYyICAgICAgICAgICAxMS4wODM0Ky0wLjA4
ODggICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoYWluLWZyb20tdHJ5LWJsb2Nr
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuNjM3OCstMC4wODczICAgICAgICAgICAgMi42MTQwKy0wLjA2MTggICAgICAgIAogICBnZXQt
YnktdmFsLXdpdGgtc3ltYm9sLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjMzNjErLTAu
MDY0MCAgICAgPyAgICAgIDguMzg4MystMC4xMDA2ICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0
aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTQuMTA5NCstMC4yMDEwICAgICAg
ICAgICAxNC4wMjIzKy0wLjE0ODMgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXF1
YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41MjM1Ky0wLjA4
MDkgICAgID8gICAgICA0LjUyOTErLTAuMTA1MSAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgt
c3ltYm9sLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgIDEzLjkyMjErLTAuMTY5NSAgICAgICAg
ICAgMTMuODE0MCstMC4yMjk0ICAgICAgICAKICAgZ2V0X2J5X3ZhbC1JbnQzMkFycmF5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjMzKy0wLjAzMjIgICAgID8gICAgICAxLjE3MTUr
LTAuMDUwOSAgICAgICAgPwogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjI4NjUrLTAuMDc2MiAgICAgICAgICAgIDYuMjA5NistMC4xMTI1ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEyNHggZmFzdGVyCiAgIGdldF9jYWxsZWVfcG9seW1vcnBoaWMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzgxNistMC4xMjMxICAgICAgICAgICAgNi4z
MTQxKy0wLjExNDMgICAgICAgICAgbWlnaHQgYmUgMS4wMTA3eCBmYXN0ZXIKICAgZ2V0dGVyLW5v
LWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wNzUzKy0wLjA0OTAg
ICAgICAgICAgICA0LjAzNTIrLTAuMDM5MSAgICAgICAgCiAgIGdldHRlci1wcm90b3R5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5OSstMC4wMTA0ICAgICA/ICAgICAg
MC4yMzE3Ky0wLjAxNzMgICAgICAgID8KICAgZ2V0dGVyLXJpY2hhcmRzLXRyeS1jYXRjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4zMTcyKy0wLjAyMTkgICAgICAgICAgICAwLjMxMjYrLTAu
MDI0MCAgICAgICAgICBtaWdodCBiZSAxLjAxNDZ4IGZhc3RlcgogICBnZXR0ZXItcmljaGFyZHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3LjQyMDYrLTUuMTk5NCAgICAgICAg
ICAgNzQuMDg2MSstNC4xNDU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1MHggZmFzdGVyCiAgIGdl
dHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTM2OSst
MC4wODU5ICAgICA/ICAgICAgNC41MzkxKy0wLjEwOTYgICAgICAgID8KICAgZ2xvYmFsLWlzTmFO
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi45MzY1Ky0wLjYwMzQgICAg
ICAgICAgIDE2Ljc5ODkrLTAuNjkwNSAgICAgICAgCiAgIGdsb2JhbC1vYmplY3QtYWNjZXNzLXdp
dGgtbXV0YXRpbmctc3RydWN0dXJlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjIzMSstMC4wMjIyICAgICAgICAgICAgMC4yMTc1Ky0w
LjAxMzkgICAgICAgICAgbWlnaHQgYmUgMS4wMjYweCBmYXN0ZXIKICAgZ2xvYmFsLXZhci1jb25z
dC1pbmZlci1maXJlLWZyb20tb3B0ICAgICAgICAgICAgICAgMC4yMzM2Ky0wLjAxNTIgICAgID8g
ICAgICAwLjI0MjArLTAuMDE0NiAgICAgICAgPyBtaWdodCBiZSAxLjAzNTl4IHNsb3dlcgogICBn
bG9iYWwtdmFyLWNvbnN0LWluZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNzgr
LTAuMDExNyAgICAgICAgICAgIDAuMjI0NCstMC4wMTYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1
MXggZmFzdGVyCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2stZXF1YWwgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjMwNSstMC4wMTU4ICAgICAgICAgICAgMC4yMjU3Ky0wLjAxMDMgICAgICAgICAg
bWlnaHQgYmUgMS4wMjE0eCBmYXN0ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yMTgxKy0wLjAwNzYgICAgICAgICAgICAwLjIxNzArLTAu
MDEwNCAgICAgICAgCiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlLWtleXMgICAgICAgICAgICAg
ICAgICAgICAgMzAuMTI2NCstMC4zMTMwICAgICAgICAgICAyOS45MTQ3Ky0wLjI1NzYgICAgICAg
IAogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5
Ljk1MTArLTAuMzEzOCAgICAgICAgICAgMjkuNzcxMystMC42MzMwICAgICAgICAKICAgSGFzaE1h
cC1zdHJpbmctcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAzOS45NTYwKy0wLjQz
MzkgICAgICAgICAgIDM5LjgyMjYrLTAuNTYwNyAgICAgICAgCiAgIGhvaXN0LW1ha2Utcm9wZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMxMSstMC4wMTA3ICAgICA/ICAg
ICAgMC4yNTA4Ky0wLjAyNzcgICAgICAgID8gbWlnaHQgYmUgMS4wODUzeCBzbG93ZXIKICAgaG9p
c3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUtZWZmZWN0ZnVsLWxvb3AgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzMxKy0wLjAxMDcgICAg
ID8gICAgICAwLjIzNDcrLTAuMDE4NiAgICAgICAgPwogICBob2lzdC1wb2x5LWNoZWNrLXN0cnVj
dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMDYrLTAuMDExMyAgICAgICAgICAgIDAu
MjI5MystMC4wMDc1ICAgICAgICAKICAgaW1wbGljaXQtYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJv
bCAgICAgICAgICAgICAgICA2Mi40NzY4Ky0wLjQ2OTcgICAgID8gICAgIDYyLjgzNjArLTAuOTcx
MiAgICAgICAgPwogICBpbXVsLWRvdWJsZS1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjk5MDArLTAuMDcyNyAgICAgPyAgICAgIDQuMTAyNystMC4yNzM1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI4M3ggc2xvd2VyCiAgIGltdWwtaW50LW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuNDYyOCstMC4xMjkxICAgICA/ICAgICAgNi42NDcyKy0w
LjEzODcgICAgICAgID8gbWlnaHQgYmUgMS4wMjg1eCBzbG93ZXIKICAgaW11bC1taXhlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44NDAwKy0wLjExNDkgICAgICAg
ICAgICAzLjc2MTQrLTAuMDc2NiAgICAgICAgICBtaWdodCBiZSAxLjAyMDl4IGZhc3RlcgogICBp
bi1mb3VyLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjI1ODAr
LTAuMjcwMSAgICAgICAgICAgMjMuMTc4MystMC4yMTk0ICAgICAgICAKICAgaW4tb25lLWNhc2Ut
ZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4wNTkwKy0wLjA4MjcgICAg
ID8gICAgIDEwLjA4MzcrLTAuMTY3MyAgICAgICAgPwogICBpbi1vbmUtY2FzZS10cnVlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjA2MTMrLTAuMDk1NiAgICAgPyAgICAgMTAu
MDg1MSstMC4xMDc0ICAgICAgICA/CiAgIGluLXR3by1jYXNlcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTAuNDI2MistMC4xMzg3ICAgICA/ICAgICAxMC40Njk5Ky0wLjEz
MTggICAgICAgID8KICAgaW5kZXhlZC1wcm9wZXJ0aWVzLWluLW9iamVjdHMgICAgICAgICAgICAg
ICAgICAgICAgMy4yNDc5Ky0wLjAzNjQgICAgID8gICAgICAzLjI4MTkrLTAuMDM3OCAgICAgICAg
PyBtaWdodCBiZSAxLjAxMDV4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92
LW5vLWlubGluZSAgICAgICAgICAgICAwLjIyNTkrLTAuMDExMyAgICAgPyAgICAgIDAuMjI2MCst
MC4wMTE4ICAgICAgICA/CiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3YgICAgICAgICAg
ICAgICAgICAgICAgMTEuOTkxNystMC4yMDgzICAgICAgICAgICAxMS45NjM3Ky0wLjE4NDMgICAg
ICAgIAogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3BlLW5vLWlubGluZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjIzMDIrLTAuMDEyOSAgICAgPyAgICAgIDAuMjMwNistMC4wMTE3ICAgICAgICA/CiAgIGluZmVy
LWNsb3N1cmUtY29uc3QtdGhlbi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMjQuMzI3MSstMC4z
Njg1ICAgICAgICAgICAyNC4wNTA4Ky0wLjE5MzYgICAgICAgICAgbWlnaHQgYmUgMS4wMTE1eCBm
YXN0ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI3
NystMC4wMTAxICAgICA/ICAgICAgMC4yMzU0Ky0wLjAxNzQgICAgICAgID8gbWlnaHQgYmUgMS4w
MzM3eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAg
ICAgICAgICAyNC4zNTQzKy0wLjIxMDIgICAgID8gICAgIDI0LjQ4OTUrLTAuMTkyMyAgICAgICAg
PwogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAz
LjI3NjcrLTAuMDI5OSAgICAgPyAgICAgIDMuMjk1MSstMC4wNzUzICAgICAgICA/CiAgIGluZmVy
LWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzQ1NystMC4w
NTU4ICAgICA/ICAgICAgMi43NTgyKy0wLjA5ODIgICAgICAgID8KICAgaW5mZXItb25lLXRpbWUt
Y2xvc3VyZS10ZW4tdmFycyAgICAgICAgICAgICAgICAgICAgMC4yMjgyKy0wLjAxMTYgICAgID8g
ICAgICAwLjIzMzkrLTAuMDE0MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNDl4IHNsb3dlcgogICBp
bmZlci1vbmUtdGltZS1jbG9zdXJlLXR3by12YXJzICAgICAgICAgICAgICAgICAgICAwLjIzODcr
LTAuMDE1MCAgICAgICAgICAgIDAuMjMzMSstMC4wMTE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0
MnggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjIzOCstMC4wMDc2ICAgICAgICAgICAgMC4yMTg4Ky0wLjAxMDQgICAgICAgICAg
bWlnaHQgYmUgMS4wMjI1eCBmYXN0ZXIKICAgaW5mZXItb25lLXRpbWUtZGVlcC1jbG9zdXJlICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yMzgxKy0wLjAwOTMgICAgID8gICAgICAwLjI0MzArLTAu
MDEzMiAgICAgICAgPyBtaWdodCBiZSAxLjAyMDN4IHNsb3dlcgogICBpbmxpbmUtYXJndW1lbnRz
LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjE1NzIrLTAuMjA5NSAgICAgICAg
ICAgMTAuMDMxOSstMC4xNjMxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNXggZmFzdGVyCiAgIGlu
bGluZS1hcmd1bWVudHMtYWxpYXNlZC1hY2Nlc3MgICAgICAgICAgICAgICAgICAgMTAuMjg1Nist
MC4xNjM2ICAgICAgICAgICAxMC4xMTk3Ky0wLjEzMzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTY0
eCBmYXN0ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1sb2NhbC1lc2NhcGUgICAgICAgICAgICAgICAg
ICAgICAgOS45Mzg1Ky0wLjExODcgICAgICAgICAgICA5LjkxNDUrLTAuMjAxNCAgICAgICAgCiAg
IGlubGluZS1nZXQtc2NvcGVkLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzMx
NystMC4wNzM5ICAgICAgICAgICAgMy4yNDkzKy0wLjA3NTAgICAgICAgICAgbWlnaHQgYmUgMS4w
MjU0eCBmYXN0ZXIKICAgaW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAxMS4yNzE2Ky0wLjA5NjUgICAgICAgICAgIDExLjI0MDcrLTAuMTI4NSAgICAgICAg
CiAgIGlubGluZWQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10cmFuc2l0aW9uICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuNjk1MSstMC40
MDQ5ICAgICA/ICAgICA1MC4zMzkzKy0wLjk3MTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTMweCBz
bG93ZXIKICAgaW5saW5lZC1wdXQtYnktdmFsLXdpdGgtc3ltYm9sLXRyYW5zaXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS4zMzIz
Ky0xLjIxMjEgICAgICAgICAgIDUwLjk4MTArLTEuMDAzNyAgICAgICAgCiAgIGluc3RhbmNlb2Yt
Ym91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjY1NistMC4wMDkxICAg
ICA/ICAgICAgMC4yNzI1Ky0wLjAwODQgICAgICAgID8gbWlnaHQgYmUgMS4wMjU2eCBzbG93ZXIK
ICAgaW50LW9yLW90aGVyLWFicy10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS4y
Mjg2Ky0wLjEzMzcgICAgICAgICAgICA1LjE4MTErLTAuMTI0NyAgICAgICAgCiAgIGludC1vci1v
dGhlci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTkuNzUxNSstMC4yNDY1
ICAgICAgICAgICAxOS41Njg2Ky0wLjE1NDMgICAgICAgIAogICBpbnQtb3Itb3RoZXItYWRkLXRo
ZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0LjczNDUrLTAuMDU5NSAgICAgICAgICAg
IDQuNzMwOCstMC4wNjIxICAgICAgICAKICAgaW50LW9yLW90aGVyLWFkZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS44NjkzKy0wLjA5NDkgICAgICAgICAgICA1Ljg0NTIrLTAu
MDg3MiAgICAgICAgCiAgIGludC1vci1vdGhlci1kaXYtdGhlbi1nZXQtYnktdmFsICAgICAgICAg
ICAgICAgICAgIDQuMjk3NSstMC4wNTA2ICAgICA/ICAgICAgNC4zMTg3Ky0wLjA2MzUgICAgICAg
ID8KICAgaW50LW9yLW90aGVyLW1heC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAg
NC41MjE1Ky0wLjA1NjYgICAgICAgICAgICA0LjQ5NjArLTAuMDkyNiAgICAgICAgCiAgIGludC1v
ci1vdGhlci1taW4tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuMjgzNCstMC4w
NjgyICAgICA/ICAgICAgNC4zMTU3Ky0wLjA2MjMgICAgICAgID8KICAgaW50LW9yLW90aGVyLW1v
ZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC4zMzU4Ky0wLjA5OTkgICAgICAg
ICAgICA0LjI1OTIrLTAuMDUzNyAgICAgICAgICBtaWdodCBiZSAxLjAxODB4IGZhc3RlcgogICBp
bnQtb3Itb3RoZXItbXVsLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA3LjE4ODcr
LTAuMDM2MyAgICAgPyAgICAgIDcuMjM3MCstMC4xMDM0ICAgICAgICA/CiAgIGludC1vci1vdGhl
ci1uZWctdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuOTEyNCstMC4wODE1ICAg
ICAgICAgICAgNC44NzYzKy0wLjA0OTggICAgICAgIAogICBpbnQtb3Itb3RoZXItbmVnLXplcm8t
dGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDE5LjY1NjYrLTAuMTIyMiAgICAgICAgICAgMTku
NjQxOCstMC4yMzI0ICAgICAgICAKICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1ieS12YWwg
ICAgICAgICAgICAgICAgICAgNi4wMjQxKy0wLjE0OTUgICAgICAgICAgICA1Ljg3MTErLTAuMDMy
OSAgICAgICAgICBtaWdodCBiZSAxLjAyNjF4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItc3ViICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjgxOTQrLTAuMTA0OCAgICAgPyAgICAg
IDQuOTUzMCstMC4yMzQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3N3ggc2xvd2VyCiAgIGludC1v
dmVyZmxvdy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODA0MSstMC4w
ODQwICAgICA/ICAgICAgNC44MTA5Ky0wLjEwMjMgICAgICAgID8KICAgSW50MTZBcnJheS1hbGxv
Yy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA2My40OTg0Ky0wLjY0OTkgICAgID8g
ICAgIDYzLjg0MjUrLTEuMDA2MiAgICAgICAgPwogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdp
dGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDIyLjA5NTgrLTAuNTk4NCAgICAgPyAgICAgMjIuMjEx
MistMC45NDk4ICAgICAgICA/CiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjIuNzUyMistMC4xOTA2ICAgICAgICAgICAyMi40NzE3Ky0wLjI4NDMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgSW50MTZBcnJheS1sb2FkLWludC1t
dWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44MDc1Ky0wLjA1ODQgICAgID8gICAgICAx
Ljg0MTkrLTAuMDQ3MCAgICAgICAgPyBtaWdodCBiZSAxLjAxOTB4IHNsb3dlcgogICBJbnQxNkFy
cmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICAgIDUyLjM4NTArLTAuODUy
MiAgICAgPyAgICAgNTcuNDcyOCstNS4xODIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDk3MXggc2xv
d2VyCiAgIEludDMyQXJyYXktYWxsb2MtbGFyZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjQuMTk4NystMC4yMzE2ICAgICA/ICAgICAyNC40NDYwKy0wLjM1MTEgICAgICAgID8gbWlnaHQg
YmUgMS4wMTAyeCBzbG93ZXIKICAgSW50MzJBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAg
ICAgICAgICAgICAgICA3My45MzQxKy0wLjk1MjAgICAgICAgICAgIDczLjM3NDUrLTAuODEzNCAg
ICAgICAgCiAgIEludDMyQXJyYXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDkuMzM0NCstMC4xNjcwICAgICA/ICAgICAgOS40NTE3Ky0wLjIxNDYgICAgICAgID8gbWln
aHQgYmUgMS4wMTI2eCBzbG93ZXIKICAgSW50MzJBcnJheS1JbnQ4QXJyYXktdmlldy1hbGxvYyAg
ICAgICAgICAgICAgICAgICAxOC42OTU1Ky0wLjQxMTMgICAgICAgICAgIDE4LjQ1ODYrLTAuMTUx
NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjh4IGZhc3RlcgogICBpbnQ1Mi1zcGlsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMjUrLTAuMDExNSAgICAgICAgICAg
IDAuMjI5MystMC4wMjIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MXggZmFzdGVyCiAgIEludDhB
cnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICAgNTkuNDYwNistMS4z
NjIyICAgICAgICAgICA1OC40NDI3Ky0wLjY5MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTc0eCBm
YXN0ZXIKICAgSW50OEFycmF5LWxvYWQtd2l0aC1ieXRlTGVuZ3RoICAgICAgICAgICAgICAgICAg
ICAgMy43MTc2Ky0wLjA0MzAgICAgID8gICAgICAzLjcyNTQrLTAuMDUzNiAgICAgICAgPwogICBJ
bnQ4QXJyYXktbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc0NTMr
LTAuMDg3OCAgICAgICAgICAgIDMuNzMyMSstMC4wNjMxICAgICAgICAKICAgaW50ZWdlci1kaXZp
ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi42MzEyKy0wLjIyNjMgICAg
ICAgICAgIDEyLjYwODkrLTAuMTY0OCAgICAgICAgCiAgIGludGVnZXItbW9kdWxvICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzc4NSstMC4xMTE0ICAgICAgICAgICAgMi4z
MTU4Ky0wLjA0OTMgICAgICAgICAgbWlnaHQgYmUgMS4wMjcxeCBmYXN0ZXIKICAgaXMtYm9vbGVh
bi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43MTk4Ky0wLjA4Mzkg
ICAgICAgICAgICAzLjY0NzMrLTAuMDc3MiAgICAgICAgICBtaWdodCBiZSAxLjAxOTl4IGZhc3Rl
cgogICBpcy1ib29sZWFuLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjczNTkrLTAuMDY0MiAgICAgPyAgICAgIDIuNzYzMistMC4wNjI4ICAgICAgICA/CiAgIGlzLWZ1
bmN0aW9uLWZvbGQtdHJpY2t5LWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNjI5NSstMC4xNDExICAgICAh
ICAgICAxMy4yOTEwKy0wLjE5ODQgICAgICAgICEgZGVmaW5pdGVseSAxLjA1MjR4IHNsb3dlcgog
ICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg1
NTUrLTAuMTAxMyAgICAgPyAgICAgIDMuOTUxNistMC4xMDI3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI0OXggc2xvd2VyCiAgIGlzLWZ1bmN0aW9uLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNzQ5MSstMC4wMzM2ICAgICA/ICAgICAgMi43NzUzKy0wLjA2OTIgICAgICAg
ID8KICAgaXMtbnVtYmVyLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My43OTY5Ky0wLjA3MzMgICAgID8gICAgICAzLjgxNDYrLTAuMTI3NyAgICAgICAgPwogICBpcy1u
dW1iZXItZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcwNTYrLTAu
MDM5NCAgICAgICAgICAgIDIuNjg5NSstMC4wNDczICAgICAgICAKICAgaXMtb2JqZWN0LW9yLW51
bGwtZm9sZC1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgMi44ODkwKy0wLjA2NTggICAgICAg
ICAgICAyLjg0NTArLTAuMDQ1MiAgICAgICAgICBtaWdodCBiZSAxLjAxNTV4IGZhc3RlcgogICBp
cy1vYmplY3Qtb3ItbnVsbC1mb2xkLWxlc3MtdHJpY2t5ICAgICAgICAgICAgICAgICAzLjgyNzEr
LTAuMDQyMiAgICAgPyAgICAgIDMuODU1MCstMC4wNjkzICAgICAgICA/CiAgIGlzLW9iamVjdC1v
ci1udWxsLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgIDQuMzg3NystMC4xMDU3ICAg
ICAgICAgICAgNC4zNjM1Ky0wLjA2MTkgICAgICAgIAogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc3NTErLTAuMDg0MCAgICAgPyAgICAgIDIu
ODE2MSstMC4wNzM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0OHggc2xvd2VyCiAgIGlzLW9iamVj
dC1vci1udWxsLXRyaWNraWVyLWZ1bmN0aW9uICAgICAgICAgICAgICAgIDQuMDEzNystMC4wNjU1
ICAgICAgICAgICAgMy45MjQ4Ky0wLjA2NTQgICAgICAgICAgbWlnaHQgYmUgMS4wMjI3eCBmYXN0
ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi43MTA5
Ky0yLjA0NTcgICAgID8gICAgIDIzLjU0NDArLTAuMjIwNSAgICAgICAgPyBtaWdodCBiZSAxLjAz
Njd4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAgICAg
ICAgICAgICAzLjk0NDIrLTAuMTA4MyAgICAgICAgICAgIDMuODkzNistMC4wNDgyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDEzMHggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1pbnRl
cm5hbC1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LjQ0MTArLTAuMDU4OCAgICAgISAgICAgIDguNzA5MCstMC4xMzY1ICAg
ICAgICAhIGRlZmluaXRlbHkgMS4wMzE3eCBzbG93ZXIKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43OTkwKy0wLjA5MjUgICAgICAgICAgICAz
LjcxMDkrLTAuMDQwNiAgICAgICAgICBtaWdodCBiZSAxLjAyMzd4IGZhc3RlcgogICBpcy1zdHJp
bmctZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjY3NzYrLTAuMDY1
NCAgICAgPyAgICAgIDIuNjk4NystMC4wNDQ3ICAgICAgICA/CiAgIGlzLXVuZGVmaW5lZC1mb2xk
LXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjgxOSstMC4wNTY2ICAgICA/ICAg
ICAgMy4zNjY2Ky0wLjA3NTcgICAgICAgID8gbWlnaHQgYmUgMS4wMjU4eCBzbG93ZXIKICAgaXMt
dW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43NDI5Ky0w
LjA2NDkgICAgID8gICAgICAyLjc3MjUrLTAuMDY3MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDh4
IHNsb3dlcgogICBKU09OUC1uZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjE1MzUrLTAuMDA1OCAgICAgPyAgICAgIDAuMTU2NCstMC4wMDkzICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE5Mnggc2xvd2VyCiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDguMzAyOCstMC4xNjgwICAgICA/ICAgICAgOC4zMDczKy0wLjA5
NjQgICAgICAgID8KICAgbGFyZ2UtaW50LW5lZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMC43NjA2Ky0wLjEwMTIgICAgID8gICAgIDEwLjgzODErLTAuMTQxNCAgICAgICAg
PwogICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
LjU0NjcrLTAuMTI2NiAgICAgICAgICAgIDkuNDU5MystMC4xMjY3ICAgICAgICAKICAgbGF6eS1h
cnJheS1zcGVjaWVzLXdhdGNocG9pbnRzICAgICAgICAgICAgICAgICAgICAgMC4yMzY2Ky0wLjAx
ODEgICAgID8gICAgICAwLjI0ODQrLTAuMDE1NSAgICAgICAgPyBtaWdodCBiZSAxLjA0OTd4IHNs
b3dlcgogICBsaWNtLWRyYWdvbnMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjI1MjErLTAuMDI4MSAgICAgICAgICAgIDAuMjMzMystMC4wMTQ0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDgwOHggZmFzdGVyCiAgIGxpY20tZHJhZ29ucy1vdmVyZmxvdyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMjMzMystMC4wMDk0ICAgICA/ICAgICAgMC4yMzg0Ky0wLjAxNjcg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjE4eCBzbG93ZXIKICAgbGljbS1kcmFnb25zICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDU1Ky0wLjAxNTQgICAgICAgICAgICAw
LjIzOTcrLTAuMDE0OSAgICAgICAgICBtaWdodCBiZSAxLjAyNDB4IGZhc3RlcgogICBsb2FkLXZh
cmFyZ3MtZWxpbWluYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjYrLTAuMDEy
NSAgICAgPyAgICAgIDAuMjIzOCstMC4wMTEyICAgICAgICA/CiAgIGxvY2FsZS1jb21wYXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuODExMystMC44ODUwICAgICAgICAg
ICAzMC41NzkyKy0wLjcyNzYgICAgICAgIAogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjI0MzMrLTAuMDE4OCAgICAgICAgICAgIDAuMjMzMyst
MC4wMTAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyOXggZmFzdGVyCiAgIGxvZ2ljYWwtbm90ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI1OSstMC4wMTE1ICAgICA/
ICAgICAgMC4yMjg2Ky0wLjAxNDIgICAgICAgID8gbWlnaHQgYmUgMS4wMTE4eCBzbG93ZXIKICAg
bG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy43NTA4
Ky0wLjI2MjIgICAgICAgICAgIDE3LjYzNzUrLTAuMzI2NyAgICAgICAgCiAgIG1ha2UtaW5kZXhl
ZC1zdG9yYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODEzOCstMC4wOTg3ICAg
ICAgICAgICAgNC43MzcyKy0wLjEzOTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTYyeCBmYXN0ZXIK
ICAgbWFrZS1yb3BlLWNzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS41
NzAxKy0wLjI5MjUgICAgICAgICAgIDE5LjQ1NzErLTAuMjEyNiAgICAgICAgCiAgIG1hbnktZm9y
ZWFjaC1jYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTI2NSstMC4wNTg2
ICAgICA/ICAgICAgMy45ODEwKy0wLjA0OTIgICAgICAgID8gbWlnaHQgYmUgMS4wMTM5eCBzbG93
ZXIKICAgbWFueS1yZXBlYXQtc3RvcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
MC40NjE0Ky0wLjIwNzkgICAgICAgICAgIDIwLjM0ODUrLTAuMTQ1MSAgICAgICAgCiAgIG1hcC1m
b3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMDc0OSstMC4x
MTAzICAgICAgICAgICAgNi4wMjA3Ky0wLjExODggICAgICAgIAogICBtYXAtZm9yLW9mICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjAwNzIrLTAuMjIxNyAgICAgICAg
ICAgMjYuOTIyNystMC4zNTQzICAgICAgICAKICAgbWFyc2FnbGlhLWxhcmdlci1pbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3Ni45MjA5Ky0wLjQ4NDMgICAgID8gICAgIDc3LjA5NTUr
LTEuMTg1NiAgICAgICAgPwogICBtYXJzYWdsaWEtb3NyLWVudHJ5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIwLjc5ODcrLTAuMjEwNCAgICAgICAgICAgMjAuNDk5OCstMC4xMDM3ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE0NnggZmFzdGVyCiAgIG1hdGgtcmFuZG9tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI1MistMC4wMTI0ICAgICA/ICAgICAgMC4y
Mzg4Ky0wLjAxOTIgICAgICAgID8gbWlnaHQgYmUgMS4wNjA0eCBzbG93ZXIKICAgbWF0aC10cnVu
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzYzKy0wLjAxNjgg
ICAgICAgICAgICAwLjIyNjkrLTAuMDExMiAgICAgICAgICBtaWdodCBiZSAxLjA0MTN4IGZhc3Rl
cgogICBtYXRoLXdpdGgtb3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAw
LjIyODgrLTAuMDA3NSAgICAgPyAgICAgIDAuMjM0MSstMC4wMTU2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIyOXggc2xvd2VyCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNzk2NystMC4wMjY5ICAgICA/ICAgICAgMi44MDMxKy0wLjA3MjAgICAg
ICAgID8KICAgbWVnYW1vcnBoaWMtbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzNS40Njk4Ky0wLjU5MDcgICAgID8gICAgIDM1LjY0MTgrLTAuMjUzMyAgICAgICAgPwogICBt
ZXRob2Qtb24tbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjM3OTMr
LTAuNDgzNSAgICAgISAgICAgMjAuMTc1NistMC4yMTcxICAgICAgICAhIGRlZmluaXRlbHkgMS4w
NDExeCBzbG93ZXIKICAgbWluLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi43MzAxKy0wLjAzOTggICAgICEgICAgICAyLjgzMTgrLTAuMDM0OCAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDM3M3ggc2xvd2VyCiAgIG1pbnVzLWJvb2xlYW4tZG91YmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzQwNystMC4wNTIyICAgICA/ICAgICAgMi43NTI2
Ky0wLjA0OTAgICAgICAgID8KICAgbWludXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi41NjE1Ky0wLjA1MTcgICAgICAgICAgICAyLjUxMzgrLTAuMDQ0MCAg
ICAgICAgICBtaWdodCBiZSAxLjAxOTB4IGZhc3RlcgogICBtaXNjLWJ1Z3MtODQ3Mzg5LWpwZWcy
MDAwICAgICAgICAgICAgICAgICAgICAgICA1MzcwLjQ5MzQrLTUwLjQ0ODUgICAgPyAgIDU0Mjcu
ODc0MystNzguNTAzNCAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIG1pc2Mtc3Ry
aWN0LWVxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYuOTQyMistMC40MDk5
ICAgICAgICAgICAyNS40ODUxKy0xLjIwNDQgICAgICAgICAgbWlnaHQgYmUgMS4wNTcyeCBmYXN0
ZXIKICAgbW9kLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MC4zMzM3Ky0wLjE1NDkgICAgICAgICAgIDEwLjI1NTkrLTAuMTQzMCAgICAgICAgCiAgIG1vZC1i
b29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNTc1MCstMC4x
MDQyICAgICAgICAgICAgNy41Mzc4Ky0wLjA2ODQgICAgICAgIAogICBtdWwtYm9vbGVhbi1kb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE2MTcrLTAuMDM3MiAgICAgPyAg
ICAgIDMuMTYzOCstMC4wNTQ4ICAgICAgICA/CiAgIG11bC1ib29sZWFuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuODc3NistMC4wNDYzICAgICA/ICAgICAgMi44OTIw
Ky0wLjA1NjAgICAgICAgID8KICAgbmVnLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi44NjQzKy0wLjA2NTQgICAgID8gICAgICAyLjkwNzUrLTAuMDgyMCAg
ICAgICAgPyBtaWdodCBiZSAxLjAxNTF4IHNsb3dlcgogICBuZWdhdGl2ZS16ZXJvLWRpdmlkZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI5MTcrLTAuMDE0OCAgICAgPyAgICAgIDAu
MzAyOCstMC4wMTQ1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4MHggc2xvd2VyCiAgIG5lZ2F0aXZl
LXplcm8tbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzA5OSstMC4wMTE5
ICAgICA/ICAgICAgMC4zMjc1Ky0wLjAxNTkgICAgICAgID8gbWlnaHQgYmUgMS4wNTY4eCBzbG93
ZXIKICAgbmVnYXRpdmUtemVyby1uZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zMTgyKy0wLjAyNDcgICAgICAgICAgICAwLjMwNDQrLTAuMDI5NyAgICAgICAgICBtaWdodCBi
ZSAxLjA0NTZ4IGZhc3RlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQ5LjkzNzArLTEuMzQwMyAgICAgICAgICAgNDkuMTk2MistMC4yODg5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE1MXggZmFzdGVyCiAgIG5ldy1hcnJheS1idWZmZXItZGVhZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOTkuNDc1OCstMS4zNzY1ICAgICAgICAgICA5OC45
NzY1Ky0wLjY1MDAgICAgICAgIAogICBuZXctYXJyYXktYnVmZmVyLXB1c2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEyLjM2MTUrLTAuMjEwNSAgICAgPyAgICAgMTIuNjU5MystMC4yMDkz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0MXggc2xvd2VyCiAgIG5ldy1hcnJheS1kZWFkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuMzgzMCstMC4xOTY3ICAgICAgICAgICAx
NS4yOTY4Ky0wLjExODYgICAgICAgIAogICBuZXctYXJyYXktcHVzaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3LjM3NTMrLTAuMjMwMCAgICAgPyAgICAgIDcuMzk5NCstMC4x
NDk0ICAgICAgICA/CiAgIG5vLWlubGluZS1jb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMjIwNistMC4wMTA2ICAgICA/ICAgICAgMC4yMjkzKy0wLjAxMDcgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzkyeCBzbG93ZXIKICAgTnVtYmVyLWlzTmFOICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNy4wNjE1Ky0wLjEwODEgICAgICAgICAgIDE2LjgyMTMr
LTAuNzM3NyAgICAgICAgICBtaWdodCBiZSAxLjAxNDN4IGZhc3RlcgogICBudW1iZXItdGVzdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQwNTgrLTAuMDYzOCAgICAg
PyAgICAgIDMuNDI0MystMC4wODkwICAgICAgICA/CiAgIG9iamVjdC1hbmQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODM3OCstMC4wNzQyICAgICA/ICAgICAgNS44
NjUyKy0wLjEwMTQgICAgICAgID8KICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi4xMjQ5Ky0wLjA3MjkgICAgID8gICAgICA2LjI1MTUrLTAuMTQ2
NyAgICAgICAgPyBtaWdodCBiZSAxLjAyMDd4IHNsb3dlcgogICBvYmplY3QtZ2V0LW93bi1wcm9w
ZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjQ5MystMC4xNTU3ICAgICAgICAgICAgNS41
NDU1Ky0wLjEwNzkgICAgICAgICAgbWlnaHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgb2JqZWN0LWlu
dC1hZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS44MzQxKy0wLjE1MDkg
ICAgID8gICAgIDE2LjA2MjArLTAuMTYzMSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDR4IHNsb3dl
cgogICBvYmplY3QtaW50LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4
LjQ3MTcrLTAuMTI5NCAgICAgICAgICAgMTguNDI2MSstMC4xMjY4ICAgICAgICAKICAgb2JqZWN0
LWludC1hbmQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4wMjYzKy0wLjE2
NDEgICAgICAgICAgIDE1Ljk5MjYrLTAuMTQ1MSAgICAgICAgCiAgIG9iamVjdC1pbnQtbXVsLWFy
cmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuODY4MCstMC4xNDg3ICAgICA/ICAg
ICAxNi4xMjgyKy0wLjE3MTMgICAgICAgID8gbWlnaHQgYmUgMS4wMTY0eCBzbG93ZXIKICAgb2Jq
ZWN0LWludC1zdWItYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4wNDk5Ky0w
LjExMzEgICAgID8gICAgIDEzLjA4MjQrLTAuMTU2MiAgICAgICAgPwogICBvYmplY3QtaW50LXN1
YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjQyOTIrLTAuMTA2NCAgICAg
PyAgICAgMTguNTA0NSstMC4xNjM0ICAgICAgICA/CiAgIG9iamVjdC1sc2hpZnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODA5NCstMC4wNDg1ICAgICAgICAgICAgNS44
MDQxKy0wLjEwMTggICAgICAgIAogICBvYmplY3Qtb3IgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1LjgwMjErLTAuMDYwNSAgICAgICAgICAgIDUuNzcyNSstMC4wODY5
ICAgICAgICAKICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNS43ODYwKy0wLjA4MDMgICAgICAgICAgICA1Ljc0MDgrLTAuMDc0MiAgICAgICAgCiAg
IG9iamVjdC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDc0
MSstMC4wNDQ4ICAgICA/ICAgICAgMy4wODY2Ky0wLjAzODUgICAgICAgID8KICAgb2JqZWN0LXVy
c2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43ODk0Ky0wLjA4NjUg
ICAgICAgICAgICA1Ljc3NTYrLTAuMDg3MiAgICAgICAgCiAgIG9iamVjdC14b3IgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODcyMCstMC4xMjcwICAgICAgICAgICAg
NS43NzEwKy0wLjA5MjQgICAgICAgICAgbWlnaHQgYmUgMS4wMTc1eCBmYXN0ZXIKICAgb2J2aW91
cy1zaW5rLXBhdGhvbG9neS10YWtlbiAgICAgICAgICAgICAgICAgICAgICAgMC4yMzUzKy0wLjAx
NzUgICAgICAgICAgICAwLjIyOTArLTAuMDE1NCAgICAgICAgICBtaWdodCBiZSAxLjAyNzN4IGZh
c3RlcgogICBvYnZpb3VzLXNpbmstcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjI0NjUrLTAuMDE0NyAgICAgICAgICAgIDAuMjM1NystMC4wMjEwICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQ1OHggZmFzdGVyCiAgIG9idmlvdXNseS1lbGlkYWJsZS1uZXctb2JqZWN0ICAgICAg
ICAgICAgICAgICAgICAgMjYuNTQ4NystMC4zNTgxICAgICA/ICAgICAyNi43ODQ1Ky0wLjE5MTgg
ICAgICAgID8KICAgcGx1cy1ib29sZWFuLWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi43MTE5Ky0wLjA2OTEgICAgICAgICAgICAyLjY2NzErLTAuMDYzNiAgICAgICAgICBt
aWdodCBiZSAxLjAxNjh4IGZhc3RlcgogICBwbHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjc5MzMrLTAuMDQ4MiAgICAgPyAgICAgIDIuODA2NSstMC4w
NzkyICAgICAgICA/CiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNTk1MistMC4wNTA2ICAgICAgICAgICAgMi41MzUyKy0wLjA0MjkgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjM3eCBmYXN0ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50
LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuOTQxNSstMC4wNTA2ICAgICAgICAgICAgMi45MjMyKy0wLjA0
MTIgICAgICAgIAogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcyAgICAg
ICAgICAgICAyLjk2NjMrLTAuMDUzMyAgICAgICAgICAgIDIuOTQyNSstMC4wNTUwICAgICAgICAK
ICAgcG9seS1jaGFpbi1hY2Nlc3Mtc2ltcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgMi45
MDgzKy0wLjA1ODIgICAgID8gICAgICAyLjkyOTgrLTAuMDY4OSAgICAgICAgPwogICBwb2x5LWNo
YWluLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkzODMrLTAuMDY3
NiAgICAgPyAgICAgIDIuOTczNystMC4wODAxICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMHggc2xv
d2VyCiAgIHBvbHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjQuNTY0NSstMC4yOTc2ICAgICA/ICAgICA2NS4yMjExKy0wLjY4MjAgICAgICAgID8gbWlnaHQg
YmUgMS4wMTAyeCBzbG93ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi4wNTU1Ky0wLjA1MjcgICAgICAgICAgICAyLjA1MzErLTAuMDU1NyAg
ICAgICAgCiAgIHBvbHltb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjI5MistMC4wMTAxICAgICAgICAgICAgMC4yMjg2Ky0wLjAxMjggICAgICAgIAogICBw
b2x5bW9ycGhpYy1wdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyODUr
LTAuMDA2NSAgICAgPyAgICAgIDAuMjMwNystMC4wMTAxICAgICAgICA/CiAgIHBvbHltb3JwaGlj
LXB1dC1ieS12YWwtd2l0aC1zdHJpbmcgICAgICAgICAgICAgICAgIDAuMjI5MistMC4wMDk5ICAg
ICA/ICAgICAgMC4yMjkyKy0wLjAwODggICAgICAgID8KICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZh
bC13aXRoLXN5bWJvbCAgICAgICAgICAgICAgICAgMC4yNTYyKy0wLjAxNzQgICAgICAgICAgICAw
LjI1NTkrLTAuMDE2NSAgICAgICAgCiAgIHBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTUuNjcyMCstMC4yMzE0ICAgICAgICAgICAxNS41MzEwKy0wLjE2
NjkgICAgICAgIAogICBwb2x5dmFyaWFudC1tb25vbW9ycGhpYy1nZXQtYnktaWQgICAgICAgICAg
ICAgICAgICA1LjAzMDYrLTAuMDkwNiAgICAgPyAgICAgIDUuMDM5OSstMC4wODY0ICAgICAgICA/
CiAgIHByZXZlbnQtZXh0ZW5zaW9ucy1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgMTYu
NDYwMystMC4xNzk5ICAgICA/ICAgICAxNi42OTA4Ky0wLjE3NjYgICAgICAgID8gbWlnaHQgYmUg
MS4wMTQweCBzbG93ZXIKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yNDM4Ky0wLjAxNTUgICAgICAgICAgICAwLjI0MTYrLTAuMDEzOCAgICAg
ICAgCiAgIHByb3RvdHlwZS1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1wcm90b3R5cGUgICAgICAgICAg
IDAuMjI1NSstMC4wMDcyICAgICA/ICAgICAgMC4yMjg4Ky0wLjAxMzcgICAgICAgID8gbWlnaHQg
YmUgMS4wMTQ4eCBzbG93ZXIKICAgcHV0LWJ5LWlkLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAg
ICAgICAgICAgICAgICAgOS45NTA4Ky0wLjE0OTQgICAgID8gICAgIDEwLjAzNTUrLTAuMDgyNiAg
ICAgICAgPwogICBwdXQtYnktaWQtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAgICAgICAgICAgICAg
ICAgICAyLjg5OTArLTAuMDYyMCAgICAgICAgICAgIDIuODkyOCstMC4xMDcxICAgICAgICAKICAg
cHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFkZXIgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi44NTk2Ky0wLjEyMTkg
ICAgID8gICAgIDE3LjAzMzQrLTAuMjQ3MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDN4IHNsb3dl
cgogICBwdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEz
Ljc0MDErLTAuMjQ1OSAgICAgICAgICAgMTMuNTkzNystMC4zMDgxICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEwOHggZmFzdGVyCiAgIHB1dC1ieS12YWwtZGlyZWN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMzAzMSstMC4wMjUyICAgICAgICAgICAgMC4yOTYyKy0wLjAxMjIgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjMyeCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1i
bGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQuMTU5MCstMC4xMzgzICAgICAgICAgICAxNC4wNTUxKy0wLjI0
NjEgICAgICAgIAogICBwdXQtYnktdmFsLW1hY2hpbmUtaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjI1OTUrLTAuMDExNCAgICAgPyAgICAgIDAuMjY5MistMC4wMjgxICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM3NHggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctcmVwbGFj
ZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE0LjY1MjMrLTAuMjcyNSAgICAgPyAgICAgMTQuOTA0OSstMC4xMjQ4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3Mnggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJp
bmctc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMy44Njc2Ky0wLjA0ODkgICAgICAgICAgICAzLjgyMDEr
LTAuMDY0NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjR4IGZhc3RlcgogICBwdXQtYnktdmFsLXdp
dGgtc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjAzNDgrLTAuMTkzNSAgICAg
PyAgICAgMTQuMjAzMSstMC4yNTcwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMHggc2xvd2VyCiAg
IHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjk0NjgrLTAu
MDg1NyAgICAgPyAgICAgMTQuMDUyMCstMC4yMjE3ICAgICAgICA/CiAgIHB1dC1ieS12YWwtd2l0
aC1zeW1ib2wtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMDUyKy0wLjA3OTYgICAgID8gICAgICAz
LjExNTQrLTAuMDQyMiAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE0LjI3NTcrLTAuMjI0NSAgICAgPyAgICAgMTQuMzY0NSstMC4y
OTYwICAgICAgICA/CiAgIHJhcmUtb3NyLWV4aXQtb24tbG9jYWwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTQuNjEyNCstMC4xNTM2ICAgICAgICAgICAxNC41MDA0Ky0wLjE5MjcgICAgICAg
IAogICByYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICA3
LjA1NTQrLTAuMTU5OSAgICAgPyAgICAgIDcuMjYyNystMC4xODE3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI5NHggc2xvd2VyCiAgIHJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMjc1MCstMC4wMTE2ICAgICAgICAgICAgMC4yNjMzKy0wLjAxMTUgICAg
ICAgICAgbWlnaHQgYmUgMS4wNDQzeCBmYXN0ZXIKICAgcmVnZXhwLWV4ZWMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0NC42Njg3Ky0wLjgzNTcgICAgID8gICAgIDQ0Ljcw
OTErLTAuNzY4NyAgICAgICAgPwogICByZWdleHAtbGFzdC1pbmRleCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE3Ljc2MTYrLTAuMTk2OCAgICAgPyAgICAgMTcuODIyMSstMC4xNTkx
ICAgICAgICA/CiAgIHJlZ2V4cC1wcm90b3R5cGUtaXMtbm90LWluc3RhbmNlICAgICAgICAgICAg
ICAgICAgIDAuMzU3MSstMC4wMTkyICAgICAgICAgICAgMC4zNDU5Ky0wLjAxMDAgICAgICAgICAg
bWlnaHQgYmUgMS4wMzI1eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMS4wODk1Ky0wLjAzMTIgICAgICAgICAgICAxLjA4NTArLTAuMDI5
OCAgICAgICAgCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjIyMzYrLTAuMDEwMCAgICAgPyAgICAgIDAuMjMyOSstMC4wMTY0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQxNHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi41NjM4Ky0wLjA3ODQgICAgICAgICAgICAyLjQ4NTMrLTAuMDU1MiAg
ICAgICAgICBtaWdodCBiZSAxLjAzMTZ4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI3MDQrLTAuMDEwNiAgICAgICAgICAgIDAuMjcw
MistMC4wMTE4ICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4zMDQxKy0wLjAwODUgICAgID8gICAgICAwLjMxODArLTAuMDIy
NSAgICAgICAgPyBtaWdodCBiZSAxLjA0NTd4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMTYwKy0wLjAxNzIgICAgID8g
ICAgICAwLjMxNzgrLTAuMDE4NCAgICAgICAgPwogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE1NistMC4wMTk0ICAgICAgICAg
ICAgMC4zMTM5Ky0wLjAxMDIgICAgICAgIAogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMjAyKy0wLjAxNDggICAgICAgICAgICAw
LjMxNzMrLTAuMDE2NSAgICAgICAgCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLXN0aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjMyOTUrLTAuMDI2NyAgICAgICAgICAgIDAuMzA4NCst
MC4wMTA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4NnggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMTYwKy0wLjAwODkg
ICAgICAgICAgICAwLjMxNDgrLTAuMDEyOCAgICAgICAgCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE5NCstMC4wMTMyICAgICA/ICAgICAgMC4z
MTk1Ky0wLjAwOTQgICAgICAgID8KICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuOTg2NCstMC4wMzExICAgICA/ICAgICAgMS4wMTcxKy0wLjAzMzIgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzEyeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjIzNzArLTAuMDEyNCAgICAgICAgICAgIDAuMjMzMist
MC4wMTIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NHggZmFzdGVyCiAgIHJlZ2V4cC1zZXQtbGFz
dC1pbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNDAwMistMC4xMzY5ICAgICAg
ICAgICAxNy4yODI2Ky0wLjEyMjcgICAgICAgIAogICByZWdpc3Rlci1wcmVzc3VyZS1mcm9tLW9z
ciAgICAgICAgICAgICAgICAgICAgICAgIDIyLjcxNjMrLTAuMjA5NSAgICAgICAgICAgMjIuMzk3
MistMC4xOTQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MnggZmFzdGVyCiAgIHJlcGVhdC1tdWx0
aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE5MystMC4wMTg1ICAg
ICA/ICAgICAgMC4yMjY1Ky0wLjAxNTcgICAgICAgID8gbWlnaHQgYmUgMS4wMzI1eCBzbG93ZXIK
ICAgcmVzdC1wYXJhbWV0ZXItY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICAgMC4y
MjkyKy0wLjAyMjEgICAgICAgICAgICAwLjIyMzArLTAuMDEyMCAgICAgICAgICBtaWdodCBiZSAx
LjAyNzd4IGZhc3RlcgogICByaWNoYXJkcy1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgIDY2LjM0NzMrLTAuODQ0MCAgICAgICAgICAgNjUuOTU3NCstMC42ODIwICAgICAg
ICAKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yNzYzKy0wLjAxMDkgICAgID8gICAgICAwLjI3NzYrLTAuMDA5MiAgICAgICAgPwogICBzY29w
ZWQtYXJndW1lbnRzLWxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjEzODYrLTAu
MTAzNCAgICAgICAgICAgIDguMTE1MCstMC4xMDM1ICAgICAgICAKICAgc2NvcGVkLWFyZ3VtZW50
cy1vdmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgNy45Nzk4Ky0wLjE2NzAgICAgICAg
ICAgICA3Ljk2ODErLTAuMDgzMCAgICAgICAgCiAgIHNjb3BlZC1hcmd1bWVudHMtcG9zc2libHkt
b3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOC44NTAyKy0wLjExMTIgICAgICAgICAgICA4Ljc5NTArLTAuMTE1
OSAgICAgICAgCiAgIHNlYWwtYW5kLWRvLXdvcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTYuNTM2MCstMC4xODk5ICAgICAgICAgICAxNi4zODYyKy0wLjE2NjYgICAgICAgIAog
ICBzZXQtZm9yLWVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk1
NDErLTAuMTM4NSAgICAgICAgICAgIDQuODA0MistMC4wNzUxICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMxMnggZmFzdGVyCiAgIHNldC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTUuMTg3MystMC4zNTIyICAgICA/ICAgICAxNS41NjIwKy0wLjIzNDAgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjQ3eCBzbG93ZXIKICAgc2V0dGVyLXByb3RvdHlwZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDEyKy0wLjAxODUgICAgID8gICAgICAwLjI0NjUr
LTAuMDE2NCAgICAgICAgPyBtaWdodCBiZSAxLjAyMTh4IHNsb3dlcgogICBzZXR0ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk0MjYrLTAuMDkxMyAgICAg
PyAgICAgIDMuOTQ2OCstMC4wNzMzICAgICAgICA/CiAgIHNpbXBsZS1hY3RpdmF0aW9uLWRlbW8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuMTAxMystMC4zMjg5ICAgICAgICAgICAyNy4w
NTMwKy0wLjI5NTcgICAgICAgIAogICBzaW1wbGUtZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIzNzErLTAuMDE2NSAgICAgICAgICAgIDAuMjMwOCstMC4wMTk1
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3NnggZmFzdGVyCiAgIHNpbXBsZS1wb2x5LWNhbGwtbmVz
dGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODY4NCstMC4wOTg4ICAgICAgICAgICAg
NC44NDI1Ky0wLjA4MDEgICAgICAgIAogICBzaW1wbGUtcG9seS1jYWxsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLjU0NTUrLTAuMDMzMCAgICAgICAgICAgIDEuNTM4MystMC4w
Mjk0ICAgICAgICAKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAg
ICAgICAgICAgNi4zOTg3Ky0wLjE2NTggICAgID8gICAgICA2LjQ0NjUrLTAuMDg5MSAgICAgICAg
PwogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAgIDIy
LjgwMDkrLTAuNDMyMyAgICAgICAgICAgMjIuNjE3MCstMC41NzM0ICAgICAgICAKICAgc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMDgyNistMC4w
ODk2ICAgICBeICAgICAxMS4zMTY5Ky0wLjQ1NTIgICAgICAgIF4gZGVmaW5pdGVseSAxLjA2Nzd4
IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsICAgICAgICAgICAgICAg
ICAgIDE5Ljc0NjMrLTAuMjMyNyAgICAgICAgICAgMTkuNDAwOCstMC4zMDM4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE3OHggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLXdpdGgt
aG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMi4zMzgxKy0wLjEyNTQgICAgIF4gICAgIDEyLjA3MTYrLTAuMTA1NiAg
ICAgICAgXiBkZWZpbml0ZWx5IDEuMDIyMXggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1m
b2xkaW5nICAgICAgICAgICAgICAgICAgICAgICAgMjAuOTc2NistMC42MDgwICAgICAgICAgICAy
MC44ODA1Ky0wLjEyMTQgICAgICAgIAogICBzaW4tYm9vbGVhbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3Ljg4NTIrLTAuMTA5MiAgICAgICAgICAgIDcuODM2MSstMC4w
OTc4ICAgICAgICAKICAgc2luZ2xldG9uLXNjb3BlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yMzgyKy0wLjAxODkgICAgICAgICAgICAwLjIyODMrLTAuMDEyMSAgICAgICAg
ICBtaWdodCBiZSAxLjA0MzN4IGZhc3RlcgogICBzaW5rLWZ1bmN0aW9uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjErLTAuMDA3MSAgICAgPyAgICAgIDAuMjI5MSst
MC4wMTIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxMnggc2xvd2VyCiAgIHNpbmstaHVnZS1hY3Rp
dmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMxMistMC4wMTAxICAgICAg
ICAgICAgMC4yMjc5Ky0wLjAxMTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ3eCBmYXN0ZXIKICAg
c2lua2FibGUtbmV3LW9iamVjdC1kYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzUz
Ky0wLjAxNjIgICAgICAgICAgICAwLjIyODYrLTAuMDA3NyAgICAgICAgICBtaWdodCBiZSAxLjAy
OTN4IGZhc3RlcgogICBzaW5rYWJsZS1uZXctb2JqZWN0LXRha2VuICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjIyNzUrLTAuMDE4NCAgICAgPyAgICAgIDAuMjQxNSstMC4wMjA2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDYxNXggc2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjM1MSstMC4wMTU1ICAgICAgICAgICAgMC4yMTk1Ky0w
LjAxNjQgICAgICAgICAgbWlnaHQgYmUgMS4wNzEzeCBmYXN0ZXIKICAgc2xvdy1hcnJheS1wcm9m
aWxlLWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMy42OTgxKy0wLjEwODEgICAgID8g
ICAgICAzLjcwMzgrLTAuMDc1MiAgICAgICAgPwogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE4MDcrLTAuMDQyMSAgICAgPyAgICAgIDMuMjA0
MCstMC4wNzYzICAgICAgICA/CiAgIHNsb3ctdGVybmFyaWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjIuMTA1OCstMC4zMzIyICAgICAgICAgICAyMS44MzkyKy0wLjExNzMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTIyeCBmYXN0ZXIKICAgc29ydGluZy1iZW5jaG1hcmsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC4zMTUxKy0wLjQ4MDUgICAgICAgICAgIDI0
LjA1OTcrLTAuMzUwMSAgICAgICAgICBtaWdodCBiZSAxLjAxMDZ4IGZhc3RlcgogICBzcGFyc2Ut
Y29uZGl0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjM0OTcrLTAuMDM1
NiAgICAgPyAgICAgIDEuMzc0NystMC4wMzA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4Nnggc2xv
d2VyCiAgIHNwbGljZS10by1yZW1vdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjEuNTYzNistMC4yNjEzICAgICA/ICAgICAyMS41OTEwKy0wLjYxNjQgICAgICAgID8KICAgc3Ry
Y2F0LWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjY3Ky0w
LjAyMjcgICAgICAgICAgICAwLjIxMDErLTAuMDA1OCAgICAgICAgICBtaWdodCBiZSAxLjA3OTN4
IGZhc3RlcgogICBzdHJjYXQtbGVuZ3RoLWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjIzNjgrLTAuMDIyNyAgICAgICAgICAgIDAuMjIxMystMC4wMDYyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDY5OXggZmFzdGVyCiAgIHN0cmljdC1vc3ItZW50cnkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQuNDQwNystMC4xNTUzICAgICAgICAgICAxNC4zNjU3Ky0wLjEx
MTAgICAgICAgIAogICBzdHJpbmctY2hhci1jb2RlLWF0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE3LjU3ODMrLTAuMjA0OSAgICAgPyAgICAgMTcuNTc4MystMC4xNjIzICAgICAgICA/
CiAgIHN0cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
MjgwMystMC4wOTQ5ICAgICAgICAgICAgNi4yMTg5Ky0wLjE1NDcgICAgICAgIAogICBzdHJpbmct
Y29uY2F0LXBhaXItb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEyMjYrLTAuMTA2
NyAgICAgICAgICAgIDYuMDg4MSstMC4xMDMxICAgICAgICAKICAgc3RyaW5nLWNvbmNhdC1wYWly
LXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgMy43MDU0Ky0wLjA1MDkgICAgID8gICAg
ICAzLjc0MTIrLTAuMDMxOSAgICAgICAgPwogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEzLjU2NTQrLTAuMTAxOSAgICAgPyAgICAgMTMuNzc5Mist
MC4yMTUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1OHggc2xvd2VyCiAgIHN0cmluZy1jb25zLXJl
cGVhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMzEzMystMC4xMDU2ICAgICA/
ICAgICAxMS40MjM5Ky0wLjE0MDMgICAgICAgID8KICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS42OTM2Ky0wLjEzNjEgICAgID8gICAgIDExLjcw
ODgrLTAuMTA1MiAgICAgICAgPwogICBzdHJpbmctZXF1YWxpdHkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIwLjM0MTcrLTAuMjAyNCAgICAgICAgICAgMjAuMjI5NCstMC4xODE4
ICAgICAgICAKICAgc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMC42NjQwKy0wLjIwMTQgICAgICAgICAgIDEwLjYzNjErLTAuMTE1OCAgICAgICAgCiAg
IHN0cmluZy1nZXQtYnktdmFsLWJpZy1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzMx
NSstMC4xNDE5ICAgICA/ICAgICAgNi4zODE1Ky0wLjEyOTAgICAgICAgID8KICAgc3RyaW5nLWdl
dC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUgICAgICAgICAgICAgNS4wMDA2Ky0wLjA5NzAg
ICAgIF4gICAgICA0LjY3NzQrLTAuMDUzOSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDY5MXggZmFz
dGVyCiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAg
IDUuNjkyNSstMC4wNjY5ICAgICA/ICAgICAgNS43MDU1Ky0wLjE2MjIgICAgICAgID8KICAgc3Ry
aW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43MjEyKy0w
LjA5OTggICAgICAgICAgICAyLjY1MDIrLTAuMDgzMyAgICAgICAgICBtaWdodCBiZSAxLjAyNjh4
IGZhc3RlcgogICBzdHJpbmctaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjIzNjUrLTAuMDM1MSAgICAgPyAgICAgIDIuMjU3MistMC4wNDc1ICAgICAgICA/CiAg
IHN0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgMTYuNzIz
MystMC4xNDkxICAgICA/ICAgICAxNi43MzU0Ky0wLjEzOTQgICAgICAgID8KICAgc3RyaW5nLW91
dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTcyKy0wLjAxMDAg
ICAgICAgICAgICAwLjIxNTUrLTAuMDExMiAgICAgICAgCiAgIHN0cmluZy1wcm90b3R5cGUtc2Vh
cmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzc1OCstMC4wMzIwICAgICAgICAgICAgMS4z
MjUzKy0wLjA0MDEgICAgICAgICAgbWlnaHQgYmUgMS4wMzgxeCBmYXN0ZXIKICAgc3RyaW5nLXBy
b3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQwNistMC4wMTkxICAg
ICA/ICAgICAgMC4yNDU5Ky0wLjAxNTAgICAgICAgID8gbWlnaHQgYmUgMS4wMjIyeCBzbG93ZXIK
ICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMz
MystMC4wMTAyICAgICA/ICAgICAgMC4yMzM2Ky0wLjAxNjMgICAgICAgID8KICAgc3RyaW5nLXBy
b3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5NCstMC4wMTI0ICAg
ICAgICAgICAgMC4yMTc1Ky0wLjAwODggICAgICAgICAgbWlnaHQgYmUgMS4wNTQ2eCBmYXN0ZXIK
ICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc5MzEr
LTAuMDYxMCAgICAgPyAgICAgIDIuODIxMSstMC4wNjYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEw
MHggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjgwNCstMC4wMTQ5ICAgICA/ICAgICAgMC4yODE2Ky0wLjAxMjggICAgICAgID8KICAg
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4z
Mzk2Ky0wLjAzNTkgICAgICAgICAgICAwLjMyMTYrLTAuMDEyNCAgICAgICAgICBtaWdodCBiZSAx
LjA1NjN4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4zMTg4Ky0wLjAxMjMgICAgID8gICAgICAwLjMyODErLTAuMDIxMyAg
ICAgICAgPyBtaWdodCBiZSAxLjAyOTB4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzMyOSstMC4wMTgwICAgICA/
ICAgICAgMC4zMzQ0Ky0wLjAxODYgICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzM5MystMC4wMjA1ICAgICA/ICAg
ICAgMC4zNTQwKy0wLjA0MTAgICAgICAgID8gbWlnaHQgYmUgMS4wNDM1eCBzbG93ZXIKICAgc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE2
OSstMC4wMDc4ICAgICA/ICAgICAgMC4zMzQ0Ky0wLjAyMTggICAgICAgID8gbWlnaHQgYmUgMS4w
NTUyeCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtdW5pY29kZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjMzNjgrLTAuMDIxNiAgICAgICAgICAgIDAuMzM0MistMC4wMTk3ICAg
ICAgICAKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zMjk3Ky0wLjAxMzQgICAgID8gICAgICAwLjM0NjgrLTAuMDE4NCAgICAgICAgPyBtaWdodCBi
ZSAxLjA1MTh4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDI3LjQwMzErLTAuMzczOCAgICAgICAgICAgMjYuODY5NystMC4zMDYyICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE5OXggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29s
dmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDUuNzkyNSstMC4wODY2ICAgICA/ICAgICAgNS44
NDk1Ky0wLjE2ODUgICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlu
bGluZSAgICAgICAgICAgICAgMC4yMTU5Ky0wLjAwOTQgICAgID8gICAgICAwLjIxOTErLTAuMDEy
NyAgICAgICAgPyBtaWdodCBiZSAxLjAxNTJ4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LW5vdC1y
ZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICA4Ljg5NzIrLTAuMDk5MyAgICAgPyAgICAg
IDguOTczMistMC4xNDkxICAgICAgICA/CiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVk
ICAgICAgICAgICAgICAgICAgICAgMzMuMDI5OCstMC41MTc4ICAgICAgICAgICAzMi44MDk0Ky0w
LjM5MzAgICAgICAgIAogICBzdHJpbmctcmVwZWF0LXJlc29sdmluZy1uby1pbmxpbmUgICAgICAg
ICAgICAgICAgICAwLjIzOTArLTAuMDEzMSAgICAgICAgICAgIDAuMjI5MistMC4wMTM3ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDQyOXggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzkuODEwOCstMC4zNjY2ICAgICA/ICAgICAzOS44OTY3
Ky0wLjQzMzggICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtbm90LXJlc29sdmluZyAg
ICAgICAgICAgICAgICAgOS40MTM0Ky0wLjE3OTMgICAgICAgICAgICA5LjMyMTQrLTAuMTQ1OSAg
ICAgICAgCiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZyAgICAgICAgICAgICAgICAg
ICAgIDkuNTM3NSstMC4xNDAzICAgICA/ICAgICAgOS41NDg1Ky0wLjE1ODEgICAgICAgID8KICAg
c3RyaW5nLXJlcGVhdC1zbWFsbC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgNy41Mjg3
Ky0wLjE0MDUgICAgID8gICAgICA3LjU5MzArLTAuMjI0NCAgICAgICAgPwogICBzdHJpbmctcmVw
ZWF0LXNtYWxsLXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgIDM5Ljk3MzgrLTAuNjAxOSAg
ICAgICAgICAgMzkuNzc0NistMC4yMTA1ICAgICAgICAKICAgc3RyaW5nLXJlcGxhY2UtZW1wdHkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC45ODI3Ky0wLjEzOTcgICAgID8gICAgIDE5
LjEzODUrLTAuMjg1NyAgICAgICAgPwogICBzdHJpbmctcmVwbGFjZS1nZW5lcmljICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDY2LjE0MzMrLTAuNDk5OSAgICAgISAgICAgNjcuMTg3NistMC4y
MzAwICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTU4eCBzbG93ZXIKICAgc3RyaW5nLXJlcGxhY2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4xNjI3Ky0wLjE3NTUgICAgICAg
ICAgIDE5LjEzMzArLTAuMTgxMSAgICAgICAgCiAgIHN0cmluZy1yb3BlLXdpdGgtb2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI1NistMC4wMDk3ICAgICA/ICAgICAgMC4yMzEw
Ky0wLjAxNjYgICAgICAgID8gbWlnaHQgYmUgMS4wMjQyeCBzbG93ZXIKICAgc3RyaW5nLXN1YiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC42NjA4Ky0wLjY1NzggICAg
ICAgICAgIDQ0LjE1NjIrLTAuNDM2OSAgICAgICAgICBtaWdodCBiZSAxLjAxMTR4IGZhc3Rlcgog
ICBzdHJpbmctdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE5
ODQrLTAuMDQ0NCAgICAgPyAgICAgIDMuMjMyOSstMC4wNDc3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEwOHggc2xvd2VyCiAgIHN0cmluZy10cmFuc2NvZGluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjUuNDUyNistMC4yOTc2ICAgICAgICAgICAyNC44ODI1Ky0wLjI4MzQgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjI5eCBmYXN0ZXIKICAgc3RyaW5nLXZhci1lcXVhbGl0eSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzOC41MjYwKy0wLjQ1NTggICAgICAgICAgIDM4LjI1NDcr
LTAuNDI1NSAgICAgICAgCiAgIHN0cnVjdHVyZS1ob2lzdC1vdmVyLXRyYW5zaXRpb25zICAgICAg
ICAgICAgICAgICAgIDQuMjA3NistMC4wODkxICAgICA/ICAgICAgNC4yNjk3Ky0wLjA1OTQgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTQ3eCBzbG93ZXIKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny4yMzI4Ky0wLjM3MjggICAgID8gICAgIDQ3LjMx
NDgrLTAuNDE4MSAgICAgICAgPwogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQ4LjQ5OTkrLTAuNTYzMCAgICAgPyAgICAgNDkuNDIxNystMS4yNzE2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5MHggc2xvd2VyCiAgIHN1YnN0cmluZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIuMjc4MystMC40OTE0ICAgICA/ICAgICA1
Mi41NTUxKy0wLjQ4NTUgICAgICAgID8KICAgc3dpdGNoLWNoYXItY29uc3RhbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi42ODgxKy0wLjA3ODYgICAgICAgICAgICAyLjY3NjMrLTAu
MDg1NyAgICAgICAgCiAgIHN3aXRjaC1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuMTYzOSstMC4xNDA0ICAgICA/ICAgICAgNi4yNTM5Ky0wLjEwNjQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTQ2eCBzbG93ZXIKICAgc3dpdGNoLWNvbnN0YW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOC40MDk3Ky0wLjA5MzUgICAgIF4gICAgICA4LjE5MjQr
LTAuMDc0MCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDI2NXggZmFzdGVyCiAgIHN3aXRjaC1zdHJp
bmctYmFzaWMtYmlnLXZhciAgICAgICAgICAgICAgICAgICAgICAgMTguNTQ3OSstMC4xNjUwICAg
ICAgICAgICAxOC40NTgwKy0wLjE0NjEgICAgICAgIAogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJp
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjU4MjgrLTAuMTE1OCAgICAgPyAgICAgMTYu
NjI3MystMC4yMDAwICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtdmFyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTguMTAyNystMC4xMjc1ICAgICA/ICAgICAxOC4yMTU2Ky0wLjEx
MjUgICAgICAgID8KICAgc3dpdGNoLXN0cmluZy1iYXNpYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNS4yMTg1Ky0wLjI0MTcgICAgICAgICAgIDE1LjEzMzcrLTAuMTkzNSAgICAgICAg
CiAgIHN3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgMjMu
NjkxMistMC4zMTM0ICAgICAgICAgICAyMy42MTMzKy0wLjE5MzkgICAgICAgIAogICBzd2l0Y2gt
c3RyaW5nLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgICAgIDE4Ljg4NzErLTAuMTQ0
NCAgICAgPyAgICAgMTguOTIxMCstMC4wODU3ICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctbGVu
Z3RoLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgMTQuNTg0NystMC4xNDE5ICAgICA/ICAg
ICAxNC42MTkzKy0wLjEzNTQgICAgICAgID8KICAgc3dpdGNoLXN0cmluZy1zaG9ydCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNC41MzU2Ky0wLjEzNDcgICAgID8gICAgIDE0LjU5MTYr
LTAuMTMyMSAgICAgICAgPwogICBzd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDExLjU2ODMrLTAuNjQyNyAgICAgPyAgICAgMTIuMDg0MystMC42ODc5ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQ0Nnggc2xvd2VyCiAgIHN5bWJvbC10b3N0cmluZ3RhZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjc4NistMC4wMTAxICAgICA/ICAgICAgMC4y
ODk1Ky0wLjAxODMgICAgICAgID8gbWlnaHQgYmUgMS4wMzkyeCBzbG93ZXIKICAgdGVhci1vZmYt
YXJndW1lbnRzLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgNS45NTc3Ky0wLjE2MjUg
ICAgICAgICAgICA1LjkzNDErLTAuMTIxMiAgICAgICAgCiAgIHRlYXItb2ZmLWFyZ3VtZW50cyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjMwOCstMC4yMjY1ICAgICAgICAgICAg
Ny4xMzc3Ky0wLjExMDAgICAgICAgICAgbWlnaHQgYmUgMS4wMTMweCBmYXN0ZXIKICAgdGVtcG9y
YWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4zMjA3Ky0wLjI0
ODUgICAgID8gICAgIDEzLjY2ODIrLTAuMjc3MiAgICAgICAgPyBtaWdodCBiZSAxLjAyNjF4IHNs
b3dlcgogICB0by1pbnQzMi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE1LjY5MTgrLTAuMTcyMSAgICAgICAgICAgMTUuNjE3NistMC4xNTE3ICAgICAgICAKICAgdG8t
bnVtYmVyLWNvbnN0cnVjdG9yLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk5MzQrLTAu
MDk1MiAgICAgPyAgICAgIDUuMDkwMystMC4xMTY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5NHgg
c2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1vbmx5LW51bWJlciAgICAgICAgICAgICAg
ICAgIDAuNzk3MistMC4wNDk3ICAgICA/ICAgICAgMC43OTkxKy0wLjAyMTIgICAgICAgID8KICAg
dG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5nICAgICAgICAgICAgICAgICAgMi4zMTk5
Ky0wLjA3NjcgICAgID8gICAgICAyLjMyMzErLTAuMDkxMSAgICAgICAgPwogICB0by1udW1iZXIt
Y29uc3RydWN0b3Itc3RyaW5nLW51bWJlci1zdHJpbmctbnVtYmVyICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjY3NistMC4xMTA5ICAg
ICA/ICAgICAgNC4yNzE1Ky0wLjA2NDQgICAgICAgID8KICAgdG8tbnVtYmVyLW51bWJlci1zdHJp
bmctbnVtYmVyLXN0cmluZyAgICAgICAgICAgICAgNC4zNzY2Ky0wLjA5MTggICAgICAgICAgICA0
LjM1NTUrLTAuMTEwMiAgICAgICAgCiAgIHRvLW51bWJlci1vbmx5LW51bWJlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNjA4NystMC4wODc5ICAgICAgICAgICAgMC41ODYyKy0wLjA5
MjIgICAgICAgICAgbWlnaHQgYmUgMS4wMzg1eCBmYXN0ZXIKICAgdG8tbnVtYmVyLW9ubHktc3Ry
aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yOTYzKy0wLjEwNjkgICAgICAgICAg
ICAyLjI4MTcrLTAuMDUwNSAgICAgICAgCiAgIHRvLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmlu
Zy1udW1iZXIgICAgICAgICAgICAgIDQuMTkzMistMC4wNzI0ICAgICA/ICAgICAgNC4yNzI5Ky0w
LjA5OTQgICAgICAgID8gbWlnaHQgYmUgMS4wMTkweCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1i
eS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAgICAgICAgNy43NTMwKy0wLjQxODIgICAgID8g
ICAgICA4LjIyMDUrLTAuNDA0NiAgICAgICAgPyBtaWdodCBiZSAxLjA2MDN4IHNsb3dlcgogICB0
cnktY2F0Y2gtZ2V0LWJ5LXZhbC1kaXJlY3QtYXJndW1lbnRzICAgICAgICAgICAgICA0LjM4NjIr
LTAuMTYzMCAgICAgPyAgICAgIDQuNTU0NystMC4xNjM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4
NHggc2xvd2VyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLXNjb3BlZC1hcmd1bWVudHMgICAgICAg
ICAgICAgMTAuNTc4OCstMC4yNzc4ICAgICAgICAgICAxMC40MDA0Ky0wLjIyNDYgICAgICAgICAg
bWlnaHQgYmUgMS4wMTcxeCBmYXN0ZXIKICAgdHJ5LWdldC1ieS1pZC1iYXNpYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yODI0Ky0wLjAyNzYgICAgICAgICAgICAwLjI2NDgrLTAu
MDA4NyAgICAgICAgICBtaWdodCBiZSAxLjA2NjZ4IGZhc3RlcgogICB0cnktZ2V0LWJ5LWlkLXBv
bHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI3MjkrLTAuMDA5OCAgICAgICAg
ICAgIDAuMjYzNSstMC4wMTA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NHggZmFzdGVyCiAgIHR5
cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2ZpbGluZyAgICAgICAgICAgICAgIDAuMjMwNCst
MC4wMTM1ICAgICAgICAgICAgMC4yMjU3Ky0wLjAxMTkgICAgICAgICAgbWlnaHQgYmUgMS4wMjEx
eCBmYXN0ZXIKICAgdHlwZWQtYXJyYXktc3ViYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yNjcwKy0wLjAxNTMgICAgID8gICAgICAwLjI2NzIrLTAuMDE3NiAgICAgICAgPwog
ICB1bmRlZmluZWQtcHJvcGVydHktYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgMzY3LjY4
MzIrLTIuNTg4OSAgICAgPyAgICAzNjcuNzY2NCstMy4xODg4ICAgICAgICA/CiAgIHVuZGVmaW5l
ZC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzQwMCstMC4wNDY3
ICAgICAhICAgICAgMy40NDMyKy0wLjA1MzcgICAgICAgICEgZGVmaW5pdGVseSAxLjAzMDl4IHNs
b3dlcgogICB1bnByb2ZpbGVkLWxpY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExLjQ4MzkrLTAuMTM4MCAgICAgPyAgICAgMTEuNTUzMistMC4xMzI5ICAgICAgICA/CiAgIHVu
dHlwZWQtc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgMTIuMjA0Nist
MC4wOTQ5ICAgICBeICAgICAxMS42Nzc3Ky0wLjEwOTggICAgICAgIF4gZGVmaW5pdGVseSAxLjA0
NTF4IGZhc3RlcgogICB2OC1yYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAg
ICAgICAgIDQ1LjI2MTcrLTAuNzc4NiAgICAgICAgICAgNDQuNjIzNistMC4zNjc2ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE0M3ggZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoLWhp
Z2gtZnJlcXVlbmN5LXRocm93cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjMxMTkrLTAuMDIwMyAgICAgICAgICAgIDAuMzA2MistMC4w
MTY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4NnggZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgt
dHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzA4NystMC4wMjE4ICAgICAgICAg
ICAgMC4zMDQzKy0wLjAxMTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ2eCBmYXN0ZXIKICAgdjgt
cmVnZXhwLXNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NS44MTI2Ky0w
LjUyMjYgICAgID8gICAgIDc2LjU1MDkrLTAuNzg0OSAgICAgICAgPwogICB2YXJhcmdzLWNhbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMDErLTAuMDA5NyAgICAg
PyAgICAgIDAuMjI3MCstMC4wMTQ4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxMnggc2xvd2VyCiAg
IHZhcmFyZ3MtY29uc3RydWN0LWlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE3
MystMC4wMDkwICAgICAgICAgICAgMC4yMTcwKy0wLjAwOTQgICAgICAgIAogICB2YXJhcmdzLWNv
bnN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxNzUrLTAuMDA5MyAg
ICAgICAgICAgIDAuMjE1OSstMC4wMTA3ICAgICAgICAKICAgdmFyYXJncy1pbmxpbmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTgyKy0wLjAwODUgICAgID8gICAgICAw
LjIxODcrLTAuMDExNCAgICAgICAgPwogICB2YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjIxMTYrLTAuMDA3MyAgICAgPyAgICAgIDAuMjIwOCstMC4w
MTM0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQzOHggc2xvd2VyCiAgIHZhcmFyZ3MgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIwNistMC4wMTg0ICAgICAgICAg
ICAgMC4yMTQ4Ky0wLjAwOTggICAgICAgICAgbWlnaHQgYmUgMS4wMjY2eCBmYXN0ZXIKICAgd2Vp
cmQtaW5saW5pbmctY29uc3QtcHJvcCAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTc4Ky0w
LjAwOTYgICAgICAgICAgICAwLjIxNTMrLTAuMDEwNCAgICAgICAgICBtaWdodCBiZSAxLjAxMTZ4
IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy42MDk2Ky0wLjAwNzUgICAgICAgICAgICAzLjYwNTgrLTAuMDA1NiAgICAgICAgICBt
aWdodCBiZSAxLjAwMTB4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQXNtQmVuY2g6CiAgIGJpZ2Zp
Yi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NDYuNzM3MCstMTAu
ODkyNCAgICAgICAgIDUzNC4yNjE2Ky0xMy4zNjY1ICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBm
YXN0ZXIKICAgY3JheS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQ0Ni45MjM5Ky00LjcxNjQgICAgID8gICAgNDQ2Ljk1NDcrLTQuNDYzNSAgICAgICAgPwogICBk
cnkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjIzLjcwNzIr
LTM1LjA2NjQgICAgICAgICA1ODMuNjU2MystNDMuMjk4NSAgICAgICAgIG1pZ2h0IGJlIDEuMDY4
NnggZmFzdGVyCiAgIEZsb2F0TU0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4MTMuNDg0NystOC41OTQ0ICAgICA/ICAgIDgxNy42MDAwKy0xNy44ODgzICAgICAgID8K
ICAgZ2NjLWxvb3BzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUyOC45
NTg0Ky03LjI0ODggICAgID8gICA0NTMxLjY1NzgrLTIwLjA4NzggICAgICAgPwogICBuLWJvZHku
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQ0LjA2MTMrLTYuMDMz
MCAgICAgICAgIDEwMjcuNTEyNystMTYuNDI0NiAgICAgICAgIG1pZ2h0IGJlIDEuMDE2MXggZmFz
dGVyCiAgIFF1aWNrc29ydC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
ODguNDEzOSstMy44NTk3ICAgICAgICAgIDQ4NC4yNDMwKy0yLjE5OTMgICAgICAgIAogICBzdGVw
YW5vdl9jb250YWluZXIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAzNzA5LjI0ODArLTEy
Ljc2OTEgICAgICAgIDM2OTMuNjY5OCstMTEuNjE0NCAgICAgICAKICAgVG93ZXJzLmMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5Ni4zMzY4Ky0xLjQ2MjcgICAgID8g
ICAgMjk4LjAwMjYrLTIuODc3MSAgICAgICAgPwoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDg3OS4xMjY1Ky01LjgxOTYgICAgICAgICAgODY4LjUz
MTArLTguMDk1NyAgICAgICAgICBtaWdodCBiZSAxLjAxMjJ4IGZhc3RlcgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAg
ICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKRFNQOgogICBmaWx0cnItcG9zdGVyaXplLXRpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMwLjM3MDUrLTAuMjk3MSAgICAgPyAgICAgMzAuNDk5NystMC4yMjQ3ICAgICAgICA/CiAg
IGZpbHRyci10aW50LWNvbnRyYXN0LXNhdC1icmlnaHQgICAgICAgICAgICAgICAgICAgNDQuNTU4
OSstMC41NDc4ICAgICAgICAgICA0NC4zODM3Ky0wLjI3MzcgICAgICAgIAogICBmaWx0cnItdGlu
dC1zYXQtYWRqLWNvbnRyLW11bHQgICAgICAgICAgICAgICAgICAgIDQ5Ljc1NjgrLTAuMzU2NyAg
ICAgPyAgICAgNDkuNzY2NystMC41ODkyICAgICAgICA/CiAgIGZpbHRyci1ibHVyLW92ZXJsYXkt
c2F0LWNvbnRyICAgICAgICAgICAgICAgICAgICAxMDcuNzQ3MystMS4wODE1ICAgICA/ICAgIDEw
OC4xOTE1Ky0xLjM3MTQgICAgICAgID8KICAgZmlsdHJyLXNhdC1ibHVyLW11bHQtc2hhcnBlbi1j
b250ciAgICAgICAgICAgICAgIDEyOS4wMDc5Ky04LjQyODIgICAgICAgICAgMTI1LjI5MDYrLTgu
MTcxMSAgICAgICAgICBtaWdodCBiZSAxLjAyOTd4IGZhc3RlcgogICBmaWx0cnItc2VwaWEtYmlh
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3Ljk3NzErLTAuMjg1MyAgICAgICAg
ICAgMjcuODI4NistMC4yOTUwICAgICAgICAKICAgcm91dGU5LXZwOCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4NSAgICAgMTU5MC4zODYyKy0yNC4zNjY5ICAgID8gICAxNTkwLjk2OTEr
LTMuMzY1NyAgICAgICAgPwogICBzdGFyZmllbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHg1ICAgICAxMjcyLjEyNTcrLTM3LjU5OTIgICAgPyAgIDEyOTguMzk1MistMzEuNzQ0NSAg
ICAgICA/IG1pZ2h0IGJlIDEuMDIwN3ggc2xvd2VyCiAgIGJlbGxhcmQtanNsaW51eCAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDUgICAgIDM2MzguNTAwMCstNTAuMjY3OSAgICA/ICAgMzY1My42
MDAwKy0yOC44ODk2ICAgICAgID8KICAgenluYXBzLXF1YWtlMyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4NSAgICAgIDU3NS4wMDcwKy0zLjk3MDUgICAgICAgICAgNTcwLjU1NzIrLTUuMjQ5
MiAgICAgICAgCiAgIHp5bmFwcy1tYW5kZWxicm90ICAgICAgICAgICAgICAgICAgICAgICAgeDUg
ICAgICA0OTUuNDM3NystNS42ODI1ICAgICA/ICAgIDQ5OS40MTQ0Ky01LjkxMTggICAgICAgID8K
ICAgYW1tb2pzLWFzbS1qcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4NSAgICAgICA2OC4y
NjE2Ky0xLjYxODcgICAgID8gICAgIDcwLjMxOTQrLTEuNjQyMyAgICAgICAgPyBtaWdodCBiZSAx
LjAzMDF4IHNsb3dlcgogICBhbW1vanMtcmVndWxhci1qcyAgICAgICAgICAgICAgICAgICAgICAg
IHg1ICAgICAgIDcwLjczMTIrLTEuMzQ2OSAgICAgPyAgICAgNzMuMDA1MistNS4yMjEyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDMyMnggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzcyLjk4NjArLTIuNDYwOSAgICAgPyAgICAzNzYuNTI4
MistMi44NTc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDA5NXggc2xvd2VyCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAg
ICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApDb21wcmVzc2lvbkJlbmNoOgogICBodWZmbWFuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYxLjczMzcrLTAuNTI5MiAgICAgPyAgICAgNjEuNzUyOCstMC40OTQx
ICAgICAgICA/CiAgIGFyaXRobWV0aWMtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNDYuNjc3MystMy4wNTE1ICAgICAgICAgIDM0NS4wNDY3Ky0zLjMwMjcgICAgICAgIAog
ICBhcml0aG1ldGljLXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgyLjc2
NjMrLTMuOTMzNiAgICAgICAgICAyODEuMzA0NistMy4yMzM2ICAgICAgICAKICAgYXJpdGhtZXRp
Yy1jb21wbGV4LXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgIDI4MS41OTI4Ky00Ljk0OTAg
ICAgICAgICAgMjc4LjQwMjErLTAuNzYwOCAgICAgICAgICBtaWdodCBiZSAxLjAxMTV4IGZhc3Rl
cgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAgICAgICAgICAgMzUx
LjE3MjgrLTQuNTE5MCAgICAgPyAgICAzNTEuNzk1MistNC4xNzE2ICAgICAgICA/CiAgIGFyaXRo
bWV0aWMtcHJlY2lzZS1vcmRlci0xICAgICAgICAgICAgICAgICAgICAgICAzMzUuNTYwNistMS45
MjIwICAgICAgICAgIDMzNS4wMTY2Ky0yLjg2MzYgICAgICAgIAogICBhcml0aG1ldGljLXByZWNp
c2Utb3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAgNDAwLjI2ODUrLTEuOTA4OSAgICAgPyAg
ICA0MDMuNTc2MCstNy43MjAyICAgICAgICA/CiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTEg
ICAgICAgICAgICAgICAgICAgICAgICAzOTkuNTI1NSstNC4xOTkyICAgICA/ICAgIDQwMC4wMDQ2
Ky0zLjg0NjggICAgICAgID8KICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMiAgICAgICAgICAg
ICAgICAgICAgICAgIDQ1OS4wNjc3Ky04LjUwOTEgICAgICAgICAgNDUzLjM2MDYrLTEuODI0OSAg
ICAgICAgICBtaWdodCBiZSAxLjAxMjZ4IGZhc3RlcgogICBsei1zdHJpbmcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc1LjA0NjUrLTUuODEzNCAgICAgICAgICAyNzQu
NDA2NCstNC4yNTU0ICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyODguODk0NystMS40MzM5ICAgICAgICAgIDI4OC4xNDc5Ky0wLjk5
MDYgICAgICAgICAgbWlnaHQgYmUgMS4wMDI2eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAg
ICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkdlb21l
YW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDU3LjcwMTkrLTAuMTA0OSAgICAgPyAgICAgNTcuNzY5MCstMC4x
MjA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAxMnggc2xvd2VyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287341</attachid>
            <date>2016-08-29 15:43:38 -0700</date>
            <delta_ts>2016-08-29 16:36:38 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161171.patch</filename>
            <type>text/plain</type>
            <size>736134</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1NCBA
QAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGlu
c3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBoYXZpbmcgYSBt
ZWNoYW5pc20gKHVzaW5nIHRoZSBUaHJvd1Njb3BlKSB0bworICAgICAgICB2ZXJpZnkgdGhhdCB3
ZSdyZSBwcm9wZXJseSBjaGVja2luZyBmb3IgZXhjZXB0aW9ucyBpbiBhbGwgdGhlIG5lZWRlZCBw
bGFjZXMuCisgICAgICAgIFNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
IGZvciBkZXRhaWxzIG9uIGhvdyB0aGUgVGhyb3dTY29wZSB3b3Jrcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG9ubHkgaW50cm9kdWNlcyB0aGUgVGhyb3dTY29wZSwgYW5kIGNoYW5nZXMgYWxsIHRo
cm93IHNpdGVzIHRvIHRocm93CisgICAgICAgIHVzaW5nIGEgVGhyb3dTY29wZSBpbnN0YW5jZS4g
IFZNOjp0aHJvd0V4Y2VwdGlvbigpIGZ1bmN0aW9ucyBhcmUgbm93IHByaXZhdGUsIGFuZAorICAg
ICAgICBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuICBBbGwgdGhyb3dzIG11c3Qgbm93IGdv
IHRocm91Z2ggYSBUaHJvd1Njb3BlLgorCisgICAgICAgIFZlcmlmaWNhdGlvbiBpcyBkaXNhYmxl
ZCBmb3IgdGhlIG1vbWVudCB1bnRpbCB3ZSBjYW4gZml4IGFsbCB0aGUgdmVyaWZpY2F0aW9uCisg
ICAgICAgIGZhaWx1cmVzIHRoYXQgd2lsbCBzaG93IHVwLgorCisgICAgICAgIEkgYWxzbyBkaWQg
YSBzbW9rZSB0ZXN0IG9mIHRoZSBUaHJvd1Njb3BlIG1lY2hhbmlzbXMgYnkgcnVubmluZyB2ZXJp
ZmljYXRpb24gb24KKyAgICAgICAgdGhlIEpTVGVzdHMvc3RyZXNzL29wLWFkZC1leGNlcHRpb25z
LmpzIHRlc3Qgd2l0aCBhIGxvY2FsIGJ1aWxkIHdpdGggdmVyaWZpY2F0aW9uCisgICAgICAgIHR1
cm5lZCBvbi4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIG9uIGFnZ3JlZ2F0ZSB3
aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKEpTQzo6
QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpjb25z
dHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhh
c0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxs
KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rp
b25HZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5LmNwcDoKKyAgICAgICAgKGNy
ZWF0ZVR5cGVkQXJyYXkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUF0dHJpYnV0ZUV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzSFRNTEFs
bENvbGxlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMpOgorICAgICAgICAo
SW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNp
emUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha1NldEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFs
UHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29w
ZURlc2NyaXB0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVNvdXJjZUlEKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlTGluZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlw
dENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbik6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4pOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVHlwZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2Fs
bDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAg
ICAgIChKU0M6OnNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpz
aXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkN1c3RvbUdldHRlcjo6Y3Vz
dG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgor
ICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToK
KyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6Cisg
ICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6
CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAgKGZ1bmN0aW9uVHJhbnNm
ZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkxvYWRNb2R1bGUpOgorICAgICAgICAo
ZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5jdGlvblNhbXBsaW5nUHJv
ZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlND
OjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwp
OgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdpdGhTaXpl
UXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAo
SlNDOjppc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjpjb25jYXRBcHBlbmRPbmUp
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNWYWx1
ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhz
OjpvcEluKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcpOgorICAgICAgICAoSlND
OjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAoSlNDOjpkYXRlUHJv
dG9GdW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcik6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXREYXRlKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJv
dG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RheSk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNaW51
dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbGxp
U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChKU0M6OnNldE5ld1ZhbHVl
RnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvSlNPTik6Cisg
ICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OnRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJv
d1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6dGhyb3dSYW5nZUVycm9yKToKKyAgICAg
ICAgKEpTQzo6dGhyb3dWTUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dWTVR5cGVFcnJvcik6
CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcik6CisgICAgICAg
IChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRocm93VHlwZUVycm9yKToK
KyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZXJy
b3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25GdXp6LmNw
cDoKKyAgICAgICAgKEpTQzo6ZG9FeGNlcHRpb25GdXp6aW5nKToKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd091dE9mTWVtb3J5RXJy
b3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgIChK
U0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByb3Rv
RnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xs
YXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0
KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcik6CisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsU3RyaW5nT3B0aW9uKToKKyAgICAg
ICAgKEpTQzo6aW50bE51bWJlck9wdGlvbik6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6ZUxv
Y2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0ZWRMb2NhbGVzKToKKyAgICAg
ICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJh
dG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgorICAgICAgICAoSlNDOjpj
cmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yRm9ySXRl
cmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6YXBwZW5kTWVtY3B5KToKKyAgICAgICAgKEpTQzo6SlNB
cnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRX
aXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5QnVmZmVyKToKKyAgICAg
ICAgKEpTQzo6Y2FsbEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZm
ZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0lubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93
Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpy
ZXF1aXJlT2JqZWN0Q29lcmNpYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldERhdGEpOgorICAgICAg
ICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZl
cik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVm
aW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc6OnNldEluZGV4KToK
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0Zyb21J
dGVyYXRvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAg
KiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRh
dGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlND
OjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0
SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1D
b2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpkZWNvZGUpOgorICAgICAg
ICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50
c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b0dldHRlcik6
CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgICogcnVudGlt
ZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjps
aW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRp
b25zKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OldhbGtl
cjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJzZSk6CisgICAgICAgIChK
U0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2sp
OgorICAgICAgICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5j
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjp2YWxpZGF0
ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omdl
dE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpj
cmVhdGVMaXN0RnJvbUFycmF5TGlrZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlTGlzdEZyb21BcnJheUxpa2UpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UHJvbWlzZSk6
CisgICAgICAgIChKU0M6OmNhbGxQcm9taXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVJdGVyYXRvckZ1
bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0J1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdCdWlsZGVyOjpidWlsZCk6CisgICAgICAg
IChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmdKb2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5lcjo6am9pbmVkTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OmpvaW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmdKb2luZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OkpTU3Ry
aW5nSm9pbmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0VHlwZWRBcnJh
eVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpOgorICAgICAg
ICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdElu
ZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOgor
ICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNhbGxNYXApOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RNYXApOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwRGF0YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNJdGVyYXRv
cj46OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50aW1lL01hcEl0ZXJhdG9y
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4
dCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNWYWx1ZXMpOgorICAgICAgICAoSlND
OjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6bWFwUHJvdG9GdW5jS2V5cyk6
CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGlt
ZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsUmV0dXJuVW5kZWZp
bmVkKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6Om51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpOgorICAgICAgICAoSlNDOjpudW1iZXJQ
cm90b0Z1bmNUb0ZpeGVkKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNp
b24pOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6Om51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YpOgorICAg
ICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmpzU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheSk6CisgICAgICAg
IChKU0M6OmpzU3RyaW5nRnJvbUFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Qcm94eUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJsZVByb3h5KToKKyAgICAg
ICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJyb3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6OmNhbGxQcm94eSk6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUdldCk6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpwZXJm
b3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9y
bUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OnJlZmxl
Y3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RFbnVt
ZXJhdGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToKKyAgICAgICAgKEpTQzo6
cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJl
ZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RJ
c0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0T3duS2V5cyk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6
OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjp0b0ZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNvbGxlY3RNYXRjaGVz
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAoSlNDOjpSZWdF
eHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNDb21waWxlKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVySWdu
b3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckZs
YWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVqZWN0
Lmg6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50
aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFNldCk6CisgICAgICAgIChK
U0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY0VudHJp
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAg
IChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3Bh
cnNlQXJyYXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6
CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmlu
Z3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6Cisg
ICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OnJlcGxhY2UpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJD
b2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhP
Zik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vi
c3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjp0b0xvY2FsZUNhc2Up
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCaWcpOgorICAgICAgICAoSlNDOjpzdHJp
bmdQcm90b0Z1bmNTbWFsbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0JsaW5rKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQm9sZCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0ZpeGVkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSXRhbGljcyk6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0cmlrZSk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY1N1Yik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1cCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQW5j
aG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6CisgICAgICAgIChKU0M6
OnRyaW1TdHJpbmcpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0l0
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNo
ZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25DaGVja2VyOjp0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAg
ICAoSlNDOjpTeW1ib2w6OnRvTnVtYmVyKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JLZXlGb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9s
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNWYWx1ZU9m
KToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6VGhyb3dTY29wZTo6VGhyb3dTY29wZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6On5U
aHJvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24pOgor
ICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjpwcmludElmTmVlZENoZWNrKToKKyAgICAgICAgKEpT
Qzo6VGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdyk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6
OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKToKKyAgICAgICAgKiBydW50aW1l
L1Rocm93U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlRocm93U2NvcGU6OnZtKToKKyAg
ICAgICAgKEpTQzo6VGhyb3dTY29wZTo6ZXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6VGhyb3dT
Y29wZTo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6OlRocm93U2NvcGUpOgor
ICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6
OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGVMb2NhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZUxvY2F0aW9uOjpUaHJvd1Njb3BlTG9j
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNRW50
cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnZtKToKKyAgICAgICAgKiBy
dW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrTWFw
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9X
ZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrU2V0KToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGltZS9XZWFrU2V0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNXZWFrU2V0QWRkKToKKwogMjAxNi0wOC0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdG9TdHJpbmdOYW1lIGZvciBQcm94aWVz
IGFuZCBhZGQgc3VwcG9ydCBmb3Igbm9ybWFsIGluc3RhbmNlcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04MTQsNiArODE0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1N5bWJvbE9iamVjdC5jcHAK
ICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxl
LmNwcAorICAgIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHAKICAgICBydW50aW1lL1RlbXBsYXRlUmVn
aXN0cnkuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAgcnVudGltZS9U
eXBlTG9jYXRpb25DYWNoZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY1LDEyICszNjUsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAg
ICAgQ3VzdG9tR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxDdXN0b21HZXR0ZXIq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdCkK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBib29sIHNob3Vs
ZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAg
ICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigxMDApKTsKICAgICB9CiB9
OwpAQCAtNDcwLDkgKzQ3MywxMiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIFJ1
bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkpOwogICAgIH0KIApAQCAt
MTIzMiwxMSArMTIzOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwogICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPihleGVjLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKCFyb290KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIikpKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCByb290KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiIpKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHJvb3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdldEVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTQxNiwyMCArMTQyNSwy
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3Jp
cHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNj
cmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBv
cGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQg
bm90IG9wZW4gZmlsZS4iKSkpKTsKIAotICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
R2xvYmFsT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+dm0oKSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKKyAgICBHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsK
IAogICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4ZWMtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMi
KSwgYXJyYXkpOworICAgICAgICB2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKICAgICBOYWtlZFB0cjxF
eGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwpAQCAtMTQzOCw3
ICsxNDUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgogICAg
IHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBz
Y29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNDQ3LDIzICsxNDU5LDI2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1blN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT52bSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2Jh
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkp
OwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+
YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgKLSAgICAgICAgZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50
cyIpLCBhcnJheSk7CisgICAgICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBtYWtlU291cmNlKHNvdXJjZSksIEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsKIAogICAg
IGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgc2NvcGUudGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIApAQCAt
MTQ3MiwyNCArMTQ4NywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
UnVuCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBW
ZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lz
dGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIAogICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2Ny
aXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYg
KGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2Fk
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBzb3Vy
Y2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTQ5OCwzMCArMTUxOSwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTG9hCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhj
ZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4
Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVj
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBp
ZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmls
ZS4iKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3Ry
aW5nRnJvbVVURihzY3JpcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAo
IWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxl
LiIpKSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKIApAQCAtMTUzMyw3ICsxNTYwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBp
ZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBz
eW50YXhFeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3Rv
cFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAKQEAgLTE2MzgsMTIgKzE2NjUsMTUgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3VnaCBhcmd1bWVudHMi
KSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpKSkpOwogICAgIAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1pY0Nh
c3Q8SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYW4gYXJyYXkg
YnVmZmVyIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQg
YW4gYXJyYXkgYnVmZmVyIikpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBkdW1t
eUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2ZlcihkdW1teUNvbnRlbnRzKTsK
QEAgLTE4MTAsMjcgKzE4NDAsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklzMwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZE1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUg
PSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxv
Y2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAgSlNJ
bnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgZmls
ZU5hbWUpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgZXJyb3I7Ci0gICAg
SlNGdW5jdGlvbiogZXJyb3JIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFsmXShF
eGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBKU0Z1bmN0aW9uKiBlcnJvckhhbmRsZXIgPSBKU05hdGl2
ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwg
U3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKICAgICAgICAgZXJyb3IgPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9KTsKIAogICAgIHByb21pc2UtPnRoZW4oZXhlYywgbnVsbHB0ciwgZXJyb3JIYW5k
bGVyKTsKLSAgICBleGVjLT52bSgpLmRyYWluTWljcm90YXNrcygpOworICAgIHZtLmRyYWluTWlj
cm90YXNrcygpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTg1OCw2
ICsxODkxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTE4NzAsNyArMTkwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
aGUKICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgdG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJyb3Iu
bGluZSgpKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwgZXJyb3IubWVzc2FnZSgp
LCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0xOTA3LDEwICsxOTQzLDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGEKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT52bSgpLnNhbXBsaW5nUHJvZmlsZXIo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2FtcGxpbmcgcHJvZmls
ZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiKSkpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghdm0uc2Ft
cGxpbmdQcm9maWxlcigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNhbXBs
aW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIikpKSk7CiAKLSAgICBTdHJpbmcganNvblN0
cmluZyA9IGV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpLT5zdGFja1RyYWNlc0FzSlNPTigp
OworICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2FtcGxpbmdQcm9maWxlcigpLT5zdGFja1Ry
YWNlc0FzSlNPTigpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29k
ZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVj
LT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDQsNiArNDQsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IEVuY29kZWRKU1ZhCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBK
U09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU09i
amVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC02MSw3ICs2Myw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2sKICAgICAgICAgcmVzdWx0ID0g
anNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVmKSktPmZ1bmN0aW9uQ2FsbGJhY2soKShleGVjUmVm
LCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEo
KSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAK
ICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAgaWYgKCFyZXN1bHQp
CkBAIC03Myw2ICs3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJh
Y2sKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBB
UElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmNhbGxlZSgpOwogICAgIEpT
Q29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3Rv
clJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKQEAgLTkyLDEyICs5NiwxMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrCiAgICAgICAgICAgICByZXN1bHQgPSBjYWxs
YmFjayhjdHgsIGNvbnN0cnVjdG9yUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgp
LCAmZXhjZXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVj
LCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgfQogICAgICAgICAvLyByZXN1bHQgbXVzdCBiZSBh
IHZhbGlkIEpTVmFsdWUuCiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhy
ZXN1bHQpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTEzMyw2ICsxMzMsOSBAQCBTdHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjbGFzc05hCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVm
KGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAg
LTE1OSw3ICsxNjIsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJv
CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHkoY3R4LCB0aGlzUmVmLCBw
cm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
UmVhZE9ubHkgfCBEb250RW51bSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMCw2ICsyMDMsOSBAQCBib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
ZW50PgogSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bHRWYWx1ZShjb25z
dCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUgaGludCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAg
SlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTIxMCw3ICsyMTYsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IDA7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGNvbnZlcnRUb1R5cGUoY3R4
LCB0aGlzUmVmLCBqc0hpbnQsICZleGNlcHRpb24pOwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bikgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9K
UyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChyZXN1bHQpCkBA
IC0yMjQsNiArMjMwLDkgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1
bAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CkBAIC0yNDIsNyArMjUx
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFt
ZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2Vw
dGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQpAQCAtMjU5LDcgKzI2
OCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIGVu
dHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMjczLDcgKzI4Miw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJv
cGVydHkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0
IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0yODUsNiArMjk0LDkgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OnB1dChKU0NlbAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVm
KGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAg
LTMwMyw3ICszMTUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRl
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4LCB0aGlzUmVmLCBwcm9w
ZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzIwLDcgKzMzMiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQo
KSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVj
LCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRp
b24pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
ICAgIH0KQEAgLTM0Miw2ICszNTQsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
cHV0QnlJbmRlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFj
a09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNS
ZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTM1OSw3ICszNzQsNyBAQCBib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhj
ZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CkBAIC00MDgsNiArNDIzLDkgQEAgQ29uc3RydWN0VHlwZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OgogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1Zh
bHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmNhbGxl
ZSgpOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmpl
Y3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rvcik7CkBAIC00MjYsNyArNDQ0
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3RydWN0b3IoZXhlY1JlZiwgY29uc3RydWN0
b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwor
ICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4
Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNDM4LDYgKzQ1Niw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50PjoKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlND
YWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4ob2Jq
ZWN0KTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2Jq
ZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTQ1Miw3ICs0NzMsNyBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gaGFzSW5zdGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFsdWVSZWYsICZleGNlcHRp
b24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMo
ZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAgICAgfQpAQCAtNDc1LDYgKzQ5Niw5IEBAIENhbGxUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0Q2EKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVkSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBKU09iamVj
dFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU09iamVjdFJl
ZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCku
dG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC00OTMsNyArNTE3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNP
YmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwor
ICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4
Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNTcwLDYgKzU5NCw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojppbmhlcml0cygKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3RS
ZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIAogICAgIGlmIChTdHJpbmdJbXBsKiBuYW1l
ID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CkBAIC01ODQsNyArNjExLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gZ2V0UHJvcGVydHkodG9SZWYoZXhlYyksIHRoaXNSZWYsIGVudHJ5LT5wcm9wZXJ0
eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBl
eGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKQEAgLTYwMSw2ICs2MjgsOSBAQCBK
U1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNG
dW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgCiAg
ICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlkZSBwcm9wZXJ0eS4KQEAgLTYxMyw3ICs2
NDMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlv
bnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBp
ZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1l
KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxi
YWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgSlNPYmplY3QqIG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iai0+
Z2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXNPYmotPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBvLCBlbnRyeS0+YXR0
cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG8pOwpAQCAtNjIzLDEyICs2NTIsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5IGRlZmluZWQgd2l0aCBO
VUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5IGRlZmluZWQgd2l0aCBO
VUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFj
a0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmpl
Y3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgCiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwpAQCAtNjQ2LDcgKzY3OCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBnZXRQcm9wZXJ0eSh0b1JlZihleGVjKSwgdGhpc1JlZiwgcHJvcGVydHlOYW1l
UmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodmFsdWUpCkBAIC02NTUs
NyArNjg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0
IGRvZXNuJ3QgZXhpc3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRo
YXQgZG9lc24ndCBleGlzdC4iKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw5ICsxMDAsMTEgQEAgaW5saW5lIFR5cGVkQXJyYXlUeXBlIHRvVHlw
ZWRBcnJheVR5cGUoSgogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVR5cGVkQXJyYXkoRXhlY1N0
YXRlKiBleGVjLCBKU1R5cGVkQXJyYXlUeXBlIHR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBzd2l0Y2ggKHR5cGUpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjA5Niw4ICsyMDk2LDEwIEBACiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07
CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKIAkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMw
IC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUyRTZBN0IxRDZFQTYy
QzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2NvcGUu
Y3BwICovOyB9OwogCQlGRTMxOEZERjFDQUM5ODI3MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBF
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OworCQlGRTM0MjIxMjFENkI4MUMzMDAz
MkJFODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNTFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xs
YXJWTS5jcHAgKi87IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZN
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVF
MjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU3MUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90
eXBlLmNwcCAqLzsgfTsKQEAgLTIxMjQsNiArMjEyNiw3IEBACiAJCUZFNTA2ODY3MUFFMjVFMjgw
MDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVy
cmVkU291cmNlRHVtcC5jcHAgKi87IH07CiAJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87IH07
CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEEx
RUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQgLyogVGhyb3dTY29wZUxv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2OEM2MzcxQjkwREUw
NDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1h
Y3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFNjhDNjM4MUI5MERFMEIwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxl
clByaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAg
Ki87IH07CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3QkE2MEQxQTFB
N0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBAIC00Mzk4LDggKzQ0MDEs
MTAgQEAKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENMb29wLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9MTEludENM
b29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkU2QTdBMUQ2RUE1RkUwMDYw
Rjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMxOEZE
RDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMThGREUx
Q0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0MjIxMTFENkI4MThDMDAz
MkJFODggLyogVGhyb3dTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aHJvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFEREI3
QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk1Qcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyNiw2ICs0NDMxLDcgQEAKIAkJ
RkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyog
Vk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZN
RW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTkzMkE2MTgz
QzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
NjAyOUQ4MUQ2RTFFMzMwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyb3dTY29wZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2Vt
YmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2
OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBW
ZXJpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwVmVy
aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEyOSw2ICs2MTM1LDkg
QEAKIAkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5o
ICovLAogCQkJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3Bw
ICovLAogCQkJCTBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAq
LywKKwkJCQlGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi8sCisJ
CQkJRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLywKKwkJCQlGRTYw
MjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0aW9uLmggKi8sCiAJCQkJMEY1
NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8sCiAJCQkJMEYy
QjY2RDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9ycy5oICovLAogCQkJCTBG
MkI2NkQ5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCkBA
IC03NjM1LDYgKzc2NDQsNyBAQAogCQkJCUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5j
dGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThD
QTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJ
bmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLApAQCAtNzY3Niw2ICs3Njg2LDcgQEAK
IAkJCQkwRkUwNTAxQTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkMwMUMxMTA0MUEwMDM5MEZERCAvKiBKSVRSaWdo
dFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0
NTMxNDYgLyogSW50bE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNjAyOUQ5
MUQ2RTFFNEYwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTA1MDFCMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZFMDE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMTE3QjZCNUFCMDBBN0FFM0YgLyogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTc3LDYgKzkx
ODgsNyBAQAogCQkJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xv
d1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJFOTNBRDEwMDEzQzg4
RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUyRTZBN0IxRDZF
QTYyQzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYx
QjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1h
Y3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDggKzEzOCwxMCBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoRXhl
Y1N0YXRlKiBlCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIHZtLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0
ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgbGVu
Z3RoIGlzIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwg
c2l6ZSkpOwpAQCAtNzI1LDEyICs3MjcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZQogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CiAgICAgCiAgICAgaWYgKCFiYXNlLmluaGVyaXRzKFJl
Z0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlm
ICghaW5wdXQpCkBAIC03NjksMTIgKzc3MiwxMyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWdFeHBUZXN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2UgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKIAogICAgIGlmICghYmFzZS5pbmhlcml0cyhSZWdF
eHBPYmplY3Q6OmluZm8oKSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtOTMzLDkgKzkzNywxMCBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5V2l0CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoKnZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpCi0gICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90
IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpKSk7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91
Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSkpKTsKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJy
YXk6OmNyZWF0ZSgqdm0sIGFycmF5U3RydWN0dXJlLCBzaXplKTsKICAgICByZXN1bHQtPmJ1dHRl
cmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYmFja2luZyBzdG9yZSBpcyBpbiB0by1zcGFjZS4K
QEAgLTEzODgsOSArMTM5MywxMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFr
ZVJvcGUyCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZWZ0LT5sZW5ndGgo
KSwgcmlnaHQtPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTQwMSw5ICsxNDA3LDEwIEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTMKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc3VtT3ZlcmZs
b3dzPGludDMyX3Q+KGEtPmxlbmd0aCgpLCBiLT5sZW5ndGgoKSwgYy0+bGVuZ3RoKCkpKSB7Ci0g
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0xNDE0LDYgKzE0MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Ry
Q2F0MihFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgSlNTdHJpbmcqIHN0cjEgPSBKU1ZhbHVlOjpkZWNvZGUoYSkudG9T
dHJpbmcoZXhlYyk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7IC8vIEltcG9zc2libGUs
IHNpbmNlIHdlIG11c3QgaGF2ZSBiZWVuIGdpdmVuIHByaW1pdGl2ZXMuCkBAIC0xNDIxLDcgKzE0
MjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MihFCiAgICAgQVNT
RVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KHN0
cjEtPmxlbmd0aCgpLCBzdHIyLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MzIsNiArMTQ0MCw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1N0
cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhleGVjKTsKICAgICBBU1NF
UlQoIXZtLmV4Y2VwdGlvbigpKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ugd2UgbXVzdCBoYXZlIGJl
ZW4gZ2l2ZW4gcHJpbWl0aXZlcy4KQEAgLTE0NDEsNyArMTQ1MCw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsK
IAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oc3RyMS0+bGVuZ3RoKCksIHN0cjItPmxl
bmd0aCgpLCBzdHIzLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1NDUsNyArMTU1NCw4IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2Nv
cGUpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZU9mVmFyYXJncyhF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudHMsIGludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQpCkBAIC0xNzMyLDEzICsxNzQyLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZv
dW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8oZ2V0UHV0SW5mb0JpdHMpOwog
ICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91
bmQpCi0gICAgICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZp
bmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9
CiAKQEAgLTE3NDYsNyArMTc1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2UKICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBwcm92ZSB3
ZSBuZWVkIGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNoZWNrIG9uIHRoZSBzbG93
IHBhdGguCiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywg
aWRlbnQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBqc1REWlZhbHVlKCkpIHsKLSAgICAg
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9y
KGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTc2
MCw2ICsxNzcxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKGV4ZWMsIGltcGwpOwogICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0
cyk7CkBAIC0xNzcxLDEzICsxNzgzLDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXREeW5hbWljVmEKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBpZGVudCwgc2xvdCk7CiAg
ICAgICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBqc1REWlZhbHVlKCkpIHsK
LSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVERaRXJy
b3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91
bmQgJiYgIWhhc1Byb3BlcnR5KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OSArOTUsMTIgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoRQogCiBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHNjcmlwdFZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1ZS5pc1N0cmluZygpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVz
dCBiZSBhIHN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CiAKICAgICBTdHJp
bmcgcHJvZ3JhbSA9IHNjcmlwdFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMDcsNyArMTEwLDcgQEAgSlNWYWx1ZSBK
U0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaQogICAgIEpTT2JqZWN0KiBzY29wZUV4dGVu
c2lvbiA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gSlNDOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjLCBtYWtlU291cmNlKHByb2dy
YW0pLCBzY29wZUV4dGVuc2lvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NywxMjAg
Kzc3LDE1NiBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVB
dHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0
ZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29uc3RydWN0b3JOYW1lKGV4ZWMpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vh
a01hcFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFs
dWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha01hcFNpemUoZXhl
YykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT53ZWFrTWFwRW50cmllcyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRT
aXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtTZXRTaXplKGV4ZWMpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBK
U0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3Rl
ZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+d2Vha1NldEVudHJpZXMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJp
ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXRlcmF0b3JFbnRyaWVzKGV4ZWMp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oZXhlYykpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3Rl
ZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1
YnR5cGUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGV4ZWMpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmpl
Y3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PmdldEludGVybmFsUHJvcGVydGllcyhleGVjKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDkgKzc3LDEyIEBAIEpT
SmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2YVNjcmlwdENhbGwKIAogSlNWYWx1ZSBKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgc2NyaXB0VmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3Ry
aW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
biBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBzY3Jp
cHQgPSBzY3JpcHRWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtODksNyArOTIsNyBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlw
dENhbGxGcmFtZTo6ZXZhbHVhdGVXCiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uID0gZXhl
Yy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsKCku
ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4dGVuc2lvbiwgZXhjZXB0
aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzYsMTEwICs3NiwxNDMgQEAgdm9pZCBKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGU6OmZpbgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25zKGV4ZWMpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1
dGVDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jYWxsZXIoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZVNvdXJjZUlEKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJh
bWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c291
cmNlSUQoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlw
dENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5saW5lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0ph
dmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2
YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5jb2x1bW4oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uTmFtZShleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2Nv
cGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlQ2hhaW4oZXhl
YykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENh
bGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT50aGlzT2JqZWN0KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPmlzVGFpbERlbGV0ZWQoZXhlYykpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAsIG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQogICAgICAgICAg
ICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlvbi0+c2NvcGUoKS0+Z2xv
YmFsT2JqZWN0KCkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIFZNJiB2bSA9IG1fZW50cnlTY29w
ZS52bSgpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbk5vbklubGlu
ZSgpKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPnZtKCkuaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNpemUoYXJndW1l
bnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJl
cGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZt
X3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5z
Y29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAg
ICAgIG1fdmFsaWQgPSAhY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKTsKICAgICAgICAgfQogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTItMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCwg
MjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0xMjcsNiArMTI3LDkgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9u
TmFtZShWTSYgdm0pIAogCiBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0xMzQsMTAgKzEzNywxMCBAQCBKU1Zh
bHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFwcm9ncmFtLmlzU3RyaW5n
KCkpCiAgICAgICAgIHJldHVybiBwcm9ncmFtOwogCi0gICAgVG9wQ2FsbEZyYW1lU2V0dGVyIHRv
cENhbGxGcmFtZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZSk7CisgICAgVG9wQ2FsbEZyYW1l
U2V0dGVyIHRvcENhbGxGcmFtZSh2bSwgY2FsbEZyYW1lKTsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYg
KCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgY2FsbEZyYW1lLT52bSgp
LnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlRXZhbEVycm9yKGNhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KICAgICBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5n
KHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUpOwpAQCAtMTgxLDcgKzE4NCw3IEBAIEpTVmFsdWUg
ZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ly8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93
biBleGNlcHRpb25zLgotICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24o
KSk7CisgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAgICAgICAgIGV2YWwgPSBj
YWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVy
Q29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgcHJvZ3JhbVNv
dXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKQEAgLTE5MCwxNyArMTkzLDIwIEBAIEpTVmFsdWUg
ZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB9CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxlckZyYW1lLT50aGlzVmFsdWUoKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjYWxsRnJhbWUtPnZtKCkuaW50ZXJwcmV0ZXI7CisgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gdm0uaW50ZXJwcmV0ZXI7CiAgICAgcmV0dXJuIGludGVycHJldGVyLT5leGVjdXRl
KGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29wZUNoYWluKTsKIH0KIAogdW5z
aWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVu
dHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFt
ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cy5pc0NlbGwoKSkpIHsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IAotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVh
dGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFtZSwgYXJndW1lbnRz
KSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUludmFs
aWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCBhcmd1bWVudHMpKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApAQCAtMjE1LDcgKzIyMSw3IEBAIHVuc2lnbmVk
IHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnIKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICAgICAgY2FsbEZyYW1lLT52
bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0
ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CkBAIC0yMzcsMjEgKzI0MywyNSBAQCB1bnNpZ25lZCBzaXplT2ZW
YXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiAKIHVuc2lnbmVkIHNpemVGcmFtZUZvckZvcndhcmRB
cmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgdW5zaWduZWQgbnVtVXNlZFN0
YWNrU2xvdHMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxlZUZyYW1lRm9yVmFyYXJncyhjYWxsRnJhbWUs
IG51bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGggKyAxKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmVu
c3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVycygpKSkpCi0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0K
IAogdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0m
IHZtLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQz
Ml90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVPZlZhcmFyZ3MoY2FsbEZy
YW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAKICAgICBDYWxsRnJhbWUq
IGNhbGxlZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0
YWNrU2xvdHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBtYXhBcmd1
bWVudHMgfHwgIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVy
cygpKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKKyAg
ICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTgyMiwxNSArODMyLDE2IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKIHsKICAgICBKU1Njb3BlKiBzY29wZSA9IHRo
aXNPYmotPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZSgpOwogICAgIFZNJiB2bSA9ICpzY29w
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdGhyb3dTY29wZS5l
eGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgaWYg
KHZtLmlzQ29sbGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUs
IHRocm93U2NvcGUpKTsKIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZSAicHJvZ3JhbSIgaXMg
YWN0dWFsbHkganVzdCBhIEpTT04gb2JqZWN0LiBJZiBzbywKICAgICAvLyB3ZSdsbCBoYW5kbGUg
dGhlIEpTT04gb2JqZWN0IGhlcmUuIEVsc2UsIHdlJ2xsIGhhbmRsZSByZWFsIEpTIGNvZGUKQEAg
LTg3MSwyMiArODgyLDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4
ZWMKICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBKU09OUFBhdGhbaV0ubV9wYXRoRW50
cnlOYW1lLCBzbG90KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsRnJh
bWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGNh
bGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Nj
b3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ld
Lm1fcGF0aEVudHJ5TmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFp
bGVkSlNPTlA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlT2JqZWN0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIEpTT05QUGF0aFtpXS5t
X3BhdGhFbnRyeU5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChjYWxsRnJhbWUsIEpTT05Q
UGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlTG9va3VwOiB7CiAgICAgICAgICAg
ICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChjYWxsRnJhbWUsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU09OUFBhdGhbaV0ubV9wYXRoSW5kZXgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAg
IGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTg5OSwyOSArOTEwLDI5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgICAgIHN3aXRjaCAoSlNPTlBQYXRoLmxhc3QoKS5t
X3R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlQ2FsbDogewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBiYXNlT2JqZWN0LmdldChjYWxsRnJhbWUs
IEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAo
Y2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBpZiAodGhyb3dTY29w
ZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAg
ICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNy
ZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGNhbGxGcmFtZSwgZnVuY3Rpb24pKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90QUZ1bmN0aW9uRXJyb3IoY2FsbEZyYW1lLCBmdW5jdGlvbikpOwogICAgICAgICAgICAg
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGpzb25Bcmc7CiAgICAgICAgICAgICAgICAganNvbkFy
Zy5hcHBlbmQoSlNPTlBWYWx1ZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBKU09OUFBhdGguc2l6ZSgpID09IDEgPyBqc1VuZGVmaW5lZCgpOiBiYXNlT2JqZWN0OwogICAg
ICAgICAgICAgICAgIEpTT05QVmFsdWUgPSBKU0M6OmNhbGwoY2FsbEZyYW1lLCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGpzb25BcmcpOwotICAgICAgICAgICAgICAg
IGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlmICh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlRG90OiB7CiAgICAgICAgICAgICAgICAgYmFzZU9iamVj
dC5wdXQoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEVudHJ5TmFtZSwgSlNPTlBW
YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKU09OUFBhdGhFbnRyeVR5cGVMb29r
dXA6IHsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dEJ5SW5kZXgoY2FsbEZyYW1lLCBK
U09OUFBhdGgubGFzdCgpLm1fcGF0aEluZGV4LCBKU09OUFZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC05NDEsMTggKzk1MiwyMCBAQCBmYWlsZWRKU09OUDoKIAogICAgIC8vIENv
bXBpbGUgc291cmNlIHRvIGJ5dGVjb2RlIGlmIG5lY2Vzc2FyeToKICAgICBpZiAoSlNPYmplY3Qq
IGVycm9yID0gcHJvZ3JhbS0+aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXModm0sIGNhbGxGcmFt
ZSwgc2NvcGUpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKSk7CiAK
ICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBDb2RlQmxv
Y2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIGlmIChKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51bGxw
dHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jaykpCi0gICAgICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCBlcnJvcikpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBD
b2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEFTU0VSVCghdGhyb3dTY29wZS5l
eGNlcHRpb24oKSB8fCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGpzRHluYW1pY0Nhc3Q8RXhj
ZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBlcnJv
cikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBD
b2RlQmxvY2spOwogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVy
bWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUpOwogCiAgICAgaWYgKHNj
b3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKICAgICAgICAgc2Nv
cGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKQEAgLTk3MSw2ICs5ODQsOCBAQCBmYWls
ZWRKU09OUDoKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQog
ewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghY2FsbEZyYW1lLT5oYWRFeGNl
cHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtOTkzLDEzICsxMDA4LDE0IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3Bl
KHZtLCBnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNl
U29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgaWYgKGlzSlND
YWxsKSB7CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICAgICAgSlNPYmplY3Qq
IGNvbXBpbGVFcnJvciA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwganNDYXN0PEpTRnVuY3Rp
b24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICAg
ICAgQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihjb21waWxlRXJyb3IpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVy
cm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBj
b21waWxlRXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAg
ICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDA3
LDcgKzEwMjMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAg
ICAgICAgIG5ld0NvZGVCbG9jayA9IDA7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJp
Z2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5h
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAg
IFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAgIHByb3RvQ2FsbEZyYW1lLmluaXQo
bmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgp
KTsKQEAgLTEwMTUsMTEgKzEwMzEsMTIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoQ2FsbEZyYQogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKICAgICAgICAgLy8gRXhlY3V0
ZSB0aGUgY29kZToKLSAgICAgICAgaWYgKGlzSlNDYWxsKQorICAgICAgICBpZiAoaXNKU0NhbGwp
IHsKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7
Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRy
eVRvTmF0aXZlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
biksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTAzMCwxMiArMTA0NywxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxs
RnJhCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RU
eXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0JiBh
cmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBB
U1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xs
ZWN0b3JCdXN5KCkpOwogICAgIC8vIFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhh
dmUgdG8gcmV0dXJuIHNvbWV0aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQogICAgIC8vIGFscmVhZHkg
aW4gYW4gaW52YWxpZCBzdGF0ZS4KICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCi0gICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFt
ZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9IChj
b25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICBKU1Njb3BlKiBzY29wZSA9
IG51bGxwdHI7CkBAIC0xMDU0LDEzICsxMDczLDEzIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNvbnN0cnVjdCgKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkK
LSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgaWYgKGlzSlNDb25zdHJ1Y3Qp
IHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAgICBKU09iamVjdCogY29t
cGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPihjYWxsRnJhbWUsIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY29uc3RydWN0b3IpLCBzY29wZSwgQ29kZUZvckNvbnN0cnVjdCwgbmV3Q29kZUJsb2Nr
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKIAogICAg
ICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hv
dWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDY4LDcgKzEwODcsNyBAQCBKU09iamVj
dCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgIG5ld0NvZGVCbG9jayA9
IDA7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxG
cmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3Rv
Q2FsbEZyYW1lOwogICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBjb25zdHJ1
Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKQEAgLTEwOTUsNiArMTEx
NCw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKIENhbGxGcmFt
ZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUHJvdG9DYWxs
RnJhbWUqIHByb3RvQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSogYXJncykKIHsKICAg
ICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CiAgICAgCiAgICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtMTEwNCw3ICsxMTI0LDcgQEAgQ2FsbEZyYW1l
Q2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgZnVuY3Rpb24sIHNjb3Bl
LCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
Y2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJyb3IpOworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAg
cmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKICAgICB9CiAgICAgbmV3Q29kZUJsb2NrLT5tX3No
b3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtMTEyMCw3ICsxMTQwLDggQEAgQ2FsbEZy
YW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKSAKIHsKICAgICBWTSYgdm0gPSAqY2xv
c3VyZS52bTsKLSAgICAKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAgIGlmICh2bS5p
c0NvbGxlY3RvckJ1c3koKSkKQEAgLTExMjksNyArMTE1MCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNr
Q2hlY2tQb2ludDsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRp
b24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2Fs
bCgpLT5leGVjdXRlKCZ2bSwgY2xvc3VyZS5wcm90b0NhbGxGcmFtZSk7CkBAIC0xMTQwLDcgKzEx
NjEsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNjb3BlKQogewogICAgIFZNJiB2
bSA9ICpzY29wZS0+dm0oKTsKLSAgICAKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52
bSgpKTsKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICBBU1NFUlQoIXZtLmlzQ29s
bGVjdG9yQnVzeSgpKTsKQEAgLTExNTAsNyArMTE3Miw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1
cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKSk7ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAg
ICB1bnNpZ25lZCBudW1WYXJpYWJsZXMgPSBldmFsLT5udW1WYXJpYWJsZXMoKTsKICAgICBpbnQg
bnVtRnVuY3Rpb25zID0gZXZhbC0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7CkBAIC0xMTgxLDcg
KzEyMDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAgICAg
ICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGV2YWwtPnByZXBhcmVGb3JFeGVjdXRpb248RXZhbEV4ZWN1dGFibGU+KGNhbGxGcmFt
ZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVF
cnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKICAgICAgICAgY29kZUJsb2Nr
ID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKICAgICB9CiAKQEAgLTEx
OTIsNyArMTIxNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEK
ICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT52YXJpYWJs
ZShpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9u
bWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAg
ICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xv
dChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBp
biBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSksICInIikpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGlu
IGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKQEAgLTEyMDAsNyArMTIyMiw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNh
bGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VTdHJpbmcoIkNh
bid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmco
ZnVuY3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBtYWtl
U3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAn
IiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpAQCAtMTIyOSw3ICsxMjUxLDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5z
aG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUp
OwogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBh
cmFtZXRlciBmb3IgJ3RoaXMnLgogCkBAIC0xMjQ1LDYgKzEyNjcsNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
KE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCgh
dm0uZXhjZXB0aW9uKCkpOwpAQCAtMTI1NSwxOSArMTI3OCwxOSBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2
bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRv
UmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9j
ayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KGNhbGxG
cmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBp
bGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKICAgICAgICAgY29kZUJs
b2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKICAg
ICB9CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxG
cmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIGlmIChzY29wZS0+c3RydWN0dXJl
KCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNjb3BlLT5mbGF0dGVuRGlj
dGlvbmFyeU9iamVjdCh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogewogICAgIC8vIFdlIHBh
c3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRoZSBjYWxsZnJhbWUgaGFzbid0IGJl
ZW4gcG9wdWxhdGVkLgogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgVk1FbnRyeUZyYW1lKiB2bUVu
dHJ5RnJhbWUgPSB2bS0+dG9wVk1FbnRyeUZyYW1lOwogICAgIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwpAQCAtOTgsNDMgKzk5LDQ4IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKICAgICB9CiAKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwg
Y2FsbGVyRnJhbWUpOwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsK
KyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwgc2NvcGUpOwogfQogCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93
RGl2aWRlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAgICBWTUVu
dHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFt
ZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKCp2bSk7
Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJvcihjYWxsZXJG
cmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRpdmlzaW9uIG92ZXJmbG93
LiIpKSk7CisgICAgdGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJv
cihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRpdmlzaW9u
IG92ZXJmbG93LiIpKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd091
dE9mQm91bmRzQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisK
ICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFt
ZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZt
RW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJv
cihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vzcy4iKSkpOwor
ICAgIHRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbGVy
RnJhbWUsIEFTQ0lJTGl0ZXJhbCgiT3V0LW9mLWJvdW5kcyBhY2Nlc3MuIikpKTsKIH0KICNlbmRp
ZgogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3Vu
dCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDYWxs
KTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVudHJ5RnJhbWUq
IHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwogICAgICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwg
Y2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFt
ZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lLCBzY29wZSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTE0MywxMyArMTQ5LDE0
IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHkKIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSgqdm0pOwogCiAgICAgaW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25T
bG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgKnZtLCBDb2RlRm9yQ29uc3RydWN0KTsKICAg
ICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVudHJ5RnJhbWUqIHZtRW50
cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVy
RnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwogICAgICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwgY2FsbGVy
RnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSk7Cisg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lLCBzY29wZSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTI1NCw5ICsyNjEsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAgIAogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwotICAgIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAg
ICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9y
KGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAgICAgCkBAIC0yODMsMTEgKzI5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIHN0dWJJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIHZtLT50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJv
cihleGVjLCBiYXNlKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBAIC03OTQsNiArODAzLDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAog
ICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKIApAQCAtODE5LDcgKzgyOSw3IEBAIHN0
YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgfQogICAgIAog
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMs
IGNhbGxlZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90
QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCiAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xv
d1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC04NDYsNyArODU2LDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgIH0KICAgICAK
ICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKLSAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9y
KGV4ZWMsIGNhbGxlZSkpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVO
b3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KAogICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1Bh
dGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICByZWludGVy
cHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKQEAgLTg1Niw2ICs4NjYsOCBAQCBTbG93
UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAg
ICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIApAQCAtODY1LDYgKzg3Nyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGkKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjYWNoZSB0aGVzZSBraW5kcyBv
ZiBjYWxscy4gVGhleSBjYW4gYmUgY29tbW9uIGFuZCBjdXJyZW50bHkgdGhleSBhcmUKICAgICAg
ICAgLy8gZXhwZW5zaXZlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ0NDU4CisgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgICAg
ICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExp
bmtJbmZvKTsKICAgICB9CiAKQEAgLTg5Miw3ICs5MDUsNyBAQCBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CiAKICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5j
b25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7
Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2Fs
bGVlKSk7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAg
IHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC05MDAsOCArOTEzLDkgQEAgU2xvd1BhdGhS
ZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogCiAgICAgICAgIENvZGVCbG9jayoqIGNv
ZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKICAgICAgICAg
SlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9u
PEZ1bmN0aW9uRXhlY3V0YWJsZT4oZXhlY0NhbGxlZSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNv
ZGVCbG9ja1Nsb3QpOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBy
ZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CiAgICAgICAgIGlmIChlcnJvcikg
ewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cisg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAg
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLT5nZXRDVElT
dHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
S2VlcFRoZUZyYW1lKSk7CkBAIC05MjcsNiArOTQxLDggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSB2aXJ0dWFsRm9yV2l0aAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIApAQCAtOTQ3LDcgKzk2Myw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAgICAgIGlmICghaXNDYWxs
KGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0
cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywg
ZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5n
ZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTU2LDcgKzk3Miw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgICAgIENvZGVCbG9jayoqIGNv
ZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKICAgICAgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1
dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGV4ZWNDYWxsZWUsIGZ1bmN0aW9uLCBzY29wZSwga2lu
ZCwgKmNvZGVCbG9ja1Nsb3QpOwogICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgICAgICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRD
VElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTY0LDcgKzk4MCw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSkgewotICAgICAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVj
dG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5j
dGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAg
ICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdl
bmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtMTEzOSw5ICsxMTU1
LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmUKICAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUmVnRXhwKiBy
ZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwogICAgIGlmICghcmVnZXhw
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgcmVnZXhwLT5lcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnZXhwLT5lcnJv
ck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KIApAQCAtMTE1Niw5ICsxMTc0LDEwIEBAIFVudXNlZFB0ciBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkhhbmRsZVcKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJp
Z2dlclRlcm1pbmF0aW9uKGV4ZWMpKSkKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
JnZtKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNjcsMTMgKzExODYsMTUgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhdGljRQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgZXJyb3JNZXNzYWdlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChlcnJvck1lc3NhZ2VWYWx1ZS5pc1N0cmluZygpKTsKICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gYXNTdHJpbmcoZXJyb3JNZXNzYWdlVmFsdWUpLT52YWx1ZShleGVj
KTsKICAgICBpZiAocmVmZXJlbmNlRXJyb3JGbGFnKQotICAgICAgICB2bS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IGVycm9yTWVzc2FnZSkpOwogICAgIGVsc2UKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
ZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9y
TWVzc2FnZSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3Rh
dGUqIGV4ZWMsIGludDMyX3QgZGVidWdIb29rSUQpCkBAIC0xODcxLDEzICsxODkyLDE0IEBAIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVj
dCogYmFzZU9iaiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7
CiAgICAgaWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9i
aiwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHVpZCkpOwogICAgIGlmICghY291bGRE
ZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9
CiAKQEAgLTE4OTAsNiArMTkxMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5VmEKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7CiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEtleSk7CkBAIC0xOTA5LDcgKzE5MzIsNyBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeVZhCiAgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCBwcm9wZXJ0eSk7
CiAgICAgfQogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKQEAgLTIwMjYsNiArMjA0OSw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIHBjID0g
Ynl0ZWNvZGVQQzsKIApAQCAtMjAzOSw3ICsyMDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdl
dFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBp
ZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAg
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
dGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtMjA0OCw3
ICsyMDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAg
ICAgICAgICAgLy8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3ZlIHdlIG5lZWQgYSBURFog
Y2hlY2ssIHdlIG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNsb3cgcGF0aC4KICAgICAg
ICAgICAgIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOwogICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBqc1REWlZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMDY1LDYgKzIwOTAsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
VG9TY29wZShFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJbnN0cnVjdGlvbiogcGMgPSBieXRlY29kZVBDOwog
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKQEAgLTIwOTIs
MjAgKzIxMTksMjAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRQog
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldCk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRP
d25Qcm9wZXJ0eVNsb3Qoc2NvcGUsIGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAgICAgaWYgKHNs
b3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7Cisg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJv
cihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJv
cGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywg
aWRlbnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHNjb3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVu
a25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNjb3BlLCBleGVjLCBpZGVu
dCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChleGVjLT52bSgpLmV4Y2VwdGlvbigpKQor
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29tbW9uU2xv
d1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZXhlYywgY29kZUJsb2NrLCBwYywgc2Nv
cGUsIGdldFB1dEluZm8sIHNsb3QsIGlkZW50KTsKQEAgLTIxMTUsOSArMjE0MiwxMCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIEpTVmFsdWUg
ZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEV4Y2VwdGlvblZhbHVlKTsK
LSAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUpOworICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb25WYWx1ZSk7CiAKICAgICAvLyBSZXN1bHRz
IHN0b3JlZCBvdXQtb2YtYmFuZCBpbiB2bS50YXJnZXRNYWNoaW5lUENGb3JUaHJvdyAmIHZtLmNh
bGxGcmFtZUZvckNhdGNoCiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCkgXAogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7ICAgICAgXAotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKQorICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsgXAorICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNp
Zm5kZWYgTkRFQlVHCiAjZGVmaW5lIExMSU5UX1NFVF9QQ19GT1JfU1RVQlMoKSBkbyB7IFwKQEAg
LTkyLDE0ICs5MywxNCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICNkZWZp
bmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCAwKQogCiAjZGVmaW5lIExM
SU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGV4
Y2VwdGlvblRvVGhyb3cpOyAgICAgICBcCiAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX0VORF9J
TVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBkb0V4Y2VwdGlvbkZ1enppbmdJZkVuYWJsZWQoZXhl
YywgIkxMSW50U2xvd1BhdGhzIiwgcGMpOyAgICBcCi0gICAgICAgIGlmIChVTkxJS0VMWSh2bS5l
eGNlcHRpb24oKSkpIHsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpKSB7ICAgICAgICAgXAogICAgICAgICAgICAgcGMgPSByZXR1
cm5Ub1Rocm93KGV4ZWMpOyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTUyLDcgKzE1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCiAjZGVmaW5lIExMSU5UX0NB
TExfVEhST1coZXhlYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKF9fY3RfZXhlYywg
ZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRocm93RXhjZXB0
aW9uKF9fY3RfZXhlYywgdGhyb3dTY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICBcCiAg
ICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoMCwgY2FsbFRvVGhyb3coX19jdF9leGVjKSk7ICAg
ICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKQEAgLTE2MCw3ICsxNjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgRXhlY1N0YXRlKiBf
X2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjQ2FsbGVlID0gKGV4ZWNDYWxsZWUpOyAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgZG9FeGNlcHRpb25GdXp6aW5nSWZFbmFibGVkKF9fY2Nl
X2V4ZWMsICJMTEludFNsb3dQYXRocy9jYWxsIiwgbnVsbHB0cik7IFwKLSAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoMCwg
Y2FsbFRvVGhyb3coX19jY2VfZXhlY0NhbGxlZSkpOyAgICAgIFwKICAgICB9IHdoaWxlIChmYWxz
ZSkKIApAQCAtNDY2LDYgKzQ2Nyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgVk1FbnRyeUZyYW1lKiB2bUVudHJ5RnJhbWUgPSB2bS50b3BWTUVudHJ5RnJhbWU7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7
CiAgICAgaWYgKCFjYWxsZXJGcmFtZSkgewpAQCAtNDgyLDkgKzQ4NSw5IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIGRhdGFMb2dGKCJOdW0gY2FsbGVlIHJlZ2lzdGVy
cyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICBk
YXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMp
OwogCi0gICAgZGF0YUxvZ0YoIkN1cnJlbnQgT1Mgc3RhY2sgZW5kIGlzIGF0ICVwLlxuIiwgZXhl
Yy0+dm0oKS5zb2Z0U3RhY2tMaW1pdCgpKTsKKyAgICBkYXRhTG9nRigiQ3VycmVudCBPUyBzdGFj
ayBlbmQgaXMgYXQgJXAuXG4iLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKICNpZiAhRU5BQkxFKEpJ
VCkKLSAgICBkYXRhTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5kIGlzIGF0ICVwLlxuIiwg
ZXhlYy0+dm0oKS5jbG9vcFN0YWNrTGltaXQoKSk7CisgICAgZGF0YUxvZ0YoIkN1cnJlbnQgQyBM
b29wIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIsIHZtLmNsb29wU3RhY2tMaW1pdCgpKTsKICNlbmRp
ZgogCiAjZW5kaWYKQEAgLTUwMiw3ICs1MDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFj
a19jaGVjaykKICNlbmRpZgogCiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0p
OwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwgdGhyb3dTY29wZSk7CiAgICAgcGMgPSByZXR1
cm5Ub1Rocm93KGNhbGxlckZyYW1lKTsKICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKTsK
IH0KQEAgLTc4NCwxMCArNzg3LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfaWQKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CiB9CiAK
LWlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsIEpTVmFsdWUgc3Vic2NyaXB0KQorc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRC
eVZhbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3Vic2NyaXB0KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmlu
ZygpKSkgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBTdHJ1Y3R1cmUm
IHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAg
IGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CiAgICAg
ICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5n
ID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVjKSkgewpA
QCAtODA2LDEwICs4MTAsMTAgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBl
eGVjLAogICAgIH0KIAogICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGV4ZWMp
OwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8gcHJvcGVydHkgPSBz
dWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7CiB9CkBAIC04
MTcsNyArODIxLDcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLAog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlW
YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKHZt
LCBleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCkBAIC04
MjcsNiArODMxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YQog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CiAgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShz
dWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5h
c1VJbnQzMigpOwpAQCAtODM1LDE2ICs4NDAsMTYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YQogICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGkpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2
YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUsIGV4ZWMtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQotICAgICAgICBiYXNlVmFsdWUucHV0
QnlJbmRleChleGVjLCBpLCB2YWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KTsKKyAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwgdmFsdWUsIGlzU3RyaWN0
TW9kZSk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGV4ZWMtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
LCBpc1N0cmljdE1vZGUpOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKICAgICBMTElOVF9FTkQoKTsKIH0KQEAgLTExODYsNiArMTE5MSw3IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlY0NhbGxlZS0+Y2xlYXJSZXR1
cm5QQygpOwpAQCAtMTIzOCwxOCArMTI0NCwyMCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBl
IGhhbmRsZUhvc3RDYWxsCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSAwKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZy
YW1lKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAg
ICAgZGF0YUxvZ0YoIlBlcmZvcm1pbmcgY2FsbCB3aXRoIHJlY29yZGVkIFBDID0gJXBcbiIsIGV4
ZWMtPmN1cnJlbnRWUEMoKSk7CiAjZW5kaWYKICAgICAKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVu
Y3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKLSAgICBpZiAoIWNhbGxl
ZUFzRnVuY3Rpb25DZWxsKQorICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpIHsKKyAgICAg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChl
eGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7Ci0gICAgCisgICAgfQogICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNl
bGwpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpOwotICAg
IFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9
IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQ
dHI7CkBAIC0xMzM1LDEyICsxMzQzLDE0IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2Vu
ZXJpY0NhbGwoRXgKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQogewogICAg
IExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAg
IHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0KQogewogICAgIExMSU5UX0JFR0lOX05P
X1NFVF9QQygpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBnZW5lcmlj
Q2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKQEAgLTE0OTgsNiArMTUwOCw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1ZykKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKQogewogICAgIExMSU5UX0JFR0lOX05P
X1NFVF9QQygpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBnZW5lcmljVW53
aW5kKCZ2bSwgZXhlYyk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KQEAgLTE1MDUsNyArMTUx
Niw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXgKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwotCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+
aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2Fz
dDxKU09iamVjdCo+KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CiAgICAgR2V0UHV0SW5mbyBnZXRQ
dXRJbmZvKHBjWzRdLnUub3BlcmFuZCk7CkBAIC0xNTE2LDcgKzE1MjYsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgTExJTlRfUkVUVVJOKHNjb3BlLT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90
JiBzbG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAg
aWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5k
ZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICAgICAgfQogCkBAIC0xNTI1LDcgKzE1MzUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgICAgICAgICAvLyBXaGVuIHdlIGNhbid0IHN0YXRpY2Fs
bHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJmb3JtIHRoZSBjaGVjayBv
biB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVj
LCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpzVERaVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
RFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoZXhlYywgdm0s
IHBjLCBzY29wZSwgc2xvdCwgaWRlbnQpOwpAQCAtMTU4Miw5ICsxNTkyLDkgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2Zp
bGVyKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoISF2bS5leGNl
cHRpb24oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoISF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsK
IAotICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0uZXhjZXB0aW9uKCkp
KQorICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odGhyb3dTY29wZS5leGNl
cHRpb24oKSkpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpOwogICAgIExMSU5UX1JFVFVSTl9UV08ocGMs
IDApOwogfQpAQCAtMTYxOSw5ICsxNjI5LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG8KIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93
X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUp
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgaWYgKCFleGVjKQogICAgICAg
ICBleGVjID0gcHJvdG9GcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
Ny0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmln
aHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTcz
LDE4ICs3MywyMCBAQCB2b2lkIEFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmso
RXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBuZXdUYXJnZXQp
CitKU1ZhbHVlIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBpZiAoIWxlbmd0aC5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXlO
ZWdhdGl2ZUluZGV4ZWQoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCAmbGVuZ3RoLCAxLCBu
ZXdUYXJnZXQpOwogICAgIAogICAgIHVpbnQzMl90IG4gPSBsZW5ndGgudG9VSW50MzIoZXhlYyk7
CiAgICAgaWYgKG4gIT0gbGVuZ3RoLnRvTnVtYmVyKGV4ZWMpKQotICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdl
ci4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxs
IGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5
QXJyYXkoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBuZXdUYXJnZXQpOwogfQogCi1z
dGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
Ny0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpT
T2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUg
cHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKK0pTVmFsdWUgY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1
aXJrKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIHByb3RvdHlwZSA9IEpTVmFsdWUoKSk7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJh
eUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCkBAIC02OCw2ICs2OSw5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHIKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLWlzYXJyYXkKIGlubGluZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWFyZ3Vt
ZW50VmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MSw3ICs4
NSw3IEBAIGlubGluZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU1YKIAogICAgICAg
ICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihhcmd1bWVudCk7CiAg
ICAgICAgIGlmIChwcm94eS0+aXNSZXZva2VkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNBcnJheSBjYW5ub3QgYmUgY2FsbGVkIG9u
IGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikpOworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNBcnJheSBjYW5ub3QgYmUg
Y2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGFyZ3VtZW50ID0gcHJveHktPnRhcmdl
dCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDkg
QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbgogdGVtcGxhdGU8SlNB
cnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CiB2b2lkIHNoaWZ0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRlciwgdW5zaWduZWQgY3Vy
cmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5zaWduZWQgbGVuZ3RoKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudENvdW50ID4gcmVzdWx0Q291bnQp
OwogICAgIHVuc2lnbmVkIGNvdW50ID0gY3VycmVudENvdW50IC0gcmVzdWx0Q291bnQ7CiAKQEAg
LTI4NiwxNCArMjg5LDE0IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGgKICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8pKSB7
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsgayA+IGxlbmd0aCAtIGNv
dW50OyAtLWspIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxl
dGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMzAyLDYgKzMwNSw5IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGgKIHRlbXBsYXRlPEpTQXJyYXk6OlNoaWZ0Q291bnRNb2RlIHNoaWZ0Q291bnRNb2RlPgogdm9p
ZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhl
YWRlciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5zaWdu
ZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0Q291
bnQgPiBjdXJyZW50Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gcmVzdWx0Q291bnQgLSBj
dXJyZW50Q291bnQ7CiAKQEAgLTMxMCw3ICszMTYsNyBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogCiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0IG92ZXJmbG93LgogICAg
IGlmIChjb3VudCA+IChVSU5UX01BWCAtIGxlbmd0aCkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjcsOCArMzMzLDggQEAgdm9pZCB1
bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIAogICAgICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRo
aXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKLSAgICAgICAg
fSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpAQCAtMzYxLDcgKzM2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgY3VzdG9tSm9pbkNhc2UgPSB0cnVlOwogCiAgICAg
aWYgKFVOTElLRUxZKGN1c3RvbUpvaW5DYXNlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhp
c09iamVjdCksICJdIikpOwogCiAgICAgLy8gNC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGlu
ZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGZ1bmMgcHJvdmlkaW5nIGFycmF5IGFz
IHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0eSBhcmd1bWVudHMgbGlzdC4KICAgICBpZiAoIWlz
SlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SG9zdCB8fCBjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24gIT0gYXJyYXlQcm90b0Z1bmNKb2luKQpAQCAtNjc0LDYgKzY4
MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc1Zh
bHVlKSkKQEAgLTY5NCw4ICs3MDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GCiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAx
KTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICBpZiAoIXRo
aXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCAtIDEpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgcHV0TGVuZ3RoKGV4ZWMsIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKQEAg
LTc0MCwxMSArNzQ5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0YKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2Uo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGdldExlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKICAgICBpZiAodm0uZXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC04MTIsNyArODIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAg
ICAgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgbG93ZXIpKSB7CiAgICAgICAgICAgICBpZiAo
IXZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRl
bGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CiAgICAgICAgIH0KIApAQCAtODIyLDcgKzgzMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHVw
cGVyKSkgewogICAgICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
OTAyLDYgKzkxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YK
ICAgICAvLyAxNS40LjQuMTIKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmog
PSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhl
Yyk7CiAgICAgaWYgKCF0aGlzT2JqKQpAQCAtOTY2LDcgKzk3OCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGRlbGV0ZUNvdW50KTsKICAgICAgICAgICAgIGlm
ICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGVsZXRlQ291bnQ7ICsraykg
ewogICAgICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmos
IGsgKyBiZWdpbik7CkBAIC0xMTIzLDYgKzExMzUsOCBAQCBzdGF0aWMgYm9vbCBtb3ZlRWxlbWVu
dHMoRXhlY1N0YXRlKiBleGVjCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25jYXRBcHBlbmRP
bmUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGZpcnN0LCBKU1ZhbHVlIHNlY29u
ZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBB
U1NFUlQoIWlzSlNBcnJheShzZWNvbmQpKTsKICAgICBBU1NFUlQoIXNob3VsZFVzZVNsb3dQdXQo
Zmlyc3QtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgQnV0dGVyZmx5KiBmaXJzdEJ1dHRlcmZseSA9
IGZpcnN0LT5idXR0ZXJmbHkoKTsKQEAgLTExMzUsNyArMTE0OSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBjb25jYXRBcHBlbmRPbmUoRXgKICAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVy
ZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJy
YXk6OmNyZWF0ZSh2bSwgcmVzdWx0U3RydWN0dXJlLCBmaXJzdEFycmF5U2l6ZSArIDEpOwogICAg
IGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBpZiAoIXJlc3VsdC0+YXBwZW5k
TWVtY3B5KGV4ZWMsIHZtLCAwLCBmaXJzdCkpIHsKICAgICAgICAgaWYgKCFtb3ZlRWxlbWVudHMo
ZXhlYywgdm0sIHJlc3VsdCwgMCwgZmlyc3QsIGZpcnN0QXJyYXlTaXplKSkgewpAQCAtMTE1NCw2
ICsxMTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUAogewog
ICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU0FycmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAKQEAgLTExOTcsNyArMTIxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b1AKICAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVyZSA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIHJlc3VsdFN0cnVjdHVyZSwgZmlyc3RBcnJheVNpemUg
KyBzZWNvbmRBcnJheVNpemUpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAK
ICAgICBpZiAodHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgZG91YmxlKiBidWZm
ZXIgPSByZXN1bHQtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDExLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY4
LDYgKzY4LDcgQEAgdm9pZCBCb29sZWFuUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbihmYWxzZSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmlu
ZygpKTsKQEAgLTc2LDcgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29s
ZWFuUHJvdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5zbWFsbFN0cmluZ3Mu
dHJ1ZVN0cmluZygpKTsKIAogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKEJvb2xlYW5PYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBpZiAoYXNC
b29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFs
c2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5zbWFsbFN0cmluZ3MuZmFs
c2VTdHJpbmcoKSk7CkBAIC04NywxMiArODgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib29sZWFuUHJvdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Q
cm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKEJvb2xlYW5PYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQm9vbGVhbk9iamVjdCh0aGlz
VmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw3ICs5MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBFTkRf
SU1QTCgpIFJFVFVSTl9UV08ocGMsIGV4ZWMpCiAKICNkZWZpbmUgVEhST1coZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdm0udGhyb3dFeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgIFwKKyAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgIFwKICAg
ICAgICAgUkVUVVJOX1RPX1RIUk9XKGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE0MCwxMyArMTQxLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBSRVRV
Uk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQogCi0jZGVmaW5lIENBTExfVEhST1coZXhlYywg
cGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IEV4ZWNTdGF0ZSogY3RFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIEluc3RydWN0aW9uKiBjdFBDID0gKHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENB
TExfRU5EX0lNUEwoY3RFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY3RFeGVjKSk7ICAgICAgICAg
ICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KICNkZWZpbmUgQ0FMTF9DSEVDS19FWENFUFRJ
T04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRXhl
Y1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0gKHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMs
OCArNzMsMTAgQEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdAogCiBp
bmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwgSlNWYWx1
ZSBiYXNlVmFsKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghYmFzZVZhbC5pc09iamVjdCgpKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZElu
UGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbCkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbCkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NSw3ICs4Nyw3IEBAIGlubGlu
ZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAgICAgcmV0dXJuIGJhc2VP
YmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkpOwogCiAgICAgYXV0byBwcm9wZXJ0eSA9IHByb3BOYW1l
LnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCisg
ICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5KTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4
Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsOSBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCisgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGVycm9yKTsKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwogICAg
IGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCB2bS0+ZXhjZXB0aW9uKCksICIuXG4iKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMCArMzcsMTMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBjaGFy
KiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0
cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0
RGF0YShjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7CiAgICAgaWYgKGNvbnN0cnVj
dFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIAogICAgIHJldHVybiBjb25zdHJ1Y3QoZXhlYywg
Y29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIGNv
bnN0cnVjdG9yT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNC0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28u
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMjAsOSArMzIwLDEwIEBAIHN0YXRp
YyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXQKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGZvcm1hdGVEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBEYXRlVGltZUZvcm1hdCBm
b3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0
aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAKQEAgLTUyMiwxMyArNTIz
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZt
KCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBh
c0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0Rh
dGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKTsKIAogICAgIGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3Jp
YW5EYXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQpAQCAtNTY4
LDkgKzU3MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRl
cm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwpAQCAtNTc4LDkgKzU4MSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0o
KSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRl
SW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRM
b2NhbGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIo
KSwgTG9jYWxlRGF0ZSkpOwpAQCAtNTg4LDkgKzU5MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvTG9jYWxlVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHRo
aXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlVGltZSkpOwpA
QCAtNTk4LDEzICs2MDMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1ByaW1p
dGl2ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0
aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1By
aW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7CiAKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJz
dCBhcmd1bWVudC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIGEgZmlyc3Qg
YXJndW1lbnQuIik7CiAKICAgICBKU1ZhbHVlIGhpbnRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlwZSA9IHRvUHJlZmVycmVk
UHJpbWl0aXZlVHlwZShleGVjLCBoaW50VmFsdWUpOwpAQCAtNjE5LDE4ICs2MjUsMjAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC02NDIsOSArNjUwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0
aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NTYsOSArNjY1
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUlu
c3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NzAsOSArNjgwLDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
RGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7
IAogCkBAIC02ODQsOSArNjk1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY5OCw5ICs3MTAsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0
YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzEyLDkgKzcyNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTcyNiw5ICs3NDAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXko
RXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9i
aiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NDAsOSArNzU1LDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRo
aXNWYWx1ZSk7IAogCkBAIC03NTQsOSArNzcwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3Rh
bmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUlu
c3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03
NjgsOSArNzg1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
ZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2Jq
ID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc4Miw5ICs4MDAsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5j
ZSh0aGlzVmFsdWUpOyAKIApAQCAtNzk2LDkgKzgxNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUlu
c3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0
ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBA
IC04MTAsOSArODMwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDU2Vj
b25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTgyNCw5ICs4NDUsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZt
KCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0
ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5p
bnRlcm5hbE51bWJlcigpOwpAQCAtODQwLDkgKzg2MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CkBA
IC04NTYsOSArODc5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZXpv
bmVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0
aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC04NzAsOSArODk0
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg4NCw5ICs5MDksMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3
VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLCBXVEY6
OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKICAgICBkb3VibGUgbWlsbGkg
PSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKQEAgLTkyMyw5ICs5NDksMTAgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRpbQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJn
c1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewpAQCAtMTAzNSw5ICsxMDYyLDEwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwpAQCAtMTA3OCw5ICsxMTA2LDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsgCiAKQEAgLTEwOTQsNiArMTEyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0
aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCkBAIC0xMTEyLDEzICsxMTQyLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnUKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIikpOwogCiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBjYWxsKGV4ZWMsIGFzT2JqZWN0KHRvSVNPVmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEs
IG9iamVjdCwgZXhlYy0+ZW1wdHlMaXN0KCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgaWYgKHJl
c3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVl
IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSIpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4
LDM0ICsxOTgsMzQgQEAgYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iagog
ICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNPYmplY3QqIHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCitKU09iamVjdCogdGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93
U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCiB7Ci0gICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwgY29uc3RydWN0b3JO
YW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJjYWxsaW5nICIsIGNvbnN0
cnVjdG9yTmFtZSwgIiBjb25zdHJ1Y3RvciB3aXRob3V0IG5ldyBpcyBpbnZhbGlkIikpOwogfQog
Ci1KU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRo
cm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAg
cmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVF
cnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVz
c2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaW5nKGVycm9yTWVz
c2FnZSkpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nKGVy
cm9yTWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAgIHJldHVybiBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVy
cm9yIikpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoZXhlYywgbWVzc2FnZSkpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQogCiBKU09iamVjdCog
Y3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2Nv
cGUuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogCkBAIC03MSwyMSArNzIsMjEgQEAgSlNPYmpl
Y3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iagogLy8gTWV0aG9kcyB0byB0aHJvdyBF
cnJvcnMuCiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhj
ZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVj
U3RhdGUqLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIEFTQ0lJTGl0ZXJhbCBlcnJvck1l
c3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwotaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBz
dGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRo
cm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2Up
KTsgfQorSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0
IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBBU0NJSUxp
dGVyYWwgZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5
cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0
YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKTsKK2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUs
IFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4g
dGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJv
ck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMg
YW4gRW5jb2RlZEpTVmFsdWUuCi1pbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvbik7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcikpOyB9Ci1pbmxpbmUgRW5jb2RlZEpT
VmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0
aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2Fn
ZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVz
c2FnZSkpOyB9Ci1pbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KLWlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJv
cihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSB2b2lkIHRocm93Vk1FcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsgfQoraW5saW5lIEVuY29kZWRK
U1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBK
U1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGVycm9yKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpIHsgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOyB9CitpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CitpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNj
b3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQoraW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIFRocm93U2Nv
cGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihzdGF0ZSwgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CiAK
IGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKIHByaXZhdGU6CkBAIC0xMDksNyArMTEwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc3RhdGlj
X2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21l
c3NhZ2UpOworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5j
YWxsZWUoKSktPm1fbWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpOwogICAgIH0KIApAQCAtMTIxLDcgKzEyNCw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzdGF0aWNfY2Fz
dDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2Fn
ZSk7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxl
ZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEy
ICs2NywxNSBAQCB2b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgCiAvLyBF
Q01BLTI2MiA1LjEsIDE1LjExLjQuNAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJv
clByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IC8vIDEuIExldCBPIGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3Qs
IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKIAogICAgIC8vIEd1YXJkIGFnYWluc3QgcmVjdXJzaW9u
IQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6
ei5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkZ1enouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNyArMzgsMTggQEAgdW5zaWdu
ZWQgbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKCkgewogLy8gQ2FsbCB0aGlzIG9ubHkgaWYg
eW91IGtub3cgdGhhdCBleGNlcHRpb24gZnV6emluZyBpcyBlbmFibGVkLgogdm9pZCBkb0V4Y2Vw
dGlvbkZ1enppbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiB3aGVyZSwgdm9pZCogcmV0
dXJuUEMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1
enooKSk7CiAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoZXhlYy0+dm0oKS5oZWFwKTsK
KyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgCiAgICAgc19udW1i
ZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MrKzsKICAgICAKICAgICB1bnNpZ25lZCBmaXJlVGFyZ2V0
ID0gT3B0aW9uczo6ZmlyZUV4Y2VwdGlvbkZ1enpBdCgpOwogICAgIGlmIChmaXJlVGFyZ2V0ID09
IHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKSB7CiAgICAgICAgIHByaW50ZigiSlNDIEVY
Q0VQVElPTiBGVVpaOiBUaHJvd2luZyBmdXp6IGV4Y2VwdGlvbiB3aXRoIGNhbGwgZnJhbWUgJXAs
IHNlZW4gaW4gJXMgYW5kIHJldHVybiBhZGRyZXNzICVwLlxuIiwgZXhlYywgd2hlcmUsIHJldHVy
blBDKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbigKLSAgICAgICAgICAgIGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0aW9uIEZ1enoiKSkpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJFeGNlcHRpb24gRnV6eiIpKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg5LDIzICsyODksMjMgQEAg
SlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLiIpOwogfQogCi1KU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYykKK0pTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBU
aHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYykpOwogfQog
Ci1KU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNP
YmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBFcnJvckhhbmRsaW5n
U2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogfQogCi1K
U09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKK0pTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKLSAgICByZXR1cm4gdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0p
KTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNs
dWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJU
aHJvd1Njb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Miw5ICs1Myw5IEBAIEpTT2Jq
ZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3QKIEpTT2JqZWN0KiBjcmVhdGVFcnJv
ckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwog
SlNTdHJpbmcqIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsK
IAotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVj
U3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihFeGVjU3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1Rlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVj
U3RhdGUqLCBUaHJvd1Njb3BlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKIAog
CiBjbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsNyBAQCBDb2Rl
QmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIEpTT2Jq
ZWN0KiYgZXhjZXB0aW9uKQogewogICAgIFZNKiB2bSA9IHNjb3BlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIEFTU0VSVCh2bS0+
aGVhcC5pc0RlZmVycmVkKCkpOwogICAgIEFTU0VSVChzdGFydENvbHVtbigpICE9IFVJTlRfTUFY
KTsKQEAgLTMxOSw4ICszMjAsOCBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0Nv
ZGVCbG9jCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCiAgICAgICAgIGxhc3RMaW5lKCksIHN0YXJ0
Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewot
ICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCi0gICAgICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwKKyAgICAgICAgZXhjZXB0aW9uID0gdGhyb3dFeGNlcHRp
b24oCisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgdGhyb3dTY29wZSwK
ICAgICAgICAgICAgIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxl
LT5tX3NvdXJjZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00MjksMjAg
KzQzMCwyMyBAQCBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9CiAKIEV2
YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHZhcmlhYmxlc1VuZGVyVERaKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAo
IWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJv
ck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBFdmFsRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRh
YmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBl
dmFsQ29udGV4dFR5cGUpOwotICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZt
KCkpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFVubGlua2Vk
RXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlRXZh
bENvZGVCbG9jayhleGVjLCBleGVjdXRhYmxlLCB2YXJpYWJsZXNVbmRlclREWik7CiAgICAgaWYg
KCF1bmxpbmtlZEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGV4ZWN1dGFibGUt
Pm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldChleGVjLT52bSgpLCBleGVjdXRhYmxlLCB1bmxp
bmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENvZGVCbG9jay5z
ZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGV4ZWN1
dGFibGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC03Niw4ICs3NiwxMSBA
QCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0CiAvLyBFQ01BIDE1LjMu
MiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJv
cihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4
ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICByZXR1
cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFs
T2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5ld1RhcmdldCk7CiB9CiAKQEAgLTg2LDYgKzg5LDkgQEAg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRQogICAgIGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAogICAgIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIEpTVmFsdWUgbmV3VGFy
Z2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlvbnMg
aXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBTdHJp
bmcgcHJvZ3JhbTsKQEAgLTExNiwxNCArMTIyLDE0IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEUKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gRnVu
Y3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5hbWUsICpleGVjLCBzb3Vy
Y2UsIGV4Y2VwdGlvbiwgb3ZlcnJpZGVMaW5lTnVtYmVyKTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7
CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgfQogCiAgICAgU3RydWN0dXJlKiBz
dWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0
dXJlKGV4ZWMsIG5ld1RhcmdldCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBmdW5jdGlvbiwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgcmV0dXJu
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2Nv
cGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rp
b24gQ29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODMsNiArODMsOCBAQCBDYWxsVHlwZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERh
dGEoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CkBAIC0xMTIsMTkgKzExNCwyMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmxpbmVUeXBlRmxh
Z3MoKSAmIFR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSkgewogICAgICAgICAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
KyAgICAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEob2Jq
ZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogY2xhc3NJbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJm
dW5jdGlvbiAiLCBjbGFzc0luZm8tPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVd
XG59IikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogfQogCiAvLyAxNS4zLjQuNSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAodGhpc0Fy
ZyBbLCBhcmcxIFssIGFyZzIsIC4uLl1dKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblByb3RvRnVuY0JpbmQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CiAKICAgICAvLyBMZXQgVGFyZ2V0IGJlIHRoZSB0aGlzIHZhbHVlLgpAQCAtMTM0LDEx
ICsxMzgsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
dGFyZ2V0LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIC8vIFByaW1pdGl2ZSB2YWx1ZXMgYXJl
IG5vdCBjYWxsYWJsZS4KICAgICBBU1NFUlQodGFyZ2V0LmlzT2JqZWN0KCkpOwogICAgIEpTT2Jq
ZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAKICAgICAvLyBMZXQgQSBiZSBhIG5ldyAocG9zc2libHkgZW1wdHkpIGludGVybmFs
IGxpc3Qgb2YgYWxsIG9mIHRoZSBhcmd1bWVudCB2YWx1ZXMgcHJvdmlkZWQgYWZ0ZXIgdGhpc0Fy
ZyAoYXJnMSwgYXJnMiBldGMpLCBpbiBvcmRlci4KICAgICBzaXplX3QgbnVtQm91bmRBcmdzID0g
ZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSA/IGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAtIDEgOiAw
OwpAQCAtMTQ2LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Qcm8KICAgICBpZiAobnVtQm91bmRBcmdzKSB7CiAgICAgICAgIGJvdW5kQXJncyA9IEpTQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBu
dW1Cb3VuZEFyZ3MpOwogICAgICAgICBpZiAoIWJvdW5kQXJncykKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNj
b3BlKSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUJvdW5k
QXJnczsgKytpKQogICAgICAgICAgICAgYm91bmRBcmdzLT5pbml0aWFsaXplSW5kZXgodm0sIGks
IGV4ZWMtPmFyZ3VtZW50KGkgKyAxKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDctMjAwOSwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODcsMTEgKzg3LDE0IEBAIEpTVmFsdWUgY2FsbEdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogYm9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBHZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAg
ICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpIHsKICAgICAgICAgaWYgKGVj
bWFNb2RlID09IFN0cmljdE1vZGUpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwMSw3ICsxMDQsNyBAQCBi
b29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlCiAgICAgYXJncy5hcHBlbmQo
dmFsdWUpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9kVGFibGUodm0p
LT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNldHRlciwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDExICszNjcsMTQgQEAgdm9pZCBJbnRs
Q29sbGF0b3I6OmNyZWF0ZUNvbGxhdG9yKEV4ZWNTdAogCiBKU1ZhbHVlIEludGxDb2xsYXRvcjo6
Y29tcGFyZVN0cmluZ3MoRXhlY1N0YXRlJiBzdGF0ZSwgU3RyaW5nVmlldyB4LCBTdHJpbmdWaWV3
IHkpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMC4zLjQgQ29tcGFyZVN0cmluZ3MgYWJzdHJh
Y3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2NvbGxhdG9yKSB7CiAgICAg
ICAgIGNyZWF0ZUNvbGxhdG9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFtX2NvbGxhdG9yKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIp
KSk7CiAgICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0z
NzksNyArMzgyLDcgQEAgSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKEV4ZQog
ICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JZID0gY3JlYXRlSXRlcmF0b3IoeSk7CiAgICAgYXV0
byByZXN1bHQgPSB1Y29sX3N0cmNvbGxJdGVyKG1fY29sbGF0b3IuZ2V0KCksICZpdGVyYXRvclgs
ICZpdGVyYXRvclksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIikpKTsKICAgICBy
ZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTYgKzEwNiwxOCBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZS5jb21wYXJlIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRo
aXMgQ29sbGF0b3Igb2JqZWN0LgogICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFt
aWNDYXN0PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xs
YXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRv
ciIpKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5i
b3VuZENvbXBhcmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlz
IHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kQ29tcGFyZSkgewotICAgICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbGxh
dG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQt
aW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBiLiBU
aGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCkBAIC0xMzQsMTAgKzEzNiwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEwLjMuNSBJ
bnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQog
ICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+
KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiKSkp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+cmVzb2x2ZWRPcHRpb25z
KCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjAsNiArNDIwLDkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEZvcm1h
dHNGcm9tUAogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9yaWdpbmFsT3B0
aW9ucykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTIuMS4xIEluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCAoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpIChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gSWYgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFsaXplZEludGxPYmplY3RdXSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IGRhdGVUaW1l
Rm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4KQEAgLTQ0MCw3ICs0NDMs
NiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUCiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gbG9jYWxlT3B0OwogCiAgICAgLy8gOC4gTGV0IG1hdGNoZXIgYmUg
R2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIsIMKrImxvb2t1cCIs
ICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgVk0mIHZtID0gZXhlYy52bSgpOwogICAg
IFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihleGVjLCBvcHRpb25zLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBmaXQiIH0s
ICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwi
IiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZBYnJ1cHQobWF0Y2hlcikuCiAgICAg
aWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODcsNyArNDg5LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgICAgICAvLyBkLiBMZXQgdHogYmUgQ2Fu
b25pY2FsaXplVGltZVpvbmVOYW1lKHR6KS4KICAgICAgICAgdHogPSBjYW5vbmljYWxpemVUaW1l
Wm9uZU5hbWUob3JpZ2luYWxUeik7CiAgICAgICAgIGlmICh0ei5pc051bGwoKSkgewotICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKCZleGVjLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCB0aW1l
IHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoJmV4ZWMsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCB0aW1lIHpv
bmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNjQ3LDcgKzY0OSw3IEBAIHZvaWQgSW50bERh
dGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSB1
ZGF0cGdfb3BlbihkYXRhTG9jYWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0dXMpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlM
aXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0byBpbml0
aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02
NjMsNyArNjY1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAog
ICAgIH0KICAgICB1ZGF0cGdfY2xvc2UoZ2VuZXJhdG9yKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiKSk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
VGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjc0LDcgKzY3Niw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBTdHJpbmdW
aWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBtX2RhdGVGb3JtYXQgPSBzdGQ6OnVu
aXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4odWRhdF9vcGVuKFVEQVRf
UEFUVEVSTiwgVURBVF9QQVRURVJOLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCB0aW1lWm9uZVZp
ZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwgcGF0dGVy
bi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1cykpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmZXhl
YywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImZhaWxl
ZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC04ODMsNiArODg1LDkgQEAgSlNPYmplY3QqIEludGxEYXRlVGltZUZvcm1hdDo6cmVz
b2x2ZWRPcAogCiBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0KEV4ZWNTdGF0ZSYg
ZXhlYywgZG91YmxlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMi4zLjQgRm9ybWF0
RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2lu
aXRpYWxpemVkRGF0ZVRpbWVGb3JtYXQpIHsKICAgICAgICAgaW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KGV4ZWMsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwpAQCAtODkxLDcgKzg5Niw3
IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1MKIAogICAgIC8vIDEu
IElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhj
ZXB0aW9uLgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1JhbmdlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGF0ZSB2YWx1ZSBpcyBub3QgZmlu
aXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdCgpIikpOworICAgICAgICByZXR1cm4gdGhyb3dS
YW5nZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJkYXRlIHZhbHVlIGlzIG5vdCBm
aW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiKSk7CiAKICAgICAvLyBEZWxlZ2F0ZSBy
ZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwpAQCAtOTAzLDcgKzkwOCw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXQoRXhlY1MKICAgICAgICAgdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwg
cmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICB9CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImZh
aWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSIpKTsKIAogICAgIHJldHVybiBqc1N0cmluZygmZXhl
YywgU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCkpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMCw2ICsxMTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAo
RUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBEYXRlVGltZUZvcm1hdCBv
YmplY3QuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CkBAIC0xMTcsMjMgKzEyMSwyMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltCiAgICAgLy8gRklYTUU6
IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNh
bGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghZHRmKQotICAgICAgICBkdGYgPSBqc0R5bmFtaWND
YXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0
YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKIAog
ICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKCFkdGYpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1l
Rm9ybWF0IikpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBkdGYtPmJv
dW5kRm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3JtYXRdXSBpbnRlcm5hbCBz
bG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVmaW5lZCwKICAgICBpZiAo
IWJvdW5kRm9ybWF0KSB7Ci0gICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmlu
ZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHBy
b3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00
MDIgMS4wKQogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIEpT
QXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aFVuZGVjaWRlZCksIDApOwogICAgICAgICBpZiAoIWJvdW5kQXJncykKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRl
KSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcihzdGF0ZSwgc2NvcGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5j
dGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNC
b3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVj
dCwgZHRmLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOwpAQCAtMTQ4LDE2
ICsxNTEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
KCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkp
OwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdp
dGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghZGF0ZVRpbWVGb3Jt
YXQpCi0gICAgICAgIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkp
OworICAgICAgICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9y
bWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKIAogICAgIGlm
ICghZGF0ZVRpbWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Iikp
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVk
T3B0aW9ucygqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
U3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vrb2xzYWtAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTU5LDYgKzE2MCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6
aW5pdGlhbGl6ZU51bWJlckYKIHsKICAgICAvLyAxMS4xLjEgSW5pdGlhbGl6ZU51bWJlckZvcm1h
dCAobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSAoRUNNQS00MDIgMi4wKQogICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgLy8gMS4gSWYgbnVtYmVyRm9ybWF0IGhhcyBhbiBbW2luaXRpYWxpemVkSW50
bE9iamVjdF1dIGludGVybmFsIHNsb3Qgd2l0aCB2YWx1ZSB0cnVlLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IG51bWJlckZvcm1hdC5bW2luaXRpYWxpemVkSW50
bE9iamVjdF1dIHRvIHRydWUuCkBAIC0xODYsNyArMTg4LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsK
IAogICAgIC8vIDguIExldCBtYXRjaGVyIGJlIEdldE9wdGlvbihvcHRpb25zLCAibG9jYWxlTWF0
Y2hlciIsICJzdHJpbmciLCDCqyJsb29rdXAiLCAiYmVzdCBmaXQiwrssICJiZXN0IGZpdCIpLgot
ICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihzdGF0ZSwgb3B0aW9ucywgc3Rh
dGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBm
aXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0
IGZpdFwiIiwgImJlc3QgZml0Iik7CisgICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3RyaW5nT3B0
aW9uKHN0YXRlLCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJs
b29rdXAiLCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9v
a3VwXCIgb3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZB
YnJ1cHQobWF0Y2hlcikuCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzAsNyArMjMyLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFs
aXplTnVtYmVyRgogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gYS4g
SWYgdGhlIHJlc3VsdCBvZiBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoYyksIGlzIGZhbHNlLCB0
aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmIChjdXJyZW5jeS5s
ZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlB
bHBoYT4oKSkgewotICAgICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1cnJlbmN5IGlzIG5vdCBh
IHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiKSkpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
Y3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSIpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzksNyArMjQxLDcgQEAgdm9pZCBJ
bnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkgewogICAgICAgICAvLyAyMi4gSWYgcyBpcyAiY3VycmVuY3kiIGFuZCBj
IGlzIHVuZGVmaW5lZCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAo
Y3VycmVuY3kuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBtdXN0IGJlIGEgc3RyaW5nIikpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBtdXN0
IGJlIGEgc3RyaW5nIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQy
MywxMSArNDI1LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlTnVtYmVyRm9ybWEK
IAogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXROdW1iZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgZG91YmxlIG51bWJlcikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDExLjMuNCBGb3JtYXRO
dW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX251bWJl
ckZvcm1hdCkgewogICAgICAgICBjcmVhdGVOdW1iZXJGb3JtYXQoc3RhdGUpOwogICAgICAgICBp
ZiAoIW1fbnVtYmVyRm9ybWF0KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWls
ZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CiAgICAgfQogCiAgICAgLy8gTWFwIG5lZ2F0aXZl
IHplcm8gdG8gcG9zaXRpdmUgemVyby4KQEAgLTQ0Myw3ICs0NDgsNyBAQCBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFCiAgICAgICAgIHVudW1fZm9ybWF0RG91YmxlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBudW1iZXIsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgbnVsbHB0
ciwgJnN0YXR1cyk7CiAgICAgfQogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAg
cmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3Rh
dGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIikpKTsKIAogICAgIHJl
dHVybiBqc1N0cmluZygmc3RhdGUsIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
KEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2Jq
ZWN0LgogICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVy
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKQEAgLTEwNywyMiArMTEwLDIxIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckYKICAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBs
eSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNjc5CiAgICAgaWYgKCFuZikKLSAgICAgICAgbmYgPSBqc0R5bmFtaWNDYXN0PEludGxO
dW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5h
bWUoKSkpOworICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0
YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIW5mKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJ
SUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Iikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1i
ZXJGb3JtYXQiKSkpOwogICAgIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBu
Zi0+Ym91bmRGb3JtYXQoKTsKICAgICAvLyAyLiBJZiBuZi5bW2JvdW5kRm9ybWF0XV0gaXMgdW5k
ZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsKLSAgICAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZi0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9u
IG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9m
IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRP
YmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRl
cmFsKCJmb3JtYXQiKSwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmlu
c2ljKTsKICAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CiAgICAgICAgIGlmICgh
Ym91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29wZSkpOwogCiAgICAgICAgIC8vIGMuIExl
dCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KICAgICAgICAg
Ym91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9i
amVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1h
dCIpKTsKQEAgLTEzNywxNiArMTM5LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bE51bWJlckYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1i
ZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1Zh
bHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmls
aXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghbnVtYmVy
Rm9ybWF0KQotICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkp
OworICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQq
PihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgaWYgKCFu
dW1iZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDkgQEAgYm9vbCBpbnRs
Qm9vbGVhbk9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLAogCiBTdHJpbmcgaW50bFN0cmluZ09wdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0IGNoYXIq
IG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjaykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8v
IDkuMi45IEdldE9wdGlvbiAob3B0aW9ucywgcHJvcGVydHksIHR5cGUsIHZhbHVlcywgZmFsbGJh
Y2spCiAgICAgLy8gRm9yIHR5cGU9InN0cmluZyIuCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBTdHJp
bmcgaW50bFN0cmluZ09wdGlvbihFeGVjU3RhdGUmIHN0YXRlCiAgICAgICAgIC8vIGQuIElmIHZh
bHVlcyBpcyBub3QgdW5kZWZpbmVkLCB0aGVuCiAgICAgICAgIC8vIGkuIElmIHZhbHVlcyBkb2Vz
IG5vdCBjb250YWluIGFuIGVsZW1lbnQgZXF1YWwgdG8gdmFsdWUsIHRocm93IGEgUmFuZ2VFcnJv
ciBleGNlcHRpb24uCiAgICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpICYmIHN0ZDo6ZmluZCh2YWx1
ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCBzdHJpbmdWYWx1ZSkgPT0gdmFsdWVzLmVuZCgpKSB7
Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFu
Z2VFcnJvcigmc3RhdGUsIG5vdEZvdW5kKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgbm90Rm91bmQpKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIApAQCAtMjA5LDYgKzIxMiw5IEBAIFN0cmlu
ZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKIAogdW5zaWduZWQgaW50bE51bWJl
ck9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwgdW5zaWduZWQgZmFs
bGJhY2spCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyA5LjIuOSBHZXROdW1iZXJPcHRpb24gKG9w
dGlvbnMsIHByb3BlcnR5LCBtaW5pbXVtLCBtYXhpbXVtLCBmYWxsYmFjaykgKEVDTUEtNDAyIDIu
MCkKICAgICAvLyAxLiBMZXQgb3B0cyBiZSBUb09iamVjdChvcHRpb25zKS4KICAgICBKU09iamVj
dCogb3B0cyA9IG9wdGlvbnMudG9PYmplY3QoJnN0YXRlKTsKQEAgLTIzMyw3ICsyMzksNyBAQCB1
bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgLy8gMS4gSWYgdmFsdWUgaXMgTmFOIG9yIGxlc3MgdGhhbiBtaW5pbXVt
IG9yIGdyZWF0ZXIgdGhhbiBtYXhpbXVtLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgog
ICAgICAgICBpZiAoIShkb3VibGVWYWx1ZSA+PSBtaW5pbXVtICYmIGRvdWJsZVZhbHVlIDw9IG1h
eGltdW0pKSB7Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNOYW1lKCkgKyAiIGlzIG91
dCBvZiByYW5nZSIpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCAqcHJvcGVydHkucHVibGljTmFtZSgpICsgIiBpcyBv
dXQgb2YgcmFuZ2UiKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkBAIC01
MjQsNiArNTMwLDggQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChFeAog
ewogICAgIC8vIDkuMi4xIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QgKGxvY2FsZXMpCiAgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUuY2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHNlZW47CiAKQEAgLTU4Nyw3ICs1
OTUsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiAKICAgICAg
ICAgICAgIC8vIGlpaS4gSWYgVHlwZShrVmFsdWUpIGlzIG5vdCBTdHJpbmcgb3IgT2JqZWN0LCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgICAgICBpZiAoIWtWYWx1ZS5pc1N0
cmluZygpICYmICFrVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBhIHN0cmlu
ZyBvciBvYmplY3QiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBvYmpl
Y3QiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAgICAgICAg
ICAgICB9CiAKQEAgLTYwMiw3ICs2MTAsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVM
b2NhbGVMaXN0KEV4CiAgICAgICAgICAgICAvLyB2aWkuIExldCBjYW5vbmljYWxpemVkVGFnIGJl
IENhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZykuCiAgICAgICAgICAgICBTdHJpbmcgY2Fub25p
Y2FsaXplZFRhZyA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZy0+dmFsdWUoJnN0YXRlKSk7
CiAgICAgICAgICAgICBpZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwoKSkgewotICAgICAgICAg
ICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9y
KCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQoImludmFsaWQgbGFuZ3VhZ2UgdGFnOiAlcyIsIHRhZy0+
dmFsdWUoJnN0YXRlKS51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBTdHJpbmc6OmZv
cm1hdCgiaW52YWxpZCBsYW5ndWFnZSB0YWc6ICVzIiwgdGFnLT52YWx1ZSgmc3RhdGUpLnV0Zjgo
KS5kYXRhKCkpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAg
ICAgICAgICAgICB9CiAKQEAgLTg3MCw2ICs4NzgsOSBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiByZXNvbHZlTG9jYWxlKEV4CiAKIHN0YXRpYyBKU0FycmF5KiBsb29rdXBTdXBwb3J0ZWRMb2Nh
bGVzKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9j
YWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2FsZXMpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyA5LjIuNiBMb29rdXBTdXBwb3J0ZWRMb2NhbGVzIChhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzKQogCiAgICAgLy8gMS4gTGV0IHJMb2NhbGVzIGJlIENyZWF0
ZUFycmF5RnJvbUxpc3QocmVxdWVzdGVkTG9jYWxlcykuCkBAIC04NzksMTEgKzg5MCwxMCBAQCBz
dGF0aWMgSlNBcnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhFCiAgICAgc2l6ZV90IGxlbiA9
IHJlcXVlc3RlZExvY2FsZXMuc2l6ZSgpOwogCiAgICAgLy8gMy4gTGV0IHN1YnNldCBiZSBhbiBl
bXB0eSBMaXN0LgotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBKU0Fy
cmF5KiBzdWJzZXQgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICBpZiAoIXN1YnNldCkgewotICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZz
dGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDE0ICszNywxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogSlNWYWx1ZSBpdGVyYXRvck5leHQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGl0ZXJhdG9yLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEpTVmFsdWUgbmV4dEZ1bmN0
aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+bmV4dCk7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIG5leHRGdW5jdGlvbiA9IGl0ZXJhdG9yLmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgQ2FsbERhdGEgbmV4dEZ1
bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgbmV4dEZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShuZXh0RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAobmV4
dEZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG5leHRGdW5jdGlvbkFyZ3VtZW50czsK
ICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTUzLDcgKzU3LDcgQEAgSlNWYWx1ZSBpdGVy
YXRvck5leHQoRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIikpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTg5LDE4ICs5MywyMSBAQCBK
U1ZhbHVlIGl0ZXJhdG9yU3RlcChFeGVjU3RhdGUqIGV4ZWMsIEpTCiAKIHZvaWQgaXRlcmF0b3JD
bG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaXRlcmF0b3IpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAg
ICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KLSAgICBKU1ZhbHVlIHJldHVybkZ1
bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+cmV0
dXJuS2V5d29yZCk7CisgICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9IGl0ZXJhdG9yLmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXR1cm5GdW5jdGlvbi5p
c1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTA4LDkgKzExNSw5IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmEKICAgICBDYWxsVHlwZSByZXR1cm5GdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEocmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChyZXR1
cm5GdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9u
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTExOCw3ICsxMjUsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhCiAgICAgSlNWYWx1ZSBpbm5lclJlc3VsdCA9IGNhbGwoZXhlYywgcmV0dXJuRnVu
Y3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUsIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0
ZXJhdG9yLCByZXR1cm5GdW5jdGlvbkFyZ3VtZW50cyk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEyNiw3ICsxMzMsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaW5uZXJSZXN1
bHQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiB9CkBAIC0xNDcsMTQgKzE1NCwxOCBAQCBTdHJ1Y3R1cmUqIGNyZWF0ZUl0ZXJhdG9yUmVz
dWx0T2JqZWN0U3RyCiAKIEpTT2JqZWN0KiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIGJvb2wgZG9uZSkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiByZXN1bHRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPml0ZXJhdG9yUmVzdWx0T2Jq
ZWN0U3RydWN0dXJlKCkpOwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGRvbmVQcm9wZXJ0eU9mZnNldCwganNCb29sZWFuKGRvbmUpKTsKLSAgICByZXN1bHRPYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCB2YWx1ZVByb3BlcnR5T2Zmc2V0LCB2YWx1ZSk7CisgICAg
cmVzdWx0T2JqZWN0LT5wdXREaXJlY3Qodm0sIGRvbmVQcm9wZXJ0eU9mZnNldCwganNCb29sZWFu
KGRvbmUpKTsKKyAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdCh2bSwgdmFsdWVQcm9wZXJ0eU9m
ZnNldCwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHRPYmplY3Q7CiB9CiAKIEpTVmFsdWUgaXRl
cmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHN0YXRlLCBKU1ZhbHVlIGl0ZXJhYmxlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAKICAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJs
ZS5nZXQoc3RhdGUsIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAg
IGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBA
IC0xNjIsNyArMTczLDcgQEAgSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxlKEV4ZWNTdGF0ZSog
cwogICAgIENhbGxEYXRhIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBp
dGVyYXRvckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpdGVyYXRvckZ1bmN0aW9uLCBp
dGVyYXRvckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChpdGVyYXRvckZ1bmN0aW9uQ2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgIH0KIApAQCAtMTcyLDcgKzE4Myw3IEBAIEpTVmFsdWUgaXRlcmF0b3JGb3JJ
dGVyYWJsZShFeGVjU3RhdGUqIHMKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKIAogICAgIGlm
ICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDEzLCAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNy0yMDA5LCAyMDEyLTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55
cG9wLmNvbSkKICAqCkBAIC03NSw2ICs3NSw5IEBAIHZvaWQgSlNBcnJheTo6c2V0TGVuZ3RoV3Jp
dGFibGUoRXhlY1N0YXQKIC8vIERlZmluZWQgaW4gRVM1LjEgMTUuNC41LjEKIGJvb2wgSlNBcnJh
eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0FycmF5
KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAogICAgIC8vIDMuIElmIFAgaXMg
Imxlbmd0aCIsIHRoZW4KQEAgLTEwNiw3ICsxMDksNyBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0CiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbiA9IGRlc2NyaXB0b3Iu
dmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgLy8gZC4gSWYgbmV3TGVuIGlzIG5vdCBl
cXVhbCB0byBUb051bWJlciggRGVzYy5bW1ZhbHVlXV0pLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhj
ZXB0aW9uLgogICAgICAgICBpZiAobmV3TGVuICE9IGRlc2NyaXB0b3IudmFsdWUoKS50b051bWJl
cihleGVjKSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgi
KSkpOworICAgICAgICAgICAgSlNDOjp0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xOTEsNiArMTk0LDkg
QEAgYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplYwogLy8gRUNNQSAxNS40
LjUuMQogYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNBcnJheSo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChz
bG90LCB0aGlzT2JqZWN0KSkpCkBAIC0xOTksNyArMjA1LDcgQEAgYm9vbCBKU0FycmF5OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1
ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZhbHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0
YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
SW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOwpAQCAtMzkzLDYgKzM5OSw4IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVu
Z3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjphcHBlbmRNZW1jcHkoRXhlY1N0
YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIEpTQzo6SlNBcnJheSogb3Ro
ZXJBcnJheSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoIWNhbkZhc3RDb3B5KHZtLCBvdGhlckFycmF5KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC00MTgsNyArNDI2LDcgQEAgYm9vbCBKU0FycmF5OjphcHBlbmRNZW1jcHkoRXhl
Y1N0YXRlKiBleAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWVuc3VyZUxlbmd0
aCh2bSwgbmV3TGVuZ3RoKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgQVNTRVJUKGNvcHlUeXBlID09IGluZGV4aW5nVHlwZSgp
KTsKQEAgLTQzMyw2ICs0NDEsOSBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3Rh
dGUqIGV4CiAKIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgbmV3TGVuZ3RoLCBib29sIHRocm93RXhjZXB0aW9uKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
QnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgpAQCAtNDQxLDkgKzQ1Miw5IEBA
IGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgaWYgKG5l
d0xlbmd0aCA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7CiAgICAgICAgICAgICByZXR1cm4g
c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBuZXdMZW5n
dGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZShl
eGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChleGVjLT52bSgpLCBuZXdM
ZW5ndGgpOworICAgICAgICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKHZtLCBuZXdMZW5ndGgpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lk
ZWQ6CkBAIC00NTcsMTEgKzQ2OCwxMSBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsCiAgICAgICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IobmV3
TGVuZ3RoLCBjb3VudEVsZW1lbnRzKCkpKSkgewogICAgICAgICAgICAgcmV0dXJuIHNldExlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAgZXhlYywgbmV3TGVuZ3RoLCB0aHJv
d0V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2UoZXhlYy0+dm0o
KSkpOworICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChuZXdMZW5ndGggPiBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgpKSB7Ci0g
ICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAg
aWYgKCFlbnN1cmVMZW5ndGgodm0sIG5ld0xlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDcwLDcg
KzQ4MSw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoVG9DbGVhciA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkgLSBu
ZXdMZW5ndGg7CiAgICAgICAgIHVuc2lnbmVkIGNvc3RUb0FsbG9jYXRlTmV3QnV0dGVyZmx5ID0g
NjQ7IC8vIGEgaGV1cmlzdGljLgogICAgICAgICBpZiAobGVuZ3RoVG9DbGVhciA+IG5ld0xlbmd0
aCAmJiBsZW5ndGhUb0NsZWFyID4gY29zdFRvQWxsb2NhdGVOZXdCdXR0ZXJmbHkpIHsKLSAgICAg
ICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJmbHkoZXhlYy0+dm0oKSwgbmV3TGVuZ3Ro
KTsKKyAgICAgICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJmbHkodm0sIG5ld0xlbmd0
aCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC00OTcsNiArNTA4
LDkgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogCiBKU1ZhbHVl
IEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAgIAogICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKQEAgLTU0OCw3ICs1NjIsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBv
cChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxl
bmd0aCgpOwogICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAgICAgaWYgKCFpc0xlbmd0
aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKQEAgLTU4
MCw3ICs1OTQsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIC8vIENhbGwgdGhlIFtbRGVsZXRlXV0gaW50
ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMgaW5keCBhbmQgdHJ1ZS4KICAgICBpZiAo
IWRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzLCBleGVjLCBpbmRleCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KICAgICAvLyBDYWxsIHRoZSBbW1B1dF1dIGludGVybmFsIG1ldGhvZCBvZiBP
IHdpdGggYXJndW1lbnRzICJsZW5ndGgiLCBpbmR4LCBhbmQgdHJ1ZS4KQEAgLTU5NCwyMyArNjA4
LDI2IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKIC8vICAtIHB1c2hp
bmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJeMzItMSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQg
dGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOiB7Ci0gICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lk
ZWQoZXhlYy0+dm0oKSwgMCk7CisgICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQodm0sIDAp
OwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlX
aXRoVW5kZWNpZGVkOiB7Ci0gICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZShleGVjLT52
bSgpLCB2YWx1ZSk7CisgICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZSh2bSwgdmFsdWUp
OwogICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjogewogICAgICAgICBpZiAoIXZhbHVlLmlz
SW50MzIoKSkgewotICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUoZXhlYy0+dm0oKSwg
dmFsdWUpOworICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUodm0sIHZhbHVlKTsKICAg
ICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC02MjQsOSArNjQxLDkgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FS
UkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJ
bmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhv
ZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsK
ICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIApAQCAtNjM4LDE1ICs2NTUsMTUgQEAgdm9pZCBKU0FycmF5OjpwdXNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBidXR0ZXJm
bHktPnB1YmxpY0xlbmd0aCgpOwogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAobGVuZ3RoIDwgYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkgewotICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbbGVuZ3RoXS5z
ZXQoZXhlYy0+dm0oKSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250
aWd1b3VzKClbbGVuZ3RoXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgIGJ1dHRl
cmZseS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FSUkFZX0lOREVY
KSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlz
LCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAg
ICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtNjU2LDEzICs2NzMsMTMgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYQogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZTogewogICAg
ICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIGNvbnZlcnREb3VibGVU
b0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CisgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250
aWd1b3VzKHZtKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUu
YXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVlQXNEb3VibGUgIT0gdmFsdWVBc0RvdWJsZSkg
ewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKKyAg
ICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwogICAgICAgICAgICAgcHVz
aChleGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY3Niw5
ICs2OTMsOSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsK
LSAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4
ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAg
aWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJ
bnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC03MDMsNyArNzIwLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYQogICAgICAgICAvLyBGYXN0IGNhc2UgLSBwdXNoIHdpdGhpbiB2ZWN0b3IsIGFsd2F5
cyB1cGRhdGUgbV9sZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yLgogICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKICAgICAgICAgaWYgKGxlbmd0aCA8IHN0b3Jh
Z2UtPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltsZW5n
dGhdLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBzdG9yYWdlLT5t
X3ZlY3RvcltsZW5ndGhdLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgc3RvcmFn
ZS0+c2V0TGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzExLDEwICs3MjgsMTAgQEAg
dm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogCiAgICAgICAgIC8vIFB1
c2hpbmcgdG8gYW4gYXJyYXkgb2YgaW52YWxpZCBsZW5ndGggKDJeMzEtMSkgc3RvcmVzIHRoZSBw
cm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9yLgogICAgICAgICBpZiAoc3RvcmFnZS0+
bGVuZ3RoKCkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1
ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
ZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIC8vIFBl
ciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4KICAgICAgICAgICAg
IGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
SW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTk2Myw2ICs5ODAsOSBAQCBib29sIEpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdU
CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHVuc2hpZnQgY2FuIGJlIGhhbmRsZWQsIGZhbHNlIHRv
IGZhbGxiYWNrLiAgICAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFn
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50LCBB
cnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHN0YXJ0SW5kZXgg
PD0gbGVuZ3RoKTsKQEAgLTk4MSwxMyArMTAwMSwxMyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRD
b3VudFdpdGhBcnJheVN0b3JhCiAgICAgICAgIHN0b3JhZ2UgPSBuZXdCdXR0ZXJmbHktPmFycmF5
U3RvcmFnZSgpOwogICAgICAgICBzdG9yYWdlLT5tX2luZGV4QmlhcyAtPSBjb3VudDsKICAgICAg
ICAgc3RvcmFnZS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCArIGNvdW50KTsKLSAgICAg
ICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKGV4ZWMtPnZtKCksIG5ld0J1
dHRlcmZseSk7CisgICAgICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2
bSwgbmV3QnV0dGVyZmx5KTsKICAgICB9IGVsc2UgaWYgKCFtb3ZlRnJvbnQgJiYgdmVjdG9yTGVu
Z3RoIC0gbGVuZ3RoID49IGNvdW50KQogICAgICAgICBzdG9yYWdlID0gc3RvcmFnZS0+YnV0dGVy
Zmx5KCktPmFycmF5U3RvcmFnZSgpOwotICAgIGVsc2UgaWYgKHVuc2hpZnRDb3VudFNsb3dDYXNl
KGV4ZWMtPnZtKCksIG1vdmVGcm9udCwgY291bnQpKQorICAgIGVsc2UgaWYgKHVuc2hpZnRDb3Vu
dFNsb3dDYXNlKHZtLCBtb3ZlRnJvbnQsIGNvdW50KSkKICAgICAgICAgc3RvcmFnZSA9IGFycmF5
U3RvcmFnZSgpOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTAwNyw2ICsxMDI3LDkgQEAgYm9vbCBKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCBjb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgCiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewpAQCAtMTAyMiwxMCArMTA0NSwxMCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdp
dGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVudGlyZSBh
cnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBkbyBzbwogICAgICAgICAv
LyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAgIGlmIChvbGRMZW5ndGgg
LSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0gICAgICAgICAgICByZXR1
cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwg
ZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB1bnNo
aWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVB
cnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKGV4
ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgb2xkTGVuZ3Ro
ICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJ1dHRl
cmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTAzNSw3ICsxMDU4LDcgQEAgYm9vbCBKU0Fy
cmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYg
PSBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKTsKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghdikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0
b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52
bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3Jh
Z2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkTGVuZ3RoOyBpLS0gPiBzdGFy
dEluZGV4OykgewpAQCAtMTA1OCwxMCArMTA4MSwxMCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRD
b3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVu
dGlyZSBhcnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBkbyBzbwogICAg
ICAgICAvLyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAgIGlmIChvbGRM
ZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0gICAgICAgICAg
ICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydEluZGV4LCBj
b3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAgIHJldHVy
biB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBl
bnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICghZW5zdXJlTGVu
Z3RoKGV4ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgb2xk
TGVuZ3RoICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTA3MSw3ICsxMDk0LDcgQEAgYm9v
bCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBkb3Vi
bGUgdiA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHYgIT0gdikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFn
ZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2
bSkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkTGVuZ3RoOyBp
LS0gPiBzdGFydEluZGV4OykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw5IEBAIFN0cnVjdHVyZSog
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpjcmUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9CiAg
ICAgICAgIGpzQ2FzdDxKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7
CiAgICAgCkBAIC05NiwxOSArOTksMjEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29ucwogICAgIAogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShsZW5ndGgsIDEpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBT
dHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
Ci0gICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKGV4ZWMt
PnZtKCksIGFycmF5QnVmZmVyU3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIEpTQXJy
YXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgYXJyYXlCdWZmZXJT
dHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihl
eGVjLCAiQXJyYXlCdWZmZXIiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxNCArMzcsMTcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUo
KSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3Qp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVj
ZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBv
ZiBzbGljZSBtdXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CiAgICAgCiAgICAgaWYgKCFleGVj
LT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKICAgICAKICAgICBp
bnQzMl90IGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02MCwxMSArNjMsMTEgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYQogICAgIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICBp
ZiAoIW5ld0J1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKTsK
ICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOwog
ICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKIAog
I2VuZGlmIC8vIEpTQ0lubGluZXNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgs
IDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTk0LDYgKzk0LDggQEAgT3B0aW9uYWw8ZG91YmxlPiBKU1ZhbHVlOjp0b051
bWJlckZyb21QcgogCiBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgQVNTRVJUKCFpc0NlbGwoKSk7CiAKICAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91
YmxlKCkpCkBAIC0xMDIsOCArMTA0LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xv
d0Nhc2UoRXhlYwogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVC
b29sZWFuKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKIAogICAgIEFTU0VSVChpc1Vu
ZGVmaW5lZE9yTnVsbCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVj
LCAqdGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjQsNiArMTI1LDkgQEAg
SlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShFeGVjU3RhdAogCiBKU09iamVjdCogSlNW
YWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90
b3R5cGUoKTsKQEAgLTEzNyw4ICsxNDEsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6
ZVByb3RvdHlwZShFCiAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmJvb2xlYW5Qcm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC0xNDYsNiArMTQ5LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6
OnN5bnRoZXNpemVQcm90b3R5cGUoRQogYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVy
biBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOwpAQCAtMTYwLDcgKzE2NCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CiAgICAgICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTcyLDcgKzE3Niw3IEBA
IGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgaWYgKG9m
ZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJl
YWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApAQCAtMTk2LDEyICsyMDAs
MTUgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIH0KICAg
ICAKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0
aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoKnRoaXMsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4
ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwpA
QCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4
ZWMKICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAoc2hvdWxkVGhyb3cp
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMzM4LDEzICszNDUsMTUgQEAgYm9vbCBKU1ZhbHVlOjppc1ZhbGlkQ2FsbGVlKCkKIAogSlNT
dHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBib29sIHJl
dHVybkVtcHR5U3RyaW5nT25FcnJvcikgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8g
ZXJyb3JWYWx1ZSA9IFsmXSAoKSAtPiBKU1N0cmluZyogewogICAgICAgICBpZiAocmV0dXJuRW1w
dHlTdHJpbmdPbkVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH07CiAgICAgCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBBU1NFUlQoIWlzU3RyaW5nKCkpOwogICAgIGlmIChpc0ludDMyKCkpIHsK
ICAgICAgICAgYXV0byBpbnRlZ2VyID0gYXNJbnQzMigpOwpAQCAtMzYzLDcgKzM3Miw3IEBAIEpT
U3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWMKICAgICBpZiAoaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsK
ICAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVy
dCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02MzMsOCArNjMzLDExIEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvUHJpbWl0aXZlKEV4
ZWMKIAogaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVmZXJyZWRQcmltaXRpdmVU
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghdmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByaW1pdGl2ZSBoaW50
IGlzIG5vdCBhIHN0cmluZy4iKSk7CiAgICAgICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CiAgICAg
fQogCkBAIC02NDksNyArNjUyLDcgQEAgaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9Q
cmVmZXJyZQogICAgIGlmIChXVEY6OmVxdWFsKGhpbnRTdHJpbmcsICJzdHJpbmciKSkKICAgICAg
ICAgcmV0dXJuIFByZWZlclN0cmluZzsKIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8gbWF0Y2ggb25lIG9mICdkZWZhdWx0
JywgJ251bWJlcicsICdzdHJpbmcnLiIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBwcmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUgb2Yg
J2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmluZycuIikpOwogICAgIHJldHVybiBOb1ByZWZlcmVu
Y2U7CiB9CiAKQEAgLTEwMzEsOSArMTAzNCwxMiBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6
cHVyZVRvQm9vbGVhbigpCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpyZXF1aXJlT2Jq
ZWN0Q29lcmNpYmxlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMs
ICp0aGlzKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2Jq
ZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDE2ICs0NywxOCBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBpZiAoIUFycmF5QnVmZmVyVmll
dzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoLCBz
aXplb2YodWludDhfdCkpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIi
KSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6
dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBzaXplb2YodWludDhfdCkpKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpKTsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIENvbnN0
cnVjdGlvbkNvbnRleHQgY29udGV4dCgKICAgICAgICAgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsKICAgICBB
U1NFUlQoY29udGV4dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEyMiwxMiArMTIyLDE1IEBAIFN0cnVjdHVyZSogSlNEYXRhVmlld1Byb3RvdHlw
ZTo6Y3JlYXRlU3QKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBFbmNvZGVkSlNWYWx1ZSBn
ZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcq
IGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghZGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBE
YXRhVmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRh
VmlldyIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0
IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDMsNyArMTQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8
IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91
dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3Vu
ZHMgYWNjZXNzIikpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE2NywxMiArMTcwLDE1IEBA
IEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpT
RGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBv
ZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBE
YXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwogICAgIAogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9m
ZnNldCBhbmQgdmFsdWUpIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IHR3byBhcmd1bWVudCAodGhlIGJ5
dGVPZmZzZXQgYW5kIHZhbHVlKSIpKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtMTk4LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERh
dGEoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2Yg
Ym91bmRzIGFjY2VzcyIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFj
Y2VzcyIpKSk7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0yMjAsMjcgKzIyNiwzNiBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZl
ciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZm
ZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmlldy0+anNCdWZmZXIoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFt
aWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBl
LmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlw
ZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+bGVuZ3RoKCkpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNl
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0RhdGFWaWV3KiB2aWV3
ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghdmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGFWaWV3
LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3Qi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJEYXRhVmll
dy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0
Iik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmJ5dGVPZmZz
ZXQoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmNhbGxlZSgp
KSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+Y2FsbGVlKCkpKTsKIH0KIAogY29u
c3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Z1bmN0aW9uKSB9OwpAQCAtMzIxLDYgKzMy
Myw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oRXgKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKICAg
ICBKU1ZhbHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oZXhlYywgdGhpc09iaik7
CkBAIC0zMzUsNyArMzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0
dGVyKAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxs
ZXIpOwogICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVu
Y3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYWxsZXIpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRy
aWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2Vk
IHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQogCiBib29sIEpTRnVuY3Rpb246Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTQyMyw2ICs0Mjgs
OSBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOCiAKIGJvb2wgSlNG
dW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rp
b24qPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwg
dGhpc09iamVjdCkpKQpAQCAtNDM3LDI1ICs0NDUsMjggQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBi
ZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAg
ICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5j
dGlvbiIpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2Ug
YSBbW1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4KICAgICAgICAgUHV0UHJvcGVydHlTbG90
IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAg
ICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGRvbnRDYWNoZSk7CiAgICAgfQogICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+
aXNTdHJpY3RNb2RlKCkgJiYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVy
KSkgewogICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgcHJvcGVydHkgdG8gYmUgcmVp
ZmllZCwgaWYgdGhpcyBpcyBub3QgYWxyZWFkeSB0aGUgY2FzZSEKICAgICAgICAgYm9vbCBva2F5
ID0gdGhpc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChva2F5LCBva2F5KTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
ICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jYWxsZXIpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChleGVjLCBwcm9wZXJ0
eU5hbWUpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCkBAIC00ODAsNiAr
NDkxLDkgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIAogCiBib29s
IEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
ICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAg
ICB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFtZUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7
CkBAIC00OTAsNyArNTA0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iagogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1
Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcg
dGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBpZiAodGhpc09i
amVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNs
ZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAg
ICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKQEAgLTUyMCwyNyArNTM0LDI3IEBAIGJv
b2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICAgCiAgICAgaWYgKGRl
c2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxl
KCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFi
bGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLmVu
dW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3Io
KSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vz
c01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5p
c21FcnJvcikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlw
dG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAg
ICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBh
dHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIGlmICghdmFsdWVDaGVjaykgewogICAgICAgICBpZiAodGhyb3dF
eGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdfaAogCiAjaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVG
cm9tVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xNjgsMTIgKzE2OSwxNSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBzZXRJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IEpTVmFsdWUganNWYWx1ZSkKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlID0gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4o
ZXhlYywganNWYWx1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoaXNOZXV0ZXJlZCgpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDggKzgwLDExIEBAIFN0cnVjdHVyZSog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHIKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3RnJvbUl0
ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgaXRl
cmF0b3IpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC5J
dGVyYXRvciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IGRpZCBub3QgcmV0dXJuIGFuIG9iamVjdC4i
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBkaWQgbm90IHJldHVy
biBhbiBvYmplY3QuIikpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgc3RvcmFnZTsKICAg
ICB3aGlsZSAodHJ1ZSkgewpAQCAtMTE4LDggKzEyMSwxMCBAQCBpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBpbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmly
c3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0
KQogewotICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShmaXJzdEFyZ3Vt
ZW50KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShmaXJzdEFyZ3VtZW50KTsKIAogICAgIGlmIChKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGZpcnN0VmFsdWUpKSB7CiAgICAgICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0ganNCdWZmZXItPmltcGwoKTsKQEAgLTEyOSw3ICsx
MzQsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAlIFZpZXdDbGFzczo6ZWxl
bWVudFNpemUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihleGVjLCAi
QXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBlbGVtZW50IHNpemUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dSYW5n
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zm
c2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiKTsKICAgICAgICAgICAg
IGxlbmd0aCA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgLyBWaWV3Q2xhc3M6OmVs
ZW1lbnRTaXplOwogCiAgICAgICAgIH0KQEAgLTEzOSw3ICsxNDQsNyBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0
aE9wdCk7CiAgICAgCiAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09
IFR5cGVEYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXhwZWN0ZWQgQXJyYXlCdWZmZXIgZm9yIHRoZSBmaXJzdCBhcmd1bWVudC4iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiIpKTsKICAgICAK
ICAgICAvLyBGb3IgZXZlcnl0aGluZyBidXQgRGF0YVZpZXcsIHdlIGFsbG93IGNvbnN0cnVjdGlv
biB3aXRoIGFueSBvZjoKICAgICAvLyAtIEFub3RoZXIgYXJyYXkuIFRoaXMgY3JlYXRlcyBhIGNv
cHkgb2YgdGhlIG9mIHRoYXQgYXJyYXkuCkBAIC0xNzQsNyArMTc5LDcgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICAgICAgICAgICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShpdGVyYXRvckZ1bmMsIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLkl0ZXJhdG9yIGZv
ciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxlZC4iKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxl
ZC4iKSk7CiAKICAgICAgICAgICAgICAgICAgICAgQXJnTGlzdCBhcmd1bWVudHM7CiAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsKGV4ZWMsIGl0ZXJhdG9yRnVuYywg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ3VtZW50cyk7CkBAIC0yMDYsMTUgKzIxMSwx
NSBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgaWYgKGZp
cnN0VmFsdWUuaXNJbnQzMigpKQogICAgICAgICBsZW5ndGggPSBmaXJzdFZhbHVlLmFzSW50MzIo
KTsKICAgICBlbHNlIGlmICghZmlyc3RWYWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBh
cmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOwogICAgIGVsc2Ug
ewogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KGZpcnN0VmFsdWUuYXNOdW1iZXIo
KSk7CiAgICAgICAgIGlmIChsZW5ndGggIT0gZmlyc3RWYWx1ZS5hc051bWJlcigpKQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBh
cnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBub3QgYWxsb3dlZCkiKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBu
b3QgYWxsb3dlZCkiKSk7CiAgICAgfQogCiAgICAgaWYgKGxlbmd0aCA8IDApCi0gICAgICAgIHJl
dHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihleGVjLCBzY29wZSwgIlJlcXVlc3Rl
ZCBsZW5ndGggaXMgbmVnYXRpdmUiKTsKICAgICByZXR1cm4gVmlld0NsYXNzOjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBsZW5ndGgpOwogfQogCkBAIC0yMjQsNiArMjI5LDkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZQogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0Ns
YXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24gPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOwog
ICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0gZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgp
LT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBwYXJlbnRTdHJ1Y3R1cmUpOwpA
QCAtMjM0LDcgKzI0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
R2UKIAogICAgIGlmICghYXJnQ291bnQpIHsKICAgICAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRB
cnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVx
dWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkRhdGFWaWV3IGNvbnN0cnVj
dG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKSk7CiAKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIDApKTsK
ICAgICB9CkBAIC0yNjgsNyArMjc2LDkgQEAgQ29uc3RydWN0VHlwZSBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbgogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIFZpZXdDbGFzczo6aW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Vmlld0NsYXNzPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNSArNDgsMTcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBsZW5ndGgsIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQ29uc3RydWN0
aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PihleGVjLT52bSgpLmhlYXApKQotICAgICAgICBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyhleGVjLT52bSgpLCBjb250ZXh0KTsKLSAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCisgICAgICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC02NCwxNyArNjYsMTkgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCgKICAg
ICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAotICAgICAg
ICBleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpLAorICAgICAgICB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSwKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dDo6RG9udEluaXRpYWxp
emUpOwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
cmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcodm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTgzLDIyICs4NywyNCBAQCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBzaXplX3Qgc2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoIUFycmF5QnVmZmVyVmll
dzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUp
KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5ndGgg
b3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5
dGVPZmZzZXQsIHNpemUpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSk7
CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChleGVjLT52bSgpLCBz
dHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICBDb25zdHJ1Y3Rpb25D
b250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVz
dWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXco
dm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTEyOCwxMCArMTM0LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJh
bmdlKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKGNhbkFjY2Vzc1JhbmdlUXVpY2tseShvZmZzZXQs
IGxlbmd0aCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgY29uc2lzdGlu
ZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5kcyIpKTsKKyAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgY29uc2lz
dGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5kcyIpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTI5MCw4ICsyOTgsMTAgQEAgQXJyYXlCdWZmZXIqIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEVuY29kZWRK
U1ZhbHVlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVkVHlw
ZWRBcnJheVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCwg
UHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVF9VTlVTRUQob2JqZWN0LCBq
c0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihKU1ZhbHVlOjpkZWNvZGUob2JqZWN0KSkt
PmlzTmV1dGVyZWQoKSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw5
IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSBK
U0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBleGVtcGxhciwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIGNvbnN0IEZ1bmN0b3Im
IGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgY29uc3Ry
dWN0b3IgPSBleGVtcGxhci0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3Rvcik7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTU0LDcgKzU3LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3KiBzcGVjaWVz
Q29uc3RydQogICAgIGlmIChjb25zdHJ1Y3Rvci5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1
cm4gZGVmYXVsdENvbnN0cnVjdG9yKCk7CiAgICAgaWYgKCFjb25zdHJ1Y3Rvci5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiY29uc3RydWN0
b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91bGQg
bm90IGJlIG51bGwiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzMs
MTEgKzc2LDExIEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnUKICAg
ICAgICAgaWYgKCF2aWV3LT5pc05ldXRlcmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdmlldzsK
IAotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZp
ZXciKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgic3Bl
Y2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtOTYsNDMgKzk5LDQ1IEBAIGlubGluZSB1bnNpZ25l
ZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb20KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0Ns
YXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gMjIuMi4zLjIyCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFz
cyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4
cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMt
PmFyZ3VtZW50Q291bnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsK
IAogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDIpIHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvSW50ZWdlcihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgaWYgKG9mZnNl
dE51bWJlciA8IDApCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZXhlYywg
Ik9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CisgICAgICAgIGlmIChVTkxJS0VMWShv
ZmZzZXROdW1iZXIgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihl
eGVjLCBzY29wZSwgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CiAgICAgICAgIG9m
ZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbihvZmZzZXROdW1iZXIsIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkpOwog
ICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPmlz
TmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgaWYgKFVOTElLRUxZ
KHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIEpTT2JqZWN0KiBzb3VyY2VBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmpl
Y3QqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYgKCFzb3VyY2VBcnJheSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGaXJz
dCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgIGlmIChVTkxJS0VMWSghc291
cmNlQXJyYXkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIGlmIChpc1R5cGVkVmlldyhzb3VyY2VBcnJheS0+Y2xh
c3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKICAgICAgICAgSlNBcnJheUJ1ZmZl
clZpZXcqIHNvdXJjZVZpZXcgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJh
eSk7Ci0gICAgICAgIGlmIChzb3VyY2VWaWV3LT5pc05ldXRlcmVkKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNvdXJjZVZpZXctPmlzTmV1
dGVyZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAg
ICAgbGVuZ3RoID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oc291cmNlQXJyYXkpLT5sZW5n
dGgoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gc291cmNlQXJyYXktPmdldChleGVj
LCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkudG9VSW50MzIoZXhlYyk7CisgICAg
ICAgIGxlbmd0aCA9IHNvdXJjZUFycmF5LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKIAotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdGhpc09iamVjdC0+c2V0KGV4ZWMsIG9m
ZnNldCwgc291cmNlQXJyYXksIDAsIGxlbmd0aCwgQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CkBA
IC0xNDAsMTMgKzE0NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNU
eXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7Cisv
LyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy41Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAg
ICBsb25nIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogICAgIGxvbmcgdG8gPSBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIGxlbmd0aCk7CkBAIC0xNjUs
NyArMTcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAg
IGxvbmcgY291bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFs
IC0gZnJvbSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAg
ICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50
eXBlZFZlY3RvcigpOwogICAgIG1lbW1vdmUoYXJyYXkgKyB0bywgYXJyYXkgKyBmcm9tLCBjb3Vu
dCAqIHRoaXNPYmplY3QtPmVsZW1lbnRTaXplKTsKQEAgLTE3NCwxMiArMTgxLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisvLyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCkBA
IC0xOTMsNyArMjAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1lIFZpZXdD
bGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAg
ICBhdXRvIHRhcmdldE9wdGlvbiA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
V2l0aG91dENvZXJjaW9uKHZhbHVlVG9GaW5kKTsKQEAgLTIxOSwxNiArMjI4LDE4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjEz
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0
LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5
cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5E
ZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBl
Y3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgp
OwogCkBAIC0yMzgsNyArMjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAogICAgIGlmICh0aGlz
T2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVs
ZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAgICAgYXV0byB0
YXJnZXRPcHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRD
b2VyY2lvbih2YWx1ZVRvRmluZCk7CkBAIC0yNTYsMTEgKzI2NywxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdD
bGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4oVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpz
Q2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIDIyLjIuMy4xNAogICAgIGF1dG8gam9pbldp
dGhTZXBhcmF0b3IgPSBbJl0gKFN0cmluZ1ZpZXcgc2VwYXJhdG9yKSAtPiBFbmNvZGVkSlNWYWx1
ZSB7CkBAIC0yODksMjEgKzMwMywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5
cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgIHJldHVybiBq
b2luV2l0aFNlcGFyYXRvcihzZXBhcmF0b3JTdHJpbmctPnZpZXcoZXhlYykuZ2V0KCkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIC8vIDIyLjIuMy4xNgotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
Vmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgaWYg
KCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtMzI2LDcgKzM0Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIGF1dG8gdGFyZ2V0T3B0aW9uID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24odmFsdWVUb0ZpbmQpOwogICAgIGlmICghdGFyZ2V0
T3B0aW9uKQpAQCAtMzQ1LDcgKzM2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
dWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoVk0mLCBFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjMKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzU0LDcgKzM3MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1
bmNMZW5ndGgoVk0mLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjE3CiAgICAg
Vmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKQEAgLTM2Myw3ICszNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0
ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoVk0mLCBFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjIKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzcyLDcgKzM4OCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAy
Mi4yLjMuMwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihl
eGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zODEsMTIgKzM5NywxNSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy4yMQogICAgIFZpZXdD
bGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBl
ZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1l
IFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3Io
KTsKICAgICBzdGQ6OnJldmVyc2UoYXJyYXksIGFycmF5ICsgdGhpc09iamVjdC0+bGVuZ3RoKCkp
OwpAQCAtMzk1LDEyICs0MTQsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jU29ydChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gMjIuMi4zLjI1CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAodGhpc09iamVj
dC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0
eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVu
RGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdGhpc09iamVjdC0+c29ydCgpOwogCkBAIC00
MDgsMTUgKzQzMCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTbGljZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgLy8gMjIuMi4zLjI2Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKIAogICAg
IFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVy
cm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHVu
c2lnbmVkIHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtNDI4LDcgKzQ1
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJl
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOwogCiAgICAgLy8gQ2xhbXAgZW5kIHRvIGJlZ2luLgogICAgIGVuZCA9IHN0ZDo6
bWF4KGJlZ2luLCBlbmQpOwpAQCAtNDQ4LDcgKzQ3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGUKIAogICAgIEFTU0VSVCghcmVzdWx0LT5pc05ldXRlcmVkKCkp
OwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1l
c3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBXZSBy
ZXR1cm4gZWFybHkgaGVyZSBzaW5jZSB3ZSBkb24ndCBhbGxvY2F0ZSBhIGJhY2tpbmcgc3RvcmUg
aWYgbGVuZ3RoIGlzIDAgYW5kIG1lbW1vdmUgZG9lcyBub3QgbGlrZSBudWxscHRycwogICAgIGlm
ICghbGVuZ3RoKQpAQCAtNDkyLDE1ICs1MTYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5j
U3ViYXJyYXlDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKFZNJnZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy4yMwot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlz
T2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBHZXQgdGhlIGxlbmd0aCBoZXJl
OyBsYXRlciBhc3NlcnQgdGhhdCB0aGUgbGVuZ3RoIGRpZG4ndCBjaGFuZ2UuCiAgICAgdW5zaWdu
ZWQgdGhpc0xlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwpAQCAtNTUyLDcgKzU3OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJzcGVjaWVz
IGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Iik7CisgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0
dXJuIGEgVHlwZWRBcnJheSBWaWV3Iik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDIs
MTkgKzEyMDIsMjIgQEAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdAog
CiBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJs
b2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCiB7CisgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0
TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpT
dHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlID0gaGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERl
YnVnZ2VyT2ZmOwogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBleGVjdXRh
YmxlLT5leGVjdXRhYmxlSW5mbygpLmV2YWxDb250ZXh0VHlwZSgpOwogICAgIAotICAgIFVubGlu
a2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNvZGVDYWNoZSgpLT5n
ZXRFdmFsQ29kZUJsb2NrKAotICAgICAgICB2bSgpLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5z
b3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgZGVi
dWdnZXJNb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWik7Cisg
ICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtLmNvZGVDYWNo
ZSgpLT5nZXRFdmFsQ29kZUJsb2NrKAorICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJs
ZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUs
IGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFop
OwogCiAgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCiAgICAgICAgIGRlYnVnZ2VyKCktPnNvdXJjZVBh
cnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxp
bmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBl
eGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEyMjMsMTYgKzEyMjYsMTkgQEAg
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6YwogCiBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNJbnRlcmFjdGl2ZURlYnVnZ2VyKCkgPyBEZWJ1
Z2dlck9uIDogRGVidWdnZXJPZmY7Ci0gICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1D
b2RlQmxvY2soCi0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dlck1vZGUsIGVycm9yKTsK
KyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0g
dm0uY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgIHZtLCBl
eGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwgZGVidWdnZXJNb2RlLCBlcnJvcik7CiAKICAgICBpZiAoaGFzRGVidWdnZXIoKSkK
ICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+
c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwogCiAg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1l
LCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CisgICAg
ICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBlcnJvci50b0Vycm9yT2JqZWN0KHRo
aXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAw
MiBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQ
ZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDksIDIwMTIsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBD
YW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqCkBAIC03NiwxMSArNzYsMTQgQEAgc3RhdGljIEJpdG1h
cDwyNTY+IG1ha2VDaGFyYWN0ZXJCaXRtYXAoYwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEJpdG1h
cDwyNTY+JiBkb05vdEVzY2FwZSwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTguMi42LjEuMSBSdW50aW1l
IFNlbWFudGljczogRW5jb2RlICggc3RyaW5nLCB1bmVzY2FwZWRTZXQgKQogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVuY29kZQogCi0gICAgYXV0byB0aHJvd0V4
Y2VwdGlvbiA9IFtleGVjXSB7Ci0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIGNvbnRh
aW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOworICAgIGF1dG8gdGhyb3dFeGNl
cHRpb24gPSBbJnNjb3BlLCBleGVjXSB7CisgICAgICAgIHJldHVybiBKU0M6OnRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN0cmlu
ZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikpKTsKICAgICB9OwogCiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpAQCAtMTYzLDYgKzE2Niw5IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KIEFMV0FZU19JTkxJTkUKIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBj
b25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBpbnQgayA9IDA7CiAgICAg
VUNoYXIgdSA9IDA7CkBAIC0yMDMsNyArMjA5LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4
ZWNTdGF0ZSogZXhlYywgYwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJMZW4g
PT0gMCkgewogICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVycm9yIikpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlVSSSBlcnJvciIpKSk7CiAgICAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgY2Fz
ZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBpcyB0aGUgInVuZXNjYXBlIiBmdW5j
dGlvbi4KICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwgaXQncyBnb29kIHRvIHN1cHBvcnQg
dGhlIHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCiAgICAg
ICAgICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBwWzFdID09ICd1JwpAQCAtNjQwLDEz
ICs2NDYsMTYgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KFN0cmluZ1ZpZXcgcykKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHggPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXguaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh4KTsK
IAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywg
Z2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVj
dC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTg0NSwxMiArODU0LDE2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1UKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KICAgICAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVl
QW5kQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCAiJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFj
Y2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxl
cicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOwogfQogCiBjbGFzcyBHbG9i
YWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yIHsKQEAgLTg4Nyw4ICs5MDAsMTEgQEAgcHJpdmF0ZToK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpKTsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpKTsKIAogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7CiAKQEAgLTk0NCw4ICs5NjAsMTEg
QEAgYm9vbCBjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChFeGVjUwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4ZWMp
CiB7Ci0gICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIAotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNv
bnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
aWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZl
cnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogCkBAIC05NjIsNyArOTgxLDYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSAmJiAh
dmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgc2hvdWxkVGhyb3dJ
ZkNhbnRTZXQgPSB0cnVlOwogICAgIHRoaXNPYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywg
dmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMCwxMSArMTEwLDE0IEBAIHZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0
T3duTm9uSW5kZXgKIAogYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNl
bGwpOwogICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgogICAgIEpT
TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVS
ZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHBy
b3BlcnR5TmFtZS51aWQoKSkpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDkgQEAgdm9pZCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZAogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0b3ducHJvcGVy
dHktcAogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKQEAgLTEyOSw3ICsxMzIsNyBAQCBib29s
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAgICAgICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZpcm9u
bWVudCgpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCB0cmFtcG9saW5lU2xvdCh0YXJnZXRFbnZp
cm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgICAg
IGJvb2wgZm91bmQgPSB0YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5s
b2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHRhcmdldEVu
dmlyb25tZW50LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZp
cm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogCiAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTM3
LDcgKzE0MCw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3AKIAog
ICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGggVERaIHZhbHVlLCB0aHJvdyBh
IHJlZmVyZW5jZSBlcnJvci4KICAgICAgICAgaWYgKCF2YWx1ZSkgewotICAgICAgICAgICAgdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgIHRocm93
Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTE2MiwxNiArMTY1LDIyIEBAIGJvb2wgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3AKIAogYm9vbCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5h
bWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCiAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChz
aG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTkzLDE3ICsyMDIsMjMg
QEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcAogCiBib29sIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCiAgICAgaWYgKHNob3VsZFRocm93KQotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVm
aW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGEgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
Inx0aGlzfCBzaG91bGQgYmUgYSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCIpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
KCksIG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4MSw2ICs2ODEsOSBAQCBzdGF0aWMgdm9pZCBnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSog
CiAKIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFt
ZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRtb2R1bGVuYW1l
c3BhY2UKICAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCiAgICAgICAgIHJldHVybiBt
X21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKQEAgLTY5NCwxMSArNjk3LDExIEBAIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDoKICAgICAgICAgY29uc3QgSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1lLmdldCgpKSk7CiAgICAgICAgIHN3aXRjaCAocmVz
b2x1dGlvbi50eXBlKSB7CiAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6
Ci0gICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9ydGVk
IGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQuIikp
OworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygi
RXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcobmFtZS5nZXQoKSksICInIGlzIG5vdCBm
b3VuZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OkVycm9yOgotICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJFeHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSBy
ZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAn
ZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXM6CkBAIC03MTAsMjkgKzcxMywzMyBAQCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCogSlNNb2R1bGVSZWNvcmQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX21vZHVsZU5h
bWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNw
YWNlT2JqZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKKyAgICBtX21v
ZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm1vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91c05hbWVzKSk7CiAgICAgcmV0dXJu
IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0
ZShleGVjLCBzb3VyY2VDb2RlKCkpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewotICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKKyAgICBtX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CiAgICAgaW5zdGFudGlhdGVE
ZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSk7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6
Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRh
YmxlID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGUoKTsKLSAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFs
dWUoKSwgdGhpcyk7Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRl
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CiAKICAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFy
YXRpb25pbnN0YW50aWF0aW9uCiAgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDkuCkBA
IC03NDUsMTUgKzc1MiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xh
cmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4
ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpOwogICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0
aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6
Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRp
cmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9y
dE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVk
IGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwg
IicgaXMgbm90IGZvdW5kLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgotICAgICAgICAgICAgICAgIHRo
cm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5k
aW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSksICInIGNh
bm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5n
KCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5
LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3Vv
dXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmlu
ZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50
cmllcy4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwg
bWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNh
bm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2
ZWQ6CkBAIC03NzksMTUgKzc4NiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0
ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1v
ZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAg
ICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9y
dEVudHJ5LmltcG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRp
bmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkp
LCAiJyBpcyBub3QgZm91bmQuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6Ci0gICAgICAgICAgICAgICAg
dGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1l
ICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUg
cmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiSW1wb3J0
aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9ydE5hbWUuaW1wbCgp
KSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGlu
Z3MuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNv
bHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4
ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBi
ZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGlu
ZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmll
cy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OlJlc29sdmVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiAr
Mjk3LDggQEAgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OSW1wbChKU1ZhbHVlIAogU3RyaW5n
aWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBKU09iamVjdCogaG9sZGVy
LCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1bmN0aW9uLgogICAgIHZhbHVl
ID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkK
QEAgLTM2OCw3ICszNzAsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lm
aWVyCiAgICAgLy8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1dCB0aGUgaG9sZGVyIG9u
IHRoZSBzdGFjay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ob2xkZXJTdGFjay5z
aXplKCk7IGkrKykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tpXS5vYmplY3QoKSA9PSBv
YmplY3QpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFs
KCJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
SlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iKSk7CiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgICAgICB9CiAgICAgfQpAQCAt
NTg5LDEwICs1OTEsMTMgQEAgZW51bSBXYWxrZXJTdGF0ZSB7IFN0YXRlVW5rbm93biwgQXJyYXlT
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0U3RhcnRTdGF0ZSwgT2Jq
ZWN0U3RhcnRWaXNpdE1lbWJlciwgT2JqZWN0RW5kVmlzaXRNZW1iZXIgfTsKIE5FVkVSX0lOTElO
RSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTYsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBwcm9wZXJ0eVN0YWNrOwogICAgIFZlY3Rvcjx1aW50MzJfdCwgMTYsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiBpbmRleFN0YWNrOwotICAgIExvY2FsU3RhY2s8SlNPYmplY3QsIDE2PiBvYmpl
Y3RTdGFjayhtX2V4ZWMtPnZtKCkpOwotICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5
U3RhY2sobV9leGVjLT52bSgpKTsKKyAgICBMb2NhbFN0YWNrPEpTT2JqZWN0LCAxNj4gb2JqZWN0
U3RhY2sodm0pOworICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5U3RhY2sodm0pOwog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBhcnJheUxlbmd0
aFN0YWNrOwogICAgIAogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTYsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBzdGF0ZVN0YWNrOwpAQCAtNjA3LDcgKzYxMiw3IEBAIE5FVkVSX0lOTElORSBKU1Zh
bHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5p
c09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0FycmF5KGFzT2JqZWN0KGlu
VmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoSlNBcnJheTo6aW5mbygpKSk7
CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6
ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMsIHNjb3BlKTsKIAogICAgICAgICAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShpblZhbHVlKTsKICAgICAgICAgICAgICAg
ICBhcnJheVN0YWNrLnB1c2goYXJyYXkpOwpAQCAtNjYzLDcgKzY2OCw3IEBAIE5FVkVSX0lOTElO
RSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5W
YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWlzSlNBcnJheShhc09i
amVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cyhKU0FycmF5Ojpp
bmZvKCkpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlT
dGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYywgc2NvcGUpOwogCiAg
ICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFsdWUpOwogICAg
ICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKQEAgLTczNiwzMSArNzQxLDM0
IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICB9CiAgICAg
SlNPYmplY3QqIGZpbmFsSG9sZGVyID0gY29uc3RydWN0RW1wdHlPYmplY3QobV9leGVjKTsKICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmaW5hbEhvbGRlcik7Ci0gICAgZmluYWxIb2xkZXItPm1l
dGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVjLCBtX2V4ZWMtPnZtKCkucHJvcGVy
dHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7CisgICAgZmluYWxIb2xk
ZXItPm1ldGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKICAgICByZXR1cm4gY2FsbFJl
dml2ZXIoZmluYWxIb2xkZXIsIGpzRW1wdHlTdHJpbmcobV9leGVjKSwgb3V0VmFsdWUpOwogfQog
CiAvLyBFQ01BLTI2MiB2NSAxNS4xMi4yCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
T05Qcm90b0Z1bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04ucGFyc2UgcmVxdWlyZXMg
YXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNPTi5wYXJzZSBy
ZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpKTsKICAgICBKU1N0cmluZzo6U2FmZVZp
ZXcgc291cmNlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZp
ZXcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIEpTVmFsdWUgdW5maWx0ZXJlZDsKLSAg
ICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkpOworICAgIExvY2FsU2NvcGUgbG9jYWxTY29w
ZSh2bSk7CiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICBMaXRlcmFsUGFyc2Vy
PExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzb3VyY2UubGVu
Z3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBhcnNlci50cnlM
aXRlcmFsUGFyc2UoKTsKICAgICAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFyc2Vy
LmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVz
c2FnZSgpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4ganNv
blBhcnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVyczE2KCksIHNvdXJjZS5sZW5ndGgoKSwgU3Ry
aWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJz
ZSgpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JN
ZXNzYWdlKCkpKTsgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3Nh
Z2UoKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikK
QEAgLTc3MSwxOCArNzc5LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlBy
b3RvRnUKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2JqZWN0PihleGVjLT52bSgpLCBhc09iamVjdChmdW5j
dGlvbikpLCBjYWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJlZCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2JqZWN0Pih2bSwgYXNPYmpl
Y3QoZnVuY3Rpb24pKSwgY2FsbFR5cGUsIGNhbGxEYXRhKS53YWxrKHVuZmlsdGVyZWQpKTsKIH0K
IAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gaW5wdXQgdG8gc3Ry
aW5naWZ5IikpKTsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkpOwotICAgIExvY2Fs
PFVua25vd24+IHZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
LSAgICBMb2NhbDxVbmtub3duPiByZXBsYWNlcihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgx
KSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gc3BhY2UoZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQo
MikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKSk7CisgICAgTG9j
YWxTY29wZSBsb2NhbFNjb3BlKHZtKTsKKyAgICBMb2NhbDxVbmtub3duPiB2YWx1ZSh2bSwgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIExvY2FsPFVua25vd24+IHJlcGxhY2VyKHZt
LCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgTG9jYWw8VW5rbm93bj4gc3BhY2Uodm0sIGV4ZWMt
PmFyZ3VtZW50KDIpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmluZ2lmaWVyKGV4ZWMsIHJl
cGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgsIDIwMDksIDIwMTItMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIw
MDgtMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMTM1NCw2ICsxMzU0LDcgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlRGly
ZWN0KFZNJiB2bQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhy
b3dJZkNhbnRTZXQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJp
Y3RNb2RlKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3QoKSA9
PSBwcm90b3R5cGUpCkBAIC0xMzY1LDcgKzEzNjYsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90
b3R5cGVXaXRoQ3ljbGVDaGVjCiAKICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewogICAgICAgICBp
ZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEzNzQsNyArMTM3NSw3
IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKICAgICB3aGlsZSAo
bmV4dFByb3RvdHlwZSAmJiBuZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYg
KG5leHRQcm90b3R5cGUgPT0gdGhpcykgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93SWZD
YW50U2V0KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90b19fIHZhbHVlIikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChVTkxJ
S0VMWShhc09iamVjdChuZXh0UHJvdG90eXBlKS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5
cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCkBAIC0xNjE2LDI4ICsxNjE3LDMyIEBAIGVudW0g
Y2xhc3MgVHlwZUhpbnRNb2RlIHsgVGFrZXNIaW50LCBEb2UKIHRlbXBsYXRlPFR5cGVIaW50TW9k
ZSBtb2RlID0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQ+CiBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgaWYgKHNj
b3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAg
aWYgKGZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkgJiYgbW9kZSA9PSBUeXBlSGludE1vZGU6OlRha2Vz
SGludCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7
CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKGNhbGxUeXBlID09IENhbGxUeXBl
OjpOb25lKSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICBy
ZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24o
KTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGNhbGxBcmdzOwogICAgIGlmIChtb2RlID09
IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KSB7CiAgICAgICAgIEpTU3RyaW5nKiBoaW50U3RyaW5n
ID0gbnVsbHB0cjsKICAgICAgICAgc3dpdGNoIChoaW50KSB7CiAgICAgICAgIGNhc2UgTm9QcmVm
ZXJlbmNlOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdz
LmRlZmF1bHRTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJpbmcgPSB2bS5zbWFsbFN0cmlu
Z3MuZGVmYXVsdFN0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHJl
ZmVyTnVtYmVyOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJp
bmdzLm51bWJlclN0cmluZygpOworICAgICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3Ry
aW5ncy5udW1iZXJTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBy
ZWZlclN0cmluZzoKLSAgICAgICAgICAgIGhpbnRTdHJpbmcgPSBleGVjLT52bSgpLnNtYWxsU3Ry
aW5ncy5zdHJpbmdTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJpbmcgPSB2bS5zbWFsbFN0
cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYWxsQXJncy5hcHBlbmQoaGludFN0cmluZyk7CkBAIC0xNjQ1LDQwICsxNjUwLDQ3IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbFRvUHJpbWkKIAogICAgIEpTVmFsdWUg
cmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjb25zdF9j
YXN0PEpTT2JqZWN0Kj4ob2JqZWN0KSwgY2FsbEFyZ3MpOwogICAgIEFTU0VSVCghcmVzdWx0Lmlz
R2V0dGVyU2V0dGVyKCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
cmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQg
PyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC50
b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiBtb2RlID09
IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50ID8gSlNWYWx1ZSgpIDogdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJpbWl0aXZlIHJldHVybmVk
IGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBFQ01BIDcuMS4xCiBK
U1ZhbHVlIEpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgZGVmYXVsdCB2YWx1ZSBtZXRob2RzIHRoZXJlIGFyZSBv
biBvYmplY3QncyBwcm90b3R5cGUgY2hhaW4gYXJlCiAgICAgLy8gYmVpbmcgd2F0Y2hlZC4KLSAg
ICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ0ludGVybmFsUHJvcGVydGllc0lmTmVj
ZXNzYXJ5Rm9yRW50aXJlQ2hhaW4oZXhlYy0+dm0oKSk7CisgICAgdGhpcy0+c3RydWN0dXJlKCkt
PnN0YXJ0V2F0Y2hpbmdJbnRlcm5hbFByb3BlcnRpZXNJZk5lY2Vzc2FyeUZvckVudGlyZUNoYWlu
KHZtKTsKIAogICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgaWYgKGhpbnQgPT0gUHJlZmVyU3RyaW5n
KSB7CiAgICAgICAgIHZhbHVlID0gY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oZXhlYywgdGhpcywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBoaW50KTsKKyAgICAgICAgQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9PSB2YWx1ZS5hc0NlbGwoKSk7
CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAg
dmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkpOwogICAgICAgICBpZiAo
dmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
dmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkpOwogICAgICAgICBpZiAo
dmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIHZhbHVlID0gY2FsbFRv
UHJpbWl0aXZlRnVuY3Rpb24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3Ry
aW5nLCBoaW50KTsKKyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5l
eGNlcHRpb24oKSA9PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKTsKIAotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik5vIGRlZmF1bHQgdmFsdWUiKSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSk7CiB9CiAKIEpTVmFsdWUgSlNP
YmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKQEAgLTE3MjcsMTIgKzE3MzksMTQgQEAg
Y29uc3QgSGFzaFRhYmxlVmFsdWUqIEpTT2JqZWN0OjpmaW5kUHJvcAogYm9vbCBKU09iamVjdDo6
aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0lu
c3RhbmNlVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgCiAKICAgICBpZiAoIWhhc0luc3RhbmNl
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJbnN0YW5jZVZhbHVlICE9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rp
b24oKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGhhc0luc3RhbmNlVmFsdWUsIGNhbGxEYXRhKTsKICAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICB2bS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9y
aGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsKKyAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRl
ckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xNzQ3LDcgKzE3NjEsNyBAQCBib29s
IEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAgICAgICAgIHJldHVybiBkZWZh
dWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlKSk7CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpCiAg
ICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4
ZWMsIHZhbHVlKTsKLSAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oZXhlYywgdGhpcykpOworICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVy
cm9yTm90RnVuY3Rpb24oZXhlYywgdGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MTc2MCwxNSArMTc3NCwxNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUq
IGV4CiAKIGJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
IXZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcHJv
dG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90
eXBlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxp
ZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QodmFsdWUpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFs
dWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CkBAIC0yMjM4LDYgKzIyNTQsOSBA
QCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJbmRl
eGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlQoKGluZGV4aW5nVHlw
ZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOwogICAgIEFTU0VSVCgh
aW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKIApAQCAtMjI0Nyw4ICsyMjY2LDYgQEAgYm9vbCBK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIG9yIGVxdWFsIHRvIHRo
ZSB2ZWN0b3IgbGVuZ3RoLgogICAgIEFTU0VSVChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCkpOwogICAgIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgCiAgICAgaWYgKGkgPiBN
QVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgKICAgICAgICAgfHwgKGkgPj0gTUlOX1NQQVJTRV9BUlJB
WV9JTkRFWCAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihpLCBjb3VudEVsZW1lbnRzPGluZGV4
aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQogICAgICAgICB8fCBpbmRleElzU3VmZmljaWVudGx5QmV5
b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpKSB7CkBA
IC0yMjYyLDcgKzIyNzksNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuCiAgICAgfQogCiAgICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIGkgKyAxKSkgewotICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYnV0
dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CkBAIC0yMzAwLDYgKzIzMTcsNyBAQCB0ZW1wbGF0
ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kCiBib29sIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSog
c3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIGkgc2hvdWxkIGJlIGEgdmFsaWQgYXJy
YXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHZlY3Rvci4KICAgICBBU1NF
UlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAtMjMyNyw3ICsyMzQ1LDcgQEAgYm9vbCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0bywgb3IgY2FuJ3QgdXNlIGEg
dmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRlIGEgc3BhcnNlIG1hcCAmIGFk
ZCB0aGUgdmFsdWUuCi0gICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoZXhlYy0+
dm0oKSk7CisgICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwogICAgICAg
ICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogICAgIH0KIApAQCAtMjMzNyw3ICsyMzU1LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRl
eEJleW9uZFZlY3RvckxlbgogICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBp
ZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRP
bmx5KCkgfHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2hv
dWxkVGhyb3cpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBsZW5ndGggPSBp
ICsgMTsKQEAgLTIzNDcsNyArMjM2NSw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW4KICAgICAvLyBXZSBhcmUgY3VycmVudGx5IHVzaW5nIGEgbWFwIC0gY2hlY2sg
d2hldGhlciB3ZSBzdGlsbCB3YW50IHRvIGJlIGRvaW5nIHNvLgogICAgIC8vIFdlIHdpbGwgY29u
dGludWUgIHRvIHVzZSBhIHNwYXJzZSBtYXAgaWYgU3BhcnNlTW9kZSBpcyBzZXQsIGEgdmVjdG9y
IHdvdWxkIGJlIHRvbyBzcGFyc2UsIG9yIGlmIGFsbG9jYXRpb24gZmFpbHMuCiAgICAgdW5zaWdu
ZWQgbnVtVmFsdWVzSW5BcnJheSA9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgKyBtYXAt
PnNpemUoKTsKLSAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVuc2VFbm91Z2hGb3JW
ZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VWZWN0b3JMZW5ndGgo
ZXhlYy0+dm0oKSwgbGVuZ3RoKSkKKyAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVu
c2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VW
ZWN0b3JMZW5ndGgodm0sIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtYXAtPnB1dEVudHJ5KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAKICAgICAvLyBSZXJlYWQgbV9zdG9y
YWdlIGFmdGVyIGluY3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUgbV9udW1WYWx1ZXNJblZlY3Rv
ci4KQEAgLTI5NDQsNiArMjk2Miw5IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE1heUJlSW5k
ZXgoRXhlY1MKIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGJv
b2wgaXNFeHRlbnNpYmxlLAogICAgIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGN1cnJl
bnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBJZiB3ZSBo
YXZlIGEgbmV3IHByb3BlcnR5IHdlIGNhbiBqdXN0IHB1dCBpdCBvbiBub3JtYWxseQogICAgIC8v
IFN0ZXAgMi4KICAgICBpZiAoIWlzQ3VycmVudERlZmluZWQpIHsKQEAgLTI5NTEsNyArMjk3Miw3
IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICAgICAgLy8g
U3RlcCAyLmEKICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsKICAgICAgICAgICAgIGlmICh0
aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlz
IG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBv
YmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvYmplY3QpCkBAIC0yOTc0LDEyICsyOTk1LDEy
IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICBpZiAoIWN1
cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJh
YmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRv
ci5lbnVtZXJhYmxlKCkgIT0gY3VycmVudC5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9m
IHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVt
ZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTg4LDcgKzMwMDksNyBA
QCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgLy8gQSBnZW5l
cmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFuIGV4
aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigp
KSB7CiAgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYg
b2JqZWN0KSB7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgb2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRp
bmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI5OTksMTQgKzMwMjAsMTQgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKAogICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAhPSBj
dXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuY29uZmln
dXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9w
ZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5
Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJv
cGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMzAxNiwxMyArMzAzNywxMyBAQCBib29sIHZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIGlmICghY3VycmVudC5jb25m
aWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkgJiYgZGVz
Y3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9u
KQotICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJp
YnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyZW50LndyaXRh
YmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpICYmICFzYW1l
VmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZhbHVlKCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFu
Z2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
QEAgLTMwMzEsNyArMzA1Miw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIG9iamVj
dCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlk
aW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBAIC0zMDQxLDE3ICszMDYy
LDE3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICBpZiAo
IWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVy
UHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50KCkgJiYgSlNWYWx1ZTo6c3RyaWN0
RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3JpcHRvci5zZXR0ZXIoKSkpKSB7CiAg
ICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVy
IG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0
ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9yLmdldHRlcigpKSkpIHsK
ICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0
ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50LmF0dHJp
YnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFVu
Y29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJvcikpOworICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoVW5jb25m
aWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDU5LDMzICszMDgwLDMzIEBA
IGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICAvLyBTdGVwIDEw
LzExLgogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBKU1ZhbHVl
IGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKTsK
KyAgICBKU1ZhbHVlIGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFt
ZSk7CiAgICAgaWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEdldHRl
clNldHRlciogZ2V0dGVyU2V0dGVyOwogICAgIGJvb2wgZ2V0dGVyU2V0dGVyQ2hhbmdlZCA9IGZh
bHNlOwogICAgIGlmIChhY2Nlc3Nvci5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7Ci0gICAgICAg
IGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGdldHRlclNldHRlciA9IEdldHRlclNldHRl
cjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBhdXRv
KiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oYWNjZXNz
b3IpOwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5zZXR0ZXIoKSkKLSAgICAgICAg
ICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIo
ZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb246OlR5cGU6OlNldHRlcikpOworICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5z
ZXRTZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21H
ZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OlNldHRlcikp
OwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSkKLSAgICAgICAgICAg
IGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhl
YywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb246OlR5cGU6OkdldHRlcikpOworICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRH
ZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0
ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OkdldHRlcikpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChhY2Nlc3Nvci5pc0dldHRlclNldHRlcigpKTsK
ICAgICAgICAgZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwogICAgIH0K
ICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0
dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoU2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7CisgICAgICAgIGdldHRl
clNldHRlciA9IGdldHRlclNldHRlci0+d2l0aFNldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBkZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKICAgICAgICAgZ2V0dGVyU2V0
dGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNl
bnQoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhHZXR0ZXIo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9yLmdldHRl
ck9iamVjdCgpKTsKKyAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoR2V0
dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2Jq
ZWN0KCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAgICAg
aWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmICFnZXR0ZXJTZXR0ZXJD
aGFuZ2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRlc2NyaXB0b3IuYXR0cmlidXRl
c092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0QWNjZXNz
b3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwgQWNjZXNzb3IpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMzIzMyw2ICszMjU0LDkgQEAgdm9pZCBKU09iamVjdDo6Z2V0
R2VuZXJpY1Byb3BlcnR5TmFtZXMoSgogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nZXRtZXRob2QKIEpTVmFsdWUgSlNPYmpl
Y3Q6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2FsbFR5
cGUmIGNhbGxUeXBlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIG1ldGhvZCA9IGdldChleGVj
LCBpZGVudCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTMyNDEsMTMgKzMyNjUsMTMgQEAgSlNWYWx1ZSBKU09iamVjdDo6
Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZQogICAgICAgICBpZiAobWV0aG9kLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KIAogICAgIGNhbGxUeXBlID0gbWV0aG9kLmFzQ2VsbCgpLT5tZXRob2RUYWJs
ZSgpLT5nZXRDYWxsRGF0YShtZXRob2QuYXNDZWxsKCksIGNhbGxEYXRhKTsKICAgICBpZiAoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBl
cnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlB1dERpcmVjdEluZGV4TW9kZS5o
IgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgi
Ci0KICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCkBAIC02NiwxMCArNjUsMTEgQEAgY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFzcyBQ
cm9wZXJ0eURlc2NyaXB0b3I7CiBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKIGNsYXNzIFN0cnVj
dHVyZTsKK2NsYXNzIFRocm93U2NvcGU7CiBzdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEhhc2hU
YWJsZVZhbHVlOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3Io
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYpOwog
ZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogVW5jb25maWd1
cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yOwogCkBAIC0xNjY1LDM3ICsx
NjY1LDYgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKAogICAgIHJl
dHVybiBuYW1lOwogfQogCi0vLyBTZWN0aW9uIDcuMy4xNyBvZiB0aGUgc3BlYy4gCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBmdW5jdGlvbiBzaG91bGQgaGF2ZSBhIHR5
cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sCi12b2lkIGNyZWF0ZUxpc3RG
cm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcnJheUxpa2VWYWx1ZSwgUnVu
dGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1bHQ7Ci0gICAgSlNWYWx1ZSBsZW5ndGhQcm9wZXJ0eSA9
IGFycmF5TGlrZVZhbHVlLmdldChleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCk7Ci0gICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgZG91Ymxl
IGxlbmd0aEFzRG91YmxlID0gbGVuZ3RoUHJvcGVydHkudG9MZW5ndGgoZXhlYyk7Ci0gICAgaWYg
KHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQobGVu
Z3RoQXNEb3VibGUgPj0gMC4wICYmIGxlbmd0aEFzRG91YmxlID09IHN0ZDo6dHJ1bmMobGVuZ3Ro
QXNEb3VibGUpKTsKLSAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bGVuZ3RoQXNEb3VibGUpOwotICAgIGZvciAodWludDY0X3QgaW5kZXggPSAwOyBpbmRleCA8IGxl
bmd0aDsgaW5kZXgrKykgewotICAgICAgICBKU1ZhbHVlICBuZXh0ID0gYXJyYXlMaWtlVmFsdWUu
Z2V0KGV4ZWMsIGluZGV4KTsKLSAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBydW50aW1lVHlwZUZvclZh
bHVlKG5leHQpOwotICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGV4aXRFYXJseSA9IGFkZEZ1bmN0
aW9uKG5leHQsIHR5cGUpOwotICAgICAgICBpZiAoZXhpdEVhcmx5KQotICAgICAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQogYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBib29sIGlzRXh0ZW5zaWJsZSwK
ICAgICBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgaXNDdXJyZW50
RGVmaW5lZCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBjdXJyZW50LCBib29sIHRocm93RXhj
ZXB0aW9uKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwz
OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gU2VjdGlvbiA3LjMuMTcgb2YgdGhlIHNwZWMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBmdW5jdGlvbiBzaG91bGQg
aGF2ZSBhIHR5cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sCit2b2lkIGNy
ZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcnJheUxpa2VW
YWx1ZSwgUnVudGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAK
KyAgICBWZWN0b3I8SlNWYWx1ZT4gcmVzdWx0OworICAgIEpTVmFsdWUgbGVuZ3RoUHJvcGVydHkg
PSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKKyAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgbGVuZ3Ro
QXNEb3VibGUgPSBsZW5ndGhQcm9wZXJ0eS50b0xlbmd0aChleGVjKTsKKyAgICBpZiAodm0uZXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGhBc0Rv
dWJsZSA+PSAwLjAgJiYgbGVuZ3RoQXNEb3VibGUgPT0gc3RkOjp0cnVuYyhsZW5ndGhBc0RvdWJs
ZSkpOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGhB
c0RvdWJsZSk7CisgICAgZm9yICh1aW50NjRfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBp
bmRleCsrKSB7CisgICAgICAgIEpTVmFsdWUgbmV4dCA9IGFycmF5TGlrZVZhbHVlLmdldChleGVj
LCBpbmRleCk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBydW50aW1lVHlwZUZvclZh
bHVlKG5leHQpOworICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGV4aXRF
YXJseSA9IGFkZEZ1bmN0aW9uKG5leHQsIHR5cGUpOworICAgICAgICBpZiAoZXhpdEVhcmx5KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pKQpAQCAtNTUsMTAgKzg4
LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUYKIC8vIEVDTUEg
OC42LjIuMgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUKHZh
bHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUp
ID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAK
ICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkK
ICAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKQEAg
LTY5LDEwICsxMDQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUo
SgogICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+
Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoZXhlYywgdm0sIHByb3BlcnR5TmFtZSkpIHsKLSAgICAg
ICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUlu
dGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIEFTU0VS
VCghdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRT
dG9yZVRvKHZtLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXRE
aXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xv
dCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC05NiwxMiArOTYsMTMgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6YWRkT3duSW50
ZXJuYQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm9t
aXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7
CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOwogICAgIGlmIChu
ZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3Qt
PnByb21pc2VTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MTE0LDcgKzExNSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMK
IAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb21pc2UoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiUHJvbWlzZSIpKTsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5u
b3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm9taXNlIikpOwog
fQogCiBDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw5ICsxNDMs
MTIgQEAgYm9vbCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpuZXh0KEV4ZWNTdAogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3BlcnR5TmFtZUl0ZXJhdG9yRnVuY05leHQoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
aXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqPihleGVjLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFBy
b3BlcnR5TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBv
YmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFByb3BlcnR5TmFtZUl0ZXJh
dG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBvYmplY3QiKSkpOwogCiAg
ICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0KGV4ZWMsIHJlc3VsdCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zODAsMTEgKzM4MCwxNCBA
QCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVCiAKIHZvaWQgSlNSb3Bl
U3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBjbGVhckZpYmVycygpOwogICAgIEFTU0VSVChpc1JvcGUoKSk7CiAgICAgQVNTRVJU
KG1fdmFsdWUuaXNOdWxsKCkpOwogICAgIGlmIChleGVjKQotICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiB9CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTcxLDE3ICs3MSwxOSBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGJ1aWxkKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgaWYgKCFtX29rYXkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIGlm
IChtX2lzOEJpdCkgewogICAgICAgICAgICAgYnVmZmVyOC5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICAgICAgaWYgKCFidWZmZXI4LmRhdGEoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlcjE2
LnNocmlua1RvRml0KCk7CiAgICAgICAgIGlmICghYnVmZmVyMTYuZGF0YSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikpOwogICAgIH0KIApAQCAtMTI3LDkg
KzEyOSwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFsU3RyaW5nKEV4CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KIGlubGlu
ZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmdUeXBlJiBzdHJpbmcsIGNvbnN0IFN0cmluZ1R5cGVzJi4uLiBzdHJpbmdzKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFN0cmluZyByZXN1bHQgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nLCBz
dHJpbmdzLi4uKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZ0pvaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmdKb2luZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
MSw2ICs4MSw5IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGpvaW5TdHJpbmdzKGNvbnN0IFYKIAog
aW5saW5lIHVuc2lnbmVkIEpTU3RyaW5nSm9pbmVyOjpqb2luZWRMZW5ndGgoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mU3RyaW5n
cyA9IG1fc3RyaW5ncy5zaXplKCk7CiAgICAgaWYgKCFudW1iZXJPZlN0cmluZ3MpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtOTEsNyArOTQsNyBAQCBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdKb2lu
ZXI6OmpvaW5lZExlCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAgICAgaWYgKHRvdGFsTGVuZ3Ro
LnNhZmVHZXQocmVzdWx0KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93KSB7Ci0gICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtOTksNiArMTAyLDkgQEAgaW5saW5lIHVuc2lnbmVkIEpTU3RyaW5nSm9p
bmVyOjpqb2luZWRMZQogCiBKU1ZhbHVlIEpTU3RyaW5nSm9pbmVyOjpqb2luKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlQobV9zdHJpbmdzLnNpemUoKSA8PSBt
X3N0cmluZ3MuY2FwYWNpdHkoKSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBqb2luZWRMZW5n
dGgoc3RhdGUpOwpAQCAtMTE1LDcgKzEyMSw3IEBAIEpTVmFsdWUgSlNTdHJpbmdKb2luZXI6Ompv
aW4oRXhlY1N0YXRlJiAKICAgICAgICAgcmVzdWx0ID0gam9pblN0cmluZ3M8VUNoYXI+KG1fc3Ry
aW5ncywgbV9zZXBhcmF0b3IsIGxlbmd0aCk7CiAKICAgICBpZiAocmVzdWx0LmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICByZXR1cm4g
anNTdHJpbmcoJnN0YXRlLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjAsMTYgKzYwLDIwIEBAIGlubGluZSBKU1N0cmluZ0pvaW5lcjo6SlNT
dHJpbmdKb2luZXIoRXgKICAgICA6IG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKICAgICAsIG1faXNB
bGw4Qml0KG1fc2VwYXJhdG9yLmlzOEJpdCgpKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJ
S0VMWSghbV9zdHJpbmdzLnRyeVJlc2VydmVDYXBhY2l0eShzdHJpbmdDb3VudCkpKQotICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogfQogCiBpbmxpbmUgSlNTdHJpbmdKb2luZXI6OkpTU3Ry
aW5nSm9pbmVyKEV4ZWNTdGF0ZSYgc3RhdGUsIExDaGFyIHNlcGFyYXRvciwgdW5zaWduZWQgc3Ry
aW5nQ291bnQpCiAgICAgOiBtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRvcihzZXBhcmF0b3IpCiAg
ICAgLCBtX3NlcGFyYXRvciB7ICZtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRvciwgMSB9CiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5UmVzZXJ2ZUNhcGFjaXR5
KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOwor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKFN0cmluZ1ZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyYmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNTY29w
ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlN5bWJvbFRh
YmxlLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTY2LDYgKzE2Nyw3IEBAIHRlbXBs
YXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBzeW1ib2xUYWJsZVAKIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0KFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBudWxscHRyOwogICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKQEAgLTE4Miw3ICsxODQsNyBAQCBpbmxp
bmUgYm9vbCBzeW1ib2xUYWJsZVB1dChTeW1ib2xUYWJsZU9iCiAgICAgICAgIEFTU0VSVCghZmFz
dEVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRPbmx5KCkgJiYg
IWlnbm9yZVJlYWRPbmx5RXJyb3JzKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CiAgICAgICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0yMDAsOSArMjAyLDkgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQ
dXQoU3ltYm9sVGFibGVPYgogICAgIC8vIHRoZSByaWdodCBmb3IgYmFycmllcnMgdG8gYmUgYWJs
ZSB0byB0cmlnZ2VyIEdDLiBBbmQgSSBkb24ndCB3YW50IHRvIGhvbGQgVk0KICAgICAvLyBsb2Nr
cyB3aGlsZSBHQydpbmcuCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0TW9kZSA9PSBTeW1ib2xUYWJs
ZVB1dE1vZGU6OkludmFsaWRhdGUpCi0gICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdh
dGNocG9pbnRTZXQoZXhlYy0+dm0oKSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcs
IHNldCk7CisgICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQodm0s
IG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOwogICAgIGVsc2UKLSAgICAg
ICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoZXhlYy0+dm0oKSwgb2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CisgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91
Y2hXYXRjaHBvaW50U2V0KHZtLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywgc2V0
KTsKICAgICBwdXRSZXN1bHQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY2LDcgKzY2LDkgQEAgU3RydWN0dXJlKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3I6OgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBl
ZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQg
ZGlyZWN0bHkiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiJVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVk
IGRpcmVjdGx5IikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNiArMzksMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVm
aW5lIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihmdW5jdGlvbk5h
bWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgc3dpdGNoICh0aGlzVmFs
dWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1wZWRBcnJheT4o
ZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1wZWRBcnJheT4odm0sIGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50MzI6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQzMkFy
cmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQzMkFycmF5Pih2bSwgZXhlYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBU
eXBlVWludDMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50MzJBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MzJBcnJh
eT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgY2FzZSBUeXBlRmxvYXQ2NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8
SlNGbG9hdDY0QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQzMjogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+KGV4ZWMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBm
dW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50ODogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJyYXk+KGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDg6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50
OEFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OEFycmF5Pih2bSwgZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2Fz
ZSBUeXBlSW50MTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNJbnQxNkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQxNkFy
cmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgY2FzZSBUeXBlVWludDE2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50MTZBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBOb3RUeXBlZEFycmF5OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXciKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03MiwxNCArNzIsMTYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5VgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIWFyZ3VtZW50LmlzQ2VsbCgpIHx8ICFpc1R5cGVkVmlldyhhcmd1bWVudC5hc0NlbGwo
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyIpKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QXJyYXlCdWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1
dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZp
ZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyIpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09i
amVjdC0+bGVuZ3RoKCkpKTsKIH0KQEAgLTk0LDExMSArOTYsMTM5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBD
QUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0g
ICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJh
eSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jQ29weVdpdGhpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdh
cyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJ
bmNsdWRlcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3
IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZ
UEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0xhc3RJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19U
WVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFS
UkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2lu
KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVu
Y0J1ZmZlcik7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19U
WVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxk
IGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FM
TF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1Jl
dmVyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVj
dCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5v
dCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZV
TkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSArNTAsMTYgQEAgdm9pZCBNYXBD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBl
RXJyb3IoZXhlYywgIk1hcCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJNYXAiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNh
bGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpAQCAtNzEsMTEgKzc2LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAg
ICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5j
dGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywg
aXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkg
ewogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcERhdGFJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw5IEBAIGlubGluZSB2b2lkIE1hcERhdGFJbXBsPEVudHJ5
LCBKU0l0ZXJhdG8KIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5LCB0eXBlbmFtZSBKU0l0ZXJhdG9y
PgogaW5saW5lIENoZWNrZWRCb29sZWFuIE1hcERhdGFJbXBsPEVudHJ5LCBKU0l0ZXJhdG9yPjo6
ZW5zdXJlU3BhY2VGb3JBcHBlbmQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKG1fY2FwYWNpdHkgPiBtX3NpemUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCkBAIC0yMTEsNyArMjE0LDcgQEAgaW5saW5lIENoZWNrZWRCb29sZWFuIE1hcERh
dGFJbXBsPEVudHJ5LAogICAgIHZvaWQqIG5ld1N0b3JhZ2UgPSBudWxscHRyOwogICAgIERlZmVy
R0MgZGVmZXIoKmV4ZWMtPmhlYXAoKSk7CiAgICAgaWYgKCFleGVjLT5oZWFwKCktPnRyeUFsbG9j
YXRlU3RvcmFnZShvd25lciwgcmVxdWlyZWRTaXplICogc2l6ZW9mKEVudHJ5KSwgJm5ld1N0b3Jh
Z2UpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0PEVudHJ5Kj4obmV3U3Rv
cmFnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTAsOSArNTAsMTIgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpbwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE1hcEl0ZXJhdG9yUHJvdG90eXBl
RnVuY05leHQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1l
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU01hcEl0ZXJhdG9yKj4o
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNhbGwgTWFwSXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLU1hcEl0ZXJhdG9yIG9i
amVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBNYXBJdGVyYXRvci5u
ZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0IikpKTsKIAogICAgIEpTVmFsdWUgcmVz
dWx0OwogICAgIGlmIChpdGVyYXRvci0+bmV4dChjYWxsRnJhbWUsIHJlc3VsdCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwxNiBAQCB2b2lkIE1hcFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFwKiBn
ZXRNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworICAgIFZN
JiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRo
cm93Vk1FcnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0
aGlzVmFsdWUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0
ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIEpTTWFwKiBtYXAgPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoIW1hcCkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmpl
Y3QiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QiKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbWFwOwpAQCAtMTU1LDI2ICsxNTgs
MzUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1ZhbHVlcyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBqc0R5bmFt
aWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2Jq
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVlIGl0ZXJhdG9yIGZvciBh
IG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU01hcEl0
ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVl
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVlIGl0ZXJh
dG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNFbnRyaWVzKENh
bGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU01hcCogdGhp
c09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBNYXAgZW50cnkg
aXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2Jq
LCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUg
YSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmos
IEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByb3RvRnVuY0tleXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2Fs
bEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTTWFwKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU01hcCo+KGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNy
ZWF0ZSBhIE1hcCBrZXkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZt
KCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVj
dHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgY3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBmb3IgYSBub24tTWFwIG9iamVjdC4iKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxs
RnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
dGhpc09iaiwgSXRlcmF0ZUtleSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByaXZhdGVGdW5jSXNNYXAoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVM
b2FkZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwOSw2ICsxMDksOCBAQCBNb2R1bGVM
b2FkZXJQcm90b3R5cGU6Ok1vZHVsZUxvYWRlclByb3RvCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhlYy0+
YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xMjcsNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZQogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJDb21tZW50TW9k
ZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAg
ICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMs
IHNjb3BlLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
c291cmNlQ29kZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxs
U2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3MiwxMSBAQCBzdGF0
aWMgYm9vbCBjYWxsZXJJc1N0cmljdChFeGVjU3RhdGUqIGV4CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKGNhbGxlcklzU3RyaWN0KGV4ZWMpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
U2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxNSArMzY0LDE4IEBAIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCAKIC8vIHRvIGFyZ3VtZW50LXBsdXMtb25l
IHNpZ25pZmljYW50IGZpZ3VyZXMpLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGRvdWJsZSB4OwogICAgIGlmICghdG9UaGlzTnVtYmVyKGV4ZWMtPnRoaXNWYWx1ZSgp
LCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIC8vIEdldCB0aGUgYXJn
dW1lbnQuIAogICAgIGludCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudDsKICAgICBib29sIGlzVW5k
ZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwg
ZGVjaW1hbFBsYWNlc0luRXhwb25lbnQsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9F
eHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVu
IDAgYW5kIDIwIikpKTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIEluZmluaXR5LgogICAgIGlm
ICghc3RkOjppc2Zpbml0ZSh4KSkKQEAgLTM5NSwxNSArMzk4LDE4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIG1ldGhvZCB3aWxsIGluc3RlYWQgZmFsbGJh
Y2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVu
dC4gCiAgICAgaW50IGRlY2ltYWxQbGFjZXM7CiAgICAgYm9vbCBpc1VuZGVmaW5lZDsgLy8gVGhp
cyBpcyBpZ25vcmVkOyB1bmRlZmluZWQgdHJlYXRlZCBhcyAwLgogICAgIGlmICghZ2V0SW50ZWdl
ckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlcywgaXNVbmRlZmluZWQp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k
IDIwIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJl
IGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUuNy40LjUuNyBzdGF0ZXMgIklmIHgg
Pj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAvLyBUaGlzIGFsc28gY292
ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRoYXQgTmFOCkBAIC00Mjgs
MTUgKzQzNCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvCiAv
LyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBleHBvbmVudGlhbCByZXByZXNlbnRh
dGlvbi4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVj
aXNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91YmxlIHg7CiAg
ICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVudC4gCiAgICAgaW50IHNp
Z25pZmljYW50RmlndXJlczsKICAgICBib29sIGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50
ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAxLCAyMSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBpc1Vu
ZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBi
ZXR3ZWVuIDEgYW5kIDIxIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkg
YXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAogICAgIC8vIFRvIHByZWNp
c2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3RyaW5nLgogICAg
IGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ4NSwyMiArNDk0LDIzIEBAIHN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgaW50ZWdlclZhbHUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBu
dW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBkb3VibGUgZG91YmxlVmFsdWU7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhp
c1ZhbHVlKCksIGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhleGVjKTsKICAgICBpZiAo
cmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXgg
YXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iikp
KTsKIAogICAgIGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91
YmxlVmFsdWUpOwogICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCiAgICAgICAg
IHJldHVybiBpbnRlZ2VyVmFsdWVUb1N0cmluZyhleGVjLCByYWRpeCwgaW50ZWdlclZhbHVlKTsK
IAotICAgIGlmIChyYWRpeCA9PSAxMCkgewotICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgdm0tPm51bWVyaWNT
dHJpbmdzLmFkZChkb3VibGVWYWx1ZSkpKTsKLSAgICB9CisgICAgaWYgKHJhZGl4ID09IDEwKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKCZ2bSwgdm0ubnVtZXJpY1N0
cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkpOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRvdWJs
ZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKSk7
CkBAIC01MTEsMTkgKzUyMSwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91Ymxl
IHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih4KS50b1N0cmluZyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBkb3VibGUgeDsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVyKHRoaXNWYWx1ZSwgeCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVl
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5n
Rm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBXVEY6Om1ha2VTdHJpbmcoInRoaXNOdW1i
ZXJWYWx1ZSBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIsIGpzQ2FzdDxKU1N0cmluZyo+KGpzVHlw
ZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIHRoaXNWYWx1ZSkpLT52YWx1ZShleGVjKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMyArMjE3LDE2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAob2JqZWN0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwogICAgIGlmICghcHJvdG9WYWx1ZS5pc09iamVjdCgpICYmICFwcm90b1ZhbHVl
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTIzMiw3ICsyMzUsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChl
eGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVl
KTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2Fu
dFNldCA9IHRydWU7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3Rv
dHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIEFT
U0VSVF9VTlVTRUQoZGlkU2V0UHJvdG90eXBlLCB2bS5leGNlcHRpb24oKSB8fCBkaWRTZXRQcm90
b3R5cGUpOwpAQCAtMzQ0LDggKzM0NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG93bkVudW1lcmFiCiBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3QuIikpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0
eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgSlNPYmplY3QqIGRlc2NyaXB0aW9uID0gYXNPYmplY3QoaW4pOwpAQCAt
MzkwLDcgKzM5NCw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUK
ICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0g
Q2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkdldHRlciBtdXN0
IGJlIGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtNDA1LDcgKzQwOSw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFzZXQuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2Fs
bERhdGEoc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVu
Y3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE3LDEyICs0
MjEsMTIgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChkZXNjLnZhbHVlKCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3ZhbHVlJyBw
cmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHku
ICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChkZXNjLndyaXRhYmxlUHJl
c2VudCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRl
ciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxlJyBwcmVzZW50IG9uIHByb3Bl
cnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC00MzAsMTkgKzQzNCwyNSBAQCBib29sIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGll
cyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwotICAgIEpTT2JqZWN0KiBPID0g
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRl
ZmluZWQgb24gT2JqZWN0cy4iKSk7CisgICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoIXRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKSkKKyAgICBhdXRvIHN1Y2Nlc3MgPSB0b1Byb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBleGVjLT5hcmd1bWVudCgyKSwgZGVzY3JpcHRvcik7CisgICAg
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIEFTU0VSVCgo
ZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNj
ZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsK
LSAgICBPLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkoTywgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKE8pOworICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShv
YmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKIH0KIAogc3RhdGljIEpT
VmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3Qs
IEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQpAQCAtNDg1LDggKzQ5NSwxMSBAQCBzdGF0aWMgSlNWYWx1
ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0
aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2Jq
ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIEpTT2JqZWN0KiBwcm9wcyA9IGV4
ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmICghcHJvcHMpCkBAIC00OTYs
MTYgKzUwOSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
T2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9i
amVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIikpOwogICAgIEpT
T2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpCiAgICAgICAgID8gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQogICAgICAgICA6IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdPYmplY3QpOwogICAgIGlm
ICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdG9yIGxpc3QgbXVz
dCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdG9yIGxpc3QgbXVzdCBiZSBh
biBPYmplY3QuIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGll
cyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTI3LDYgKzEyNyw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0LDcgKzEzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBKU1ZhbHVlIGdldCA9IGV4ZWMtPmFyZ3VtZW50KDEp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YShnZXQsIGNhbGxE
YXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBn
ZXR0ZXIgdXNhZ2UiKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpA
QCAtMTQ2LDEzICsxNDksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90bwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwogCiAgICAgYm9vbCBz
aG91bGRUaHJvdyA9IHRydWU7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y0RlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNjAsNyArMTY2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIEpTVmFs
dWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
aWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImludmFsaWQgc2V0
dGVyIHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKTsKIAogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNzIsNyArMTc4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJh
YmxlKHRydWUpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7Ci0gICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMjY5LDYgKzI3NSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50
b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZS5pc1VuZGVm
aW5lZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0cmluZygpIDogdm0uc21h
bGxTdHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7CkBAIC0zMDMsNyArMzExLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgU3RyaW5nIG5ld1N0cmluZyA9IFdURjo6dHJ5TWFrZVN0cmluZygi
W29iamVjdCAiLCBXVEZNb3ZlKHRhZyksICJdIik7CiAgICAgICAgIGlmICghbmV3U3RyaW5nKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgICAg
IGF1dG8gcmVzdWx0ID0ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgbmV3U3RyaW5nKTsKICAgICAg
ICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVj
LCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LTIwMDksIDIwMTMtMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNiAr
NDAsNyBAQCBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lCiBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogczEsIEpT
U3RyaW5nKiBzMikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3QgbGVuZ3RoMSA9IHMxLT5s
ZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aDEpCkBAIC00OCw3ICs0OSw3IEBAIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUKICAgICBpZiAoIWxlbmd0aDIpCiAgICAgICAg
IHJldHVybiBzMTsKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0
aDIpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVy
biBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgczEsIHMyKTsKIH0KQEAgLTU2LDEzICs1NywxNCBA
QCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHUxLCBjb25z
dCBTdHJpbmcmIHUyLCBjb25zdCBTdHJpbmcmIHUzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKICAgICBp
bnQzMl90IGxlbmd0aDEgPSB1MS5sZW5ndGgoKTsKICAgICBpbnQzMl90IGxlbmd0aDIgPSB1Mi5s
ZW5ndGgoKTsKICAgICBpbnQzMl90IGxlbmd0aDMgPSB1My5sZW5ndGgoKTsKICAgICAKICAgICBp
ZiAobGVuZ3RoMSA8IDAgfHwgbGVuZ3RoMiA8IDAgfHwgbGVuZ3RoMyA8IDApCi0gICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIGlmICghbGVuZ3RoMSkKICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5nKHZt
LCB1MykpOwpAQCAtNzIsNyArNzQsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmco
RXhlY1N0YXRlCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBqc1N0cmluZyh2bSwgdTEp
LCBqc1N0cmluZyh2bSwgdTIpKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4obGVu
Z3RoMSwgbGVuZ3RoMiwgbGVuZ3RoMykpCi0gICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKGV4ZWMtPnZtKCksIGpz
U3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5nKHZtLCB1MykpOwogfQpA
QCAtODAsMTIgKzgyLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3Rh
dGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEV4ZWNT
dGF0ZSogZXhlYywgUmVnaXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNvdW50KQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CiAgICAgSlNSb3BlU3RyaW5nOjpSb3BlQnVpbGRlciByb3BlQnVpbGRlcigqdm0pOwog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgSlNW
YWx1ZSB2ID0gc3RyaW5nc1stc3RhdGljX2Nhc3Q8aW50PihpKV0uanNWYWx1ZSgpOwogICAgICAg
ICBpZiAoIXJvcGVCdWlsZGVyLmFwcGVuZCh2LnRvU3RyaW5nKGV4ZWMpKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9CiAKICAgICByZXR1cm4g
cm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpAQCAtOTQsMTMgKzk3LDE0IEBAIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3QKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmlu
Z0Zyb21Bcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSgqdm0pOwogICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIgcm9wZUJ1aWxkZXIoKnZt
KTsKICAgICByb3BlQnVpbGRlci5hcHBlbmQodGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkg
ewogICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudChpKTsKICAgICAgICAgaWYgKCFy
b3BlQnVpbGRlci5hcHBlbmQodi50b1N0cmluZyhleGVjKSkpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJvcGVCdWls
ZGVyLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsOCArNTYsOSBAQCBQcm94eUNvbnN0cnVjdG9yOjpQcm94eUNvbnN0cnVjdG9yKFZNJiB2
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VSZXZvY2FibGVQcm94
eShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZXhlYy0+dm0oKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkucmV2
b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJnZXQg
YW5kIHRoZSBoYW5kbGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVk
IHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiKSk7CiAKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKQEAgLTgxLDcg
KzgyLDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9y
VGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVj
dGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkucmV2b2NhYmxlIGNhbm5vdCBiZSBjb25zdHJ1
Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIikpOwogfQogCiB2b2lkIFByb3h5Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKQEAgLTk0LDggKzk2LDkgQEAgdm9pZCBQcm94eUNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RQcm94eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgaWYgKGV4ZWMtPm5ld1Rh
cmdldCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5v
dCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgb2YgUHJveHkgY29uc3RydWN0IHNob3Vs
ZCBub3QgYmUgdW5kZWZpbmVkIikpOwogCiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwogICAgIEpT
VmFsdWUgdGFyZ2V0ID0gYXJncy5hdCgwKTsKQEAgLTExMSw3ICsxMTQsOCBAQCBDb25zdHJ1Y3RU
eXBlIFByb3h5Q29uc3RydWN0b3I6OmdldENvbnN0CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGV4ZWMsICJQcm94eSIpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm94
eSIpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
QEAgLTc5LDE5ICs4MCwyMCBAQCBTdHJ1Y3R1cmUqIFByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JU
YXJnCiAKIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2Jq
ZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoUHJveHlPYmplY3QqIHRhcmdldEFzUHJveHkgPSBqc0R5bmFt
aWNDYXN0PFByb3h5T2JqZWN0Kj4odGFyZ2V0KSkgewogICAgICAgICBpZiAodGFyZ2V0QXNQcm94
eS0+aGFuZGxlcigpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2Jq
ZWN0LCB0aGUgb3RoZXIgUHJveHkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gcmV2b2tlZCIpKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIklmIGEg
UHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIgUHJveHkg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gcmV2b2tlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoIWhhbmRsZXIuaXNPYmplY3QoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAnaGFuZGxlcicgc2hv
dWxkIGJlIGFuIE9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4gT2JqZWN0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTYsOCArMTE4LDkgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHNfcHJveHlBbHJlYWR5UmV2b2tlZAogc3RhdGljIEpTVmFsdWUgcGVyZm9ybVBy
b3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5T2JqZWN0LCBKU1ZhbHVl
IHJlY2VpdmVyLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAt
MTM1LDcgKzEzOCw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUK
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHlPYmplY3QtPmhhbmRsZXIoKTsKICAg
ICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKQEAgLTE1OSwxMCArMTYyLDEwIEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94
eUdldChFeGVjU3RhdGUKICAgICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRv
ci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgIWRl
c2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywg
ZGVzY3JpcHRvci52YWx1ZSgpLCB0cmFwUmVzdWx0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldCcg
cmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IHNo
b3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvcGVydHkiKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFu
ZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0
YXJnZXQncyBwcm9wZXJ0eSIpKTsKICAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmlzQWNj
ZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgZGVzY3Jp
cHRvci5nZXR0ZXIoKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXRyYXBSZXN1
bHQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9u
LWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBi
ZSB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2Yg
YSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBnZXR0ZXIgc2hv
dWxkIGJlIHVuZGVmaW5lZCIpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg1LDggKzE4OCw5
IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXQoRXhlY1N0YXRlKiAKIGJvb2wgUHJveHlP
YmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewot
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKQEAgLTIwMCw3ICsyMDQs
NyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVl
LmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJy
b3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIyMSw3ICsy
MjUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1VuZGVmaW5lZCgpICYmICF0
cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBjYWxsIHNo
b3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpKTsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJyZXN1bHQgb2YgJ2dldE93blBy
b3BlcnR5RGVzY3JpcHRvcicgY2FsbCBzaG91bGQgZWl0aGVyIGJlIGFuIE9iamVjdCBvciB1bmRl
ZmluZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIzNCw3ICsyMzgs
NyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAgIGlm
ICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoIXRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFi
bGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IldoZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBpcyB1bmRlZmlu
ZWQgdGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJsZSIpKTsKKyAgICAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2hlbiB0aGUgcmVzdWx0IG9m
ICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3Qg
YmUgY29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXNuJ3Qgd29yayBpZiAndGFyZ2V0JyBpcyBhbm90
aGVyIFByb3h5LiBXZSBkb24ndCBoYXZlIGlzRXh0ZW5zaWJsZSBpbXBsZW1lbnRlZCBpbiBhIHdh
eSB0aGF0IGZpdHMgdy8gUHJveHlzLgpAQCAtMjQ2LDcgKzI1MCw3IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb21lIHVw
IHdpdGggYSB0ZXN0IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUgaG93IHRvIGJlY2F1c2UK
ICAgICAgICAgICAgIC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBhbGwgZmllbGRzIFtbQ29u
ZmlndXJhYmxlXV0gZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mzc2Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyByZXR1cm5z
IHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxkIGJlIGV4dGVuc2libGUi
KSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJucyB1bmRlZmluZWQsIHRo
ZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxlIikpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTI2NCwxMyArMjY4LDEzIEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICBib29sIHZhbGlkID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5h
bWUsIGlzRXh0ZW5zaWJsZSwKICAgICAgICAgdHJhcFJlc3VsdEFzRGVzY3JpcHRvciwgaXNUYXJn
ZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkLCB0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3IsIHRo
cm93RXhjZXB0aW9uKTsKICAgICBpZiAoIXZhbGlkKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiKSk7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVzdWx0
IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgZmFpbHMgdGhlIElzQ29tcGF0aWJsZVBy
b3BlcnR5RGVzY3JpcHRvciB0ZXN0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCF0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAg
ICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkIHx8IHRhcmdldFByb3Bl
cnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24n
dCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBv
d24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9l
c24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJs
ZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTEsOCArMjk1LDkgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybUludGVybmFsTWV0aG9kRwogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQo
KTsKQEAgLTMwNyw3ICszMTIsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVy
dHkoRXhlCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAg
ICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94
eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQ
cm9wZXJ0eShFeGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGlzUHJv
cGVydHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmNv
bmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZp
Z3VyYWJsZSBwcm9wZXJ0aWVzIikpOworICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUn
IGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUg
PSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBp
ZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIGEgbm9u
LWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJvcGVydHki
KSk7CisgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIGEgbm9uLWV4dGVuc2li
bGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJvcGVydHkiKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0z
NTYsOCArMzYxLDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUK
IAogYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewot
ICAgIGlmIChVTkxJS0VMWSghZXhlYy0+dm0oKS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0g
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGlm
IChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgeworICAgICAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwpAQCAtMzk0LDggKzQwMSw5IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmMKIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlv
biBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZt
LmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDA0LDcgKzQxMiw3IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiAKIAogICAgIEpTVmFsdWUgaGFuZGxl
clZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFs
cmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2Up
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM2LDExICs0NDQsMTEgQEAg
Ym9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIAogICAgIGlmICh0YXJnZXQt
PmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
KSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAhZGVzY3Jp
cHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHB1dFZhbHVlKSkg
ewotICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQ
cm94eSBoYW5kbGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFi
bGUgcHJvcGVydHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ugb3IgYmUg
dGhlIHNhbWUgdmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5k
bGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVy
dHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ugb3IgYmUgdGhlIHNhbWUg
dmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNj
cmlwdG9yLnNldHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9u
IGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNo
b3VsZCByZXR1cm4gZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBu
b24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxk
IHJldHVybiBmYWxzZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ4NiwxNCArNDk0LDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Q
cm94eUNhbGwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VM
WSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQog
ICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmNhbGxl
ZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CiAgICAg
aWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3Qq
IGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwpAQCAtNTM1LDE0ICs1NDQsMTUgQEAgQ2FsbFR5cGUgUHJveHlPYmplY3Q6Omdl
dENhbGxEYXRhKEpTQ2VsbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVy
Zm9ybVByb3h5Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogICAgIH0KICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihl
eGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94eS0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAg
IEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTU2OSw3ICs1NzksNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmICgh
cmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1l
dGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVy
J3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC01OTAsOCArNjAwLDkgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbgogYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybURlbGV0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
ZmF1bHREZWxldGVGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdERlbGV0ZSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NjAwLDcgKzYxMSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXQK
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmICho
YW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFk
eVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtNjMxLDcgKzY0Miw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0
YXQKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBpZiAodGFyZ2V0LT5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkg
ewogICAgICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2Rl
bGV0ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSB0YXJnZXQn
cyBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2RlbGV0
ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSB0YXJnZXQncyBw
cm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgfQpAQCAtNjY2LDE0ICs2NzcsMTUgQEAgYm9vbCBQcm94eU9iamVj
dDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVByZXZl
bnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5M
SUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFu
ZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94
eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzAyLDcgKzcxNCw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW8KICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
ZiAodGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAncHJldmVudEV4dGVuc2lvbnMnIHRyYXAgcmV0dXJu
ZWQgdHJ1ZSBldmVuIHRob3VnaCBpdHMgdGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBo
YXZlIHJldHVybmVkIGZhbHNlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdwcmV2ZW50RXh0ZW5zaW9ucycgdHJhcCBy
ZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hv
dWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03MTgsMTQgKzczMCwxNSBAQCBib29sIFByb3h5T2JqZWN0Ojpw
cmV2ZW50RXh0ZW5zaW9ucyhKU09iCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNp
YmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZt
LmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVl
ID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlS
ZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzU3LDExICs3NzAsMTEgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZShFeAogICAgIGlmICh0cmFwUmVzdWx0QXNC
b29sICE9IGlzVGFyZ2V0RXh0ZW5zaWJsZSkgewogICAgICAgICBpZiAoaXNUYXJnZXRFeHRlbnNp
YmxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXRyYXBSZXN1bHRBc0Jvb2wpOwotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdp
c0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGlzIGV4dGVu
c2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7CisgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdp
c0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGlzIGV4dGVu
c2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQoIWlzVGFyZ2V0RXh0ZW5zaWJsZSk7CiAgICAgICAgICAgICBB
U1NFUlQodHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1
cm5lZCB0cnVlIHdoZW4gdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhh
dmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAg
cmV0dXJuZWQgdHJ1ZSB3aGVuIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUuIEl0IHNob3Vs
ZCBoYXZlIHJldHVybmVkIGZhbHNlIikpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtNzc2
LDggKzc4OSw5IEBAIGJvb2wgUHJveHlPYmplY3Q6OmlzRXh0ZW5zaWJsZShKU09iamVjdCoKIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzkxLDcgKzgwNSw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKIAogICAgIEpTVmFsdWUg
aGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNO
dWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtODM2LDExICs4NTAs
MTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcgogCiAgICAgaWYg
KCFpc1RhcmdldERlc2NyaXB0b3JEZWZpbmVkKSB7CiAgICAgICAgIGlmICghdGFyZ2V0SXNFeHRl
bnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3Vn
aCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVk
IHVuZGVmaW5lZCBhbmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKKyAgICAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAn
ZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3VnaCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCBh
bmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFsc2Up
IHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94
eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi1jb25maWd1
cmFibGUgZmllbGQgZXZlbiB0aG91Z2ggZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQ
cm94eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3Bl
cnR5JyB0cmFwIHJldHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVu
IHRob3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJl
dHVybmVkIHVuZGVmaW5lZCIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCkBAIC04NTMsMTEgKzg2NywxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5l
T3duUHJvcGVyCiAgICAgYm9vbCB0aHJvd0V4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgaXND
b21wYXRpYmxlRGVzY3JpcHRvciA9IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0YXJnZXRJc0V4dGVuc2libGUsIGRlc2NyaXB0
b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0aW9uKTsKICAgICBpZiAo
IWlzQ29tcGF0aWJsZURlc2NyaXB0b3IpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVm
aW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUg
dHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgZGlk
IG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3
aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFsc2UgJiYgdGFyZ2V0RGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZp
bmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9uIGl0cyB0YXJnZXQgZXZlbiB0aG91Z2gg
dGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAgc2FpZCBpdCBtdXN0IGRvIHNvIikpOwor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5
J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgbm9uLWNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRoZSBpbnB1dCBkZXNjcmlwdG9y
IHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKQEAgLTg3MywxMyArODg3LDE0IEBAIGJvb2wgUHJveHlPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2IKIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHRyYXBSZXN1bHQs
IEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYg
KFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgSlNWYWx1ZSBoYW5kbGVy
VmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxy
ZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NjksNyArOTg0LDcgQEAgdm9pZCBQcm94
eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9yIChVbmlxdWVkU3RyaW5n
SW1wbCogaW1wbCA6IHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMpIHsKICAgICAgICAgaWYgKHJl
bW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpID09IElzTm90Q29udGFp
bmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZVN0cmluZygi
UHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5
ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhl
ICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29u
ZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0
aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtOTc5LDEzICs5OTQsMTMgQEAgdm9pZCBQcm94eU9iamVj
dDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9yIChVbmlxdWVkU3RyaW5nSW1wbCog
aW1wbCA6IHRhcmdldENvbmZpZ3VyYWJsZUtleXMpIHsKICAgICAgICAgaWYgKHJlbW92ZUlmQ29u
dGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpID09IElzTm90Q29udGFpbmVkSW4pIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiUHJveHkgb2Jq
ZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSAn
IiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJlc3VsdCBmcm9tIHRoZSAn
b3duS2V5cycgdHJhcCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIG1ha2VTdHJpbmcoIlByb3h5IG9iamVjdCdzIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIGhh
cyBjb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBsKSwgIicgdGhhdCB3YXMgbm90
IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAiKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodW5jaGVja2VkUmVzdWx0S2V5cy5z
aXplKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIHJldHVybmVkIGEga2V5IHRoYXQgd2FzIG5v
dCBwcmVzZW50IGluIGl0cyBub24tZXh0ZW5zaWJsZSB0YXJnZXQiKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdv
d25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRz
IG5vbi1leHRlbnNpYmxlIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAg
LTEwMjIsMTQgKzEwMzcsMTUgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlw
ZShFeAogICAgIEFTU0VSVChwcm90b3R5cGUuaXNPYmplY3QoKSB8fCBwcm90b3R5cGUuaXNOdWxs
KCkpOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VT
b2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIo
KTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2Fn
ZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
c19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTEwNTcsNyArMTA3Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1TZXRQcm90b3R5cGUoRXgKICAgICAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKICAg
ICAgICAgaWYgKHNob3VsZFRocm93SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQg
ZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRo
ZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiKSk7CisgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5
cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90
b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwNzEsNyArMTA4Nyw3IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgKICAgICBpZiAodm0uZXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBwcm90
b3R5cGUsIHRhcmdldFByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1cm5lZCB0cnVl
IHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBwcm90b3R5cGUg
dmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2YWx1ZS4gSXQg
c2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyB0cmFwIHJl
dHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlIGFuZCB0aGUgbmV3
IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgcHJvdG90eXBl
IHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTA4NiwxNCArMTEwMiwxNSBAQCBib29sIFByb3h5T2JqZWN0
OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqCiBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGhh
bmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVs
bCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJv
eHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMTE1LDcgKzEx
MzIsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNPYmplY3QoKSAmJiAh
dHJhcFJlc3VsdC5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXRQcm90b3R5cGVPZicgdHJhcCBzaG91bGQg
ZWl0aGVyIHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldFByb3Rv
dHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIikpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTEyOSw3ICsxMTQ2LDcgQEAg
SlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQogICAgIGlmICh2bS5leGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBpZiAoIXNhbWVWYWx1ZShl
eGVjLCB0YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdnZXRQcm90b3R5cGVPZicgdHJhcCBm
b3IgYSBub24tZXh0ZW5zaWJsZSB0YXJnZXQgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBh
cyB0aGUgdGFyZ2V0J3MgcHJvdG90eXBlIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZv
ciBhIG5vbi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFz
IHRoZSB0YXJnZXQncyBwcm90b3R5cGUiKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDI2ICs5NSwyOSBA
QCB2b2lkIFJlZmxlY3RPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2CiAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmNvbnN0cnVjdAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlOwogICAgIGlmICghdGFyZ2V0LmlzQ29u
c3RydWN0b3IoY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOwogCiAgICAgSlNWYWx1ZSBuZXdUYXJnZXQg
PSB0YXJnZXQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAg
IG5ld1RhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDIpOwogICAgICAgICBpZiAoIW5ld1RhcmdldC5p
c0NvbnN0cnVjdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMg
dGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCIpKSk7CisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1
bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiKSkpOwogICAgIH0KIAogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBKU09iamVjdCogYXJndW1lbnRzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAo
IWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRo
ZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGFuIG9iamVjdCIp
KSk7CiAKICAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShleGVjLCBhcmd1bWVudHNPYmplY3Qs
IFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCBBU0NJSUxpdGVyYWwoIlRoaXMgZXJyb3IgbXVzdCBu
b3QgYmUgcmFpc2VkIiksIFsmXSAoSlNWYWx1ZSB2YWx1ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wg
ewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKQEAgLTEyOSw5ICsxMzIsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVwcm9wZXJ0eQogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5k
ZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Iikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xNDUsMjUgKzE1MSwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplCiAgICAgLy8gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSBzaG91bGQgbm90IHRocm93
IGFuIGVycm9yIHdoZW4gdGhlIGRlZmluZU93blByb3BlcnR5IG9wZXJhdGlvbiBmYWlscy4KICAg
ICBib29sIHNob3VsZFRocm93ID0gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRhcmdldE9iamVjdCA9
IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHko
dGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSk7CiB9CiAKIC8vIEZJWE1FOiBS
ZWZsZWN0LmVudW1lcmF0ZSBpcyByZW1vdmVkIGluIEVDTUEgMjAxNiBkcmFmdC4KIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZWZsZWN0LmVu
dW1lcmF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RW51bWVy
YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0
ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXNPYmplY3Qo
dGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0LmdldAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVu
dCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUg
PSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKQEAgLTE4MCw5ICsxOTIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNz
ZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAogICAg
IGF1dG8ga2V5ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xOTQsMTggKzIwOSwyNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldHByb3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwog
ICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldFByb3RvdHlw
ZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RD
b25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKGV4ZWMsIGFzT2JqZWN0KHRhcmdldCkpKTsKIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5pc2V4dGVuc2li
bGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJs
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAogICAgIGJvb2wgaXNFeHRl
bnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIxNiwyMCArMjM3LDI2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTI2Mi8jc2VjLXJlZmxlY3Qub3dua2V5cwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0Lmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5vd25LZXlz
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIGpzQ2FzdDxKU09iamVjdCo+
KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lvbnMKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QucHJldmVu
dEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodGFyZ2V0KTsKLSAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgYm9vbCBy
ZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0
LCBleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihyZXN1bHQpKTsKQEAgLTIzOCw5ICsyNjUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYy
LyNzZWMtcmVmbGVjdC5zZXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRh
cmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0g
YXNPYmplY3QodGFyZ2V0KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1l
bnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKQEAgLTI1NCwyNSArMjg0LDI3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICAvLyBEbyBub3QgcmFpc2UgYW55
IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9kZS4KICAgICBib29sIHNo
b3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVj
ZWl2ZXIsIHNob3VsZFRocm93SWZDYW50U2V0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGFy
Z2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMt
PmFyZ3VtZW50KDIpLCBzbG90KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9m
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDEp
OwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUg
ZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNl
dFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9i
amVjdCBvciBudWxsIikpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJn
ZXQpOwogCiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChleGVjLCBvYmpl
Y3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0
ID0gZmFsc2U7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlw
ZSh2bSwgZXhlYywgcHJvdG8sIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBpZiAodm0uZXhj
ZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMCw2ICsyMTAsOSBAQCBpbmxpbmUgU3RydWN0dXJlKiBnZXRSZWdFeHBTdHJ1Y3R1cmUoRXhl
CiAKIGlubGluZSBSZWdFeHBGbGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBm
bGFncykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChmbGFncy5pc1VuZGVmaW5lZCgpKQogICAg
ICAgICByZXR1cm4gTm9GbGFnczsKICAgICBKU1N0cmluZyogZmxhZ3NTdHJpbmcgPSBmbGFncy50
b1N0cmluZyhleGVjKTsKQEAgLTIyMiwxMyArMjI1LDE1IEBAIGlubGluZSBSZWdFeHBGbGFncyB0
b0ZsYWdzKEV4ZWNTdGF0ZSogZXgKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBJbnZhbGlkRmxhZ3M7CiAgICAgaWYgKHJlc3VsdCA9PSBJbnZhbGlkRmxhZ3Mp
Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZs
YWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0
YXRpYyBKU09iamVjdCogcmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQsIEpTVmFsdWUgcGF0dGVybkFyZywg
SlNWYWx1ZSBmbGFnc0FyZykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBwYXR0ZXJuID0g
cGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMzksNyArMjQ0LDcgQEAgc3RhdGljIEpTT2Jq
ZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKgogCiAgICAgUmVnRXhwKiByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MpOwogICAgIGlmICghcmVnRXhwLT5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhF
cnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5l
cnJvck1lc3NhZ2UoKSkpOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRSZWdFeHBT
dHJ1Y3R1cmUoZXhlYywgZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQpOwogICAgIGlmICh2bS5leGNl
cHRpb24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw4IEBA
IE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhlY1N0YXQKIHRlbXBsYXRlPHR5cGVu
YW1lIEZpeEVuZEZ1bmM+CiBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBTdHJpbmcmIHMsIFJlZ0V4cENvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciwgUmVnRXhwKiByZWdFeHAsIGNvbnN0IEZpeEVuZEZ1bmMmIGZpeEVu
ZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBN
YXRjaFJlc3VsdCByZXN1bHQgPSBjb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAs
IHN0cmluZywgcywgMCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKQEAgLTE5Nyw3ICsxOTksNyBAQCBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZNJiB2bSwgRXhl
Y1N0YXRlCiAgICAgICAgICAgICBNYXRjaFJlc3VsdCBzYXZlZFJlc3VsdCA9IHJlc3VsdDsKICAg
ICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXktPmxlbmd0aCgpICsgbWF0
Y2hDb3VudCA+PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAgICAgCkBAIC00MywyMiArNDQsMjggQEAgcHVibGljOgogCiAgICAg
Ym9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbGFzdEluZGV4KQogICAg
IHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJ
c1dyaXRhYmxlKSkgewogICAgICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFy
cmllcihqc051bWJlcihsYXN0SW5kZXgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIGJvb2wgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBsYXN0SW5kZXgsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAg
ICAgICBtX2xhc3RJbmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFzdEluZGV4KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZFRocm93
KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIEpTVmFsdWUgZ2V0TGFzdEluZGV4KCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsOSArOTgsMTIgQEAgdm9pZCBSZWdF
eHBQcm90b3R5cGU6OnZpc2l0Q2hpbGRyZW4oSlNDZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEwOSw5ICsxMTIsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMjAs
OSArMTI2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcq
IHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlm
ICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMTMzLDkgKzE0MiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29t
cGlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IFJlZ0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpA
QCAtMTQzLDcgKzE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG8KICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsK
ICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hl
biBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhlci4i
KSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50
KCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBA
IC0xNTYsMTUgKzE2OCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGlm
IChmbGFncyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQg
ZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1
Y3Rvci4iKSkpOwogICAgICAgICB9Ci0gICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKGV4
ZWMtPnZtKCksIHBhdHRlcm4sIGZsYWdzKTsKKyAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVh
dGUodm0sIHBhdHRlcm4sIGZsYWdzKTsKICAgICB9CiAKICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1l
c3NhZ2UoKSkpOwogCi0gICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+c2V0UmVnRXhwKGV4
ZWMtPnZtKCksIHJlZ0V4cCk7CisgICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+c2V0UmVn
RXhwKHZtLCByZWdFeHApOwogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnNldExhc3RJ
bmRleChleGVjLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiB9
CkBAIC0yMTIsOSArMjI0LDEyIEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NTdHJpbmcgZmxhZ3NTdHJp
bmcoRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAKQEAgLTIyMiw3ICsyMzcsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1
cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIHZtLnBy
b3BlcnR5TmFtZXMtPnNvdXJjZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMjQyLDExICsyNTYsMTQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0
OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3Rv
dHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBjYW4gb25seSBiZSBjYWxs
ZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhp
c1ZhbHVlKS0+cmVnRXhwKCktPmdsb2JhbCgpKSk7CkBAIC0yNTQsMTEgKzI3MSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0Ojpp
bmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlw
ZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3Jl
Q2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVj
dCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CkBAIC0yNjYsMTEgKzI4Niwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBP
YmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhw
UHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBl
Lm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIp
KTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkpKTsKQEAgLTI3OCwxMSAr
MzAxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclN0aWNreShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4
cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdF
eHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkg
YmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUu
c3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+c3RpY2t5KCkpKTsKQEAgLTI5MCwxMSArMzE2
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVuaWNvZGUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBP
YmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhw
UHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBi
ZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS51
bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7CkBAIC0zMDIsOSArMzMx
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4
cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3Qi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxs
ZWQgb24gYW4gb2JqZWN0IikpOwogCiAgICAgYXV0byBmbGFncyA9IGZsYWdzU3RyaW5nKGV4ZWMs
IGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTQyMSwxMSArNDUzLDE0IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSByZWdFeHBQcm90b0dldHRl
clMKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclNvdXJj
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhl
cml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86KSIpKSk7Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBhdHRl
cm4gPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+cGF0dGVybigpOwpAQCAt
NTM5LDYgKzU3NCw3IEBAIHZvaWQgZ2VuZXJpY1NwbGl0KAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgLy8gMS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gTGV0IHJ4IGJlIHRo
ZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIElmIFR5cGUo
cngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KQEAgLTY0NCw3
ICs2ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAg
ICAgIH0pOwogICAgIAogICAgIGlmIChyZXN1bHRMZW5ndGggKyBkcnlSdW5Db3VudCA+PSBNQVhf
U1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDggKzMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUgYm9vbCByZWplY3Qo
RXhlY1N0YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdl
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBtZXNzYWdlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDE2IEBAIHZvaWQgU2V0Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMs
ICJTZXQiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Nv
bnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
U2V0IikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmds
b2JhbE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGds
b2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTcyLDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29ucwogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBh
ZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1
bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlKSk7CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZd
KFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRWYWx1ZSkgewogICAgICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxMyBAQCB2b2lkIFNldEl0ZXJh
dG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgSlNTZXRJdGVyYXRv
ciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTU2V0SXRlcmF0b3IqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2Fs
bCBTZXRJdGVyYXRvci5uZXh0KCkgb24gYSBub24tU2V0SXRlcmF0b3Igb2JqZWN0IikpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9yLm5leHQoKSBvbiBhIG5v
bi1TZXRJdGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0KGNhbGxG
cmFtZSwgcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVJdGVy
YXRvclJlc3VsdE9iamVjdChjYWxsRnJhbWUsIHJlc3VsdCwgZmFsc2UpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDE2IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0KIAogQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNl
dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dW
TUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNW
YWx1ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlTm90
QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgSlNTZXQqIHNldCA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPih0aGlz
VmFsdWUpOwogICAgIGlmICghc2V0KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdCIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdCIpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBzZXQ7CkBAIC0xNDEsMTggKzE0NCwyNCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuCiAgICAgCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1ZhbHVlcyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNTZXQqIHRoaXNPYmogPSBqc0R5bmFt
aWNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2Jq
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgU2V0IHZhbHVlIGl0ZXJhdG9yIGZvciBh
IG5vbi1TZXQgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldEl0
ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVl
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgU2V0IHZhbHVlIGl0ZXJh
dG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5zZXRJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNFbnRyaWVzKENh
bGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1NldCogdGhp
c09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBTZXQgZW50cnkg
aXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2Jq
LCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUg
YSBTZXQgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmos
IEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBy
aXZhdGVGdW5jSXNTZXQoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDYgKzkwLDggQEAg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycgogCiBib29sIFNwYXJzZUFy
cmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1
bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCiAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGFkZChh
cnJheSwgaSk7CkBAIC0xMDEsNyArMTAzLDcgQEAgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpw
dXRFbnRyeShFeGVjUwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzU3Ry
dWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwog
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xNDgsMTQgKzE1
MCwxNyBAQCB2b2lkIFNwYXJzZUFycmF5RW50cnk6OmdldChQcm9wZXJ0eURlc2NyCiAKIGJvb2wg
U3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUs
IFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsK
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZFRocm93KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBzZXQoZXhl
Yy0+dm0oKSwgbWFwLCB2YWx1ZSk7CisgICAgICAgIHNldCh2bSwgbWFwLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTAsNiArOTAsOSBAQCBKU0NlbGwq
IEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgp
OwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0
eShsZW5ndGgpOwpAQCAtMTAyLDcgKzEwNSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmkKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50ID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBpZiAoY29kZVBvaW50ICE9
IGNvZGVQb2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFu
Z2Ugb2YgY29kZSBwb2ludHMiKSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFyZ3VtZW50
cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiKSkp
OwogCiAgICAgICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKQogICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjMsNiArNjMsOSBAQCBib29sIFN0
cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAKIGJvb2wgU3RyaW5nT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihj
ZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09i
amVjdCkpKQpAQCAtNzAsNyArNzMsNyBAQCBib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKQEAgLTgwLDEwICs4MywxMyBAQCBib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlCiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmdPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBp
ZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDYgKzI4OSw5IEBAIHN0cnVj
dCBTdHJpbmdSYW5nZSB7CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VT
dWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJjZVZhbCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5n
ZUNvdW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHJhbmdlQ291bnQgPT0gMSkgewogICAg
ICAgICBpbnQgc291cmNlU2l6ZSA9IHNvdXJjZS5sZW5ndGgoKTsKICAgICAgICAgaW50IHBvc2l0
aW9uID0gc3Vic3RyaW5nUmFuZ2VzWzBdLnBvc2l0aW9uOwpAQCAtMzExLDcgKzMxNCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKICAgICAgICAgY29uc3QgTENo
YXIqIHNvdXJjZURhdGEgPSBzb3VyY2UuY2hhcmFjdGVyczgoKTsKICAgICAgICAgYXV0byBpbXBs
ID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aCwgYnVmZmVy
KTsKICAgICAgICAgaWYgKCFpbXBsKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOwogCiAgICAgICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewpAQCAtMzI5LDcgKzMzMiw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKIAogICAgIGF1dG8gaW1wbCA9
IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VD
b3VudDsgaSsrKSB7CkBAIC0zNDQsNiArMzQ3LDkgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc1NwbGljZVN1YgogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJj
ZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJpbmdS
YW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBTdHJpbmcqIHNlcGFyYXRvcnMsIGludCBzZXBh
cmF0b3JDb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChyYW5nZUNvdW50ID09IDEgJiYg
c2VwYXJhdG9yQ291bnQgPT0gMCkgewogICAgICAgICBpbnQgc291cmNlU2l6ZSA9IHNvdXJjZS5s
ZW5ndGgoKTsKICAgICAgICAgaW50IHBvc2l0aW9uID0gc3Vic3RyaW5nUmFuZ2VzWzBdLnBvc2l0
aW9uOwpAQCAtMzY0LDcgKzM3MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNT
cGxpY2VTdWIKICAgICAgICAgICAgIGFsbFNlcGFyYXRvcnM4Qml0ID0gZmFsc2U7CiAgICAgfQog
ICAgIGlmICh0b3RhbExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKICAgICAgICAgcmV0
dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CkBAIC0zNzUsNyArMzgxLDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiAgICAgICAgIGF1dG8gaW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1
ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgICAgICBpbnQgbWF4Q291bnQgPSBzdGQ6Om1heChyYW5n
ZUNvdW50LCBzZXBhcmF0b3JDb3VudCk7CiAgICAgICAgIGludCBidWZmZXJQb3MgPSAwOwpAQCAt
NDAwLDcgKzQwNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIK
ICAgICBVQ2hhciogYnVmZmVyOwogICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1ZmZlcik7CiAgICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIGlu
dCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQsIHNlcGFyYXRvckNvdW50KTsKICAgICBp
bnQgYnVmZmVyUG9zID0gMDsKQEAgLTc1MiwxMCArNzU4LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBjaGVja09iamVjdENvZXJjaWJsZSgKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgogc3RhdGljIGlubGluZSBKU1N0cmluZyogcmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSYgZXhl
YywgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIsIHVuc2lnbmVkIHJlcGVhdENvdW50KQogeworICAg
IFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXIgPSBudWxscHRyOwogICAgIGF1dG8g
aW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVwZWF0Q291bnQsIGJ1
ZmZlcik7CiAgICAgaWYgKCFpbXBsKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
ZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc5Nyw4ICs4MDYsMTAgQEAgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlKAogQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSByZXBsYWNlKAogICAgIFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNWYWx1ZSBzZWFyY2hWYWx1ZSwgSlNWYWx1ZSByZXBsYWNlVmFsdWUpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtODQxLDYgKzg1Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIC8vIEFsc28gdXNlZCBm
b3IgdmFsdWVPZi4KIApAQCAtODUwLDE0ICs4NjQsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoU3RyaW5nT2Jq
ZWN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5nT2Jq
ZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nOjpTYWZl
VmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7CiAgICAg
SlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJbnQzMigpKSB7
CkBAIC04NzQsOSArODkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFy
Q29kZUF0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5n
OjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7
CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJbnQz
MigpKSB7CkBAIC05MDMsOSArOTIzLDEyIEBAIHN0YXRpYyBpbmxpbmUgVUNoYXIzMiBjb2RlUG9p
bnRBdChjb25zdCAKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtOTI5LDIwICs5NTIsMjYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvbmNhdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBhc1N0cmluZyh0
aGlzVmFsdWUpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSkpOwog
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmdGcm9t
QXJndW1lbnRzKGV4ZWMsIHRoaXNWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgSlNW
YWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtOTc3LDkgKzEwMDYsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwog
ICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTEwMTQsOSArMTA0NiwxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyMDEsOSArMTIzNiwx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHVuc2lnbmVkIGxlbjsKICAgICBKU1N0cmluZyog
anNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5nOwpAQCAtMTI1Nyw5ICsxMjk1LDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmkKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSB0aGlzVmFs
dWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTI5
Nyw5ICsxMzM4LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2Fz
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc1Zh
bCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFs
LT52YWx1ZShleGVjKTsKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRv
TG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwpAQCAtMTMxMCw5ICsxMzU0LDEyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKICAgICBTdHJp
bmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgp
OwpAQCAtMTMyMyw5ICsxMzcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNM
b2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0xMzQwLDEwICsxMzkwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KICNpZiBFTkFCTEUoSU5UTCkKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1N0YXRlKiBzdGF0ZSwgaW50MzJfdCAoKmNvbnZlcnRDYXNl
KShVQ2hhciosIGludDMyX3QsIGNvbnN0IFVDaGFyKiwgaW50MzJfdCwgY29uc3QgY2hhciosIFVF
cnJvckNvZGUqKSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJl
T2JqZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogCiAgICAgLy8gMi4gTGV0IFMgYmUg
VG9TdHJpbmcoTykuCiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoc3Rh
dGUpOwpAQCAtMTQxMSwxMCArMTQ2NCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2Nh
bGVDYXNlKEV4ZWNTCiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHJlc3VsdExlbmd0aCk7
CiAgICAgICAgIGNvbnZlcnRDYXNlKGJ1ZmZlci5kYXRhKCksIHJlc3VsdExlbmd0aCwgdmlldy51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdmlld0xlbmd0aCwgdXRmOExvY2FsZUJ1ZmZlci5kYXRh
KCksICZlcnJvcik7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoZXJyb3IpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIHVfZXJyb3JOYW1l
KGVycm9yKSk7CiAgICAgICAgIGxvd2VyID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHJlc3VsdExl
bmd0aCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB1X2Vycm9yTmFtZShlcnJvcikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CiAKICAgICAvLyAxOC4gUmV0dXJuIEwu
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhzdGF0ZSwgbG93ZXIpKTsKQEAg
LTE0MzgsOSArMTQ5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmlnKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xNDQ5LDkgKzE1MDUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NtYWxs
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xNDYwLDkgKzE1MTksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0Js
aW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xNDcxLDkgKzE1MzMsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0JvbGQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTE0ODIsOSArMTU0NywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5n
IHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTE0OTMsOSArMTU2MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jSXRhbGljcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTUwNCw5ICsxNTc1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTdHJpa2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1MTUsOSArMTU4OSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU3ViKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTI2LDkgKzE2MDMsMTIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1N1cChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tP
YmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUzNyw5ICsxNjE3LDEyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1NTMsOSArMTYzNiwxMiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2MDUsOSArMTY5MSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNjIxLDkgKzE3MTAsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xpbmsoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2NjcsOCArMTc1OSwx
MSBAQCBlbnVtIHsKIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIHRyaW1TdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IHRyaW1LaW5kKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKQEAgLTE3MjAsMjEgKzE4MTUsMjMgQEAgc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjbGFtcEFuZFRydW5jYXRlVAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1
ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
Ym9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggY2Fu
bm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTE3NTYsMjEgKzE4NTMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNX
aXRoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0
cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lv
biA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxh
ckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1
bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRv
IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBT
dHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MDgsMjEgKzE5MDcsMjMgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAg
IEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7
CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmlu
Y2x1ZGVzIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMg
Y2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE4NTUsNDIgKzE5NTYsNTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWls
dGluU3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0
ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgbm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVUNoYXIqIHNv
dXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgVU5vcm1hbGl6YXRpb25Nb2RlIGZvcm0pCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBp
bnQzMl90IG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGggPSB1bm9ybV9ub3JtYWxpemUoc291cmNlLCBz
b3VyY2VMZW5ndGgsIGZvcm0sIDAsIG51bGxwdHIsIDAsICZzdGF0dXMpOwogCiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewog
ICAgICAgICAvLyBUaGUgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCB3aGVuIG5vcm1hbGl6ZSBm
YWlscy4KICAgICAgICAgLy8gTm93IHdlIHRocm93IGEgdHlwZSBlcm9yciBzaW5jZSBpdCBzZWVt
cyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGFyZSBpbnZhbGlkLgotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7CiAg
ICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChub3JtYWxp
emVkU3RyaW5nTGVuZ3RoLCBidWZmZXIpOwogICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAg
ICAgdW5vcm1fbm9ybWFsaXplKHNvdXJjZSwgc291cmNlTGVuZ3RoLCBmb3JtLCAwLCBidWZmZXIs
IG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIFdURk1vdmUoaW1wbCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICBKU1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52aWV3KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE5MTEsNyArMjAyMSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgZWxz
ZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAgICAgICBmb3JtID0gVU5PUk1fTkZL
RDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiYXJndW1lbnQgZG9lcyBub3QgbWF0
Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
YXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUoZXhlYywgc291cmNlLmdl
dCgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIGZvcm0pKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC0yOCw3ICsyOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBKU1ZhbHVlIFN0cmluZ1JlY3Vyc2lv
bkNoZWNrZXI6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKCkKIHsKLSAgICByZXR1cm4gSlNDOjp0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJu
IEpTQzo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjLCBzY29wZSk7CiB9CiAKIEpTVmFs
dWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6ZW1wdHlTdHJpbmcoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTg3LDcgKzg3
LDkgQEAgSlNPYmplY3QqIFN5bWJvbDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleAogCiBkb3VibGUg
U3ltYm9sOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIG51
bWJlciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIG51bWJlciIpKTsKICAgICBy
ZXR1cm4gMC4wOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTExMCwx
NiArMTEwLDE5IEBAIGNvbnN0IGNoYXIqIFN5bWJvbEtleUZvclR5cGVFcnJvciA9ICJTeW0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHN5bWJvbFZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5pc1N5bWJvbCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIFN5bWJvbEtl
eUZvclR5cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3IpKTsKIAogICAgIFN5bWJv
bEltcGwqIHVpZCA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUoKS51aWQoKTsK
ICAgICBpZiAoIXVpZC0+c3ltYm9sUmVnaXN0cnkoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEFTU0VSVCh1aWQtPnN5bWJvbFJlZ2lzdHJ5
KCkgPT0gJmV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCBleGVjLT52bSgpLnN5bWJvbFJlZ2lzdHJ5KCkua2V5Rm9y
U3ltYm9sKCp1aWQpKSk7CisgICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSAmdm0u
c3ltYm9sUmVnaXN0cnkoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCB2bS5zeW1ib2xSZWdpc3RyeSgpLmtleUZvclN5bWJvbCgqdWlkKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzIsMTYgKzcyLDE5
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBTeW1ib2xWYWx1ZU9mVHlwZUVycm8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIFN5bWJvbCogc3ltYm9sID0gbnVsbHB0cjsKICAgICBpZiAodGhpc1ZhbHVl
LmlzU3ltYm9sKCkpCiAgICAgICAgIHN5bWJvbCA9IGFzU3ltYm9sKHRoaXNWYWx1ZSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sVG9T
dHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0
KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3ltYm9sT2Jq
ZWN0OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
U3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKICAgICAgICAgc3lt
Ym9sID0gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNPYmplY3QpLT5pbnRlcm5h
bFZhbHVlKCkpOwogICAgIH0KIApAQCAtOTAsMTYgKzkzLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
eW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1
ZSk7CiAKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9yKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3Ip
OwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAg
IGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3ltYm9sT2JqZWN0OjppbmZvKCkpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9yKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFZhbHVl
T2ZUeXBlRXJyb3IpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nhc3Q8U3ltYm9s
T2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgi
CisKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKKyNpZiBFTkFCTEUo
VEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCituYW1lc3BhY2UgeworCisvLyBMb2dzIGFsbCBU
aHJvd1Njb3BlIGFjdGl2aXR5IHRvIGhlbHAgZGVidWcgdGhlIHNvdXJjZSBvZiBhIHZlcmlmaWNh
dGlvbiBmYWlsdXJlLgorYm9vbCB0cmFjZU9uID0gZmFsc2U7CisKKy8vIEEgbW9yZSB2ZXJib3Nl
IGxvZ2dpbmcgb3B0aW9uIHRvIGR1bXAgdGhlIEMrKyBzdGFjayB0cmFjZSBhdCBzdHJhdGVnaWMg
cG9pbnRzIHRvIGFpZCBkZWJ1Z2dpbmcuCitib29sIHRyYWNlV2l0aFN0YWNrVHJhY2VzID0gZmFs
c2U7CisKKy8vIERpc2FibGVkIHRlbXBvcmFyaWx5IHVudGlsIGFsbCBrbm93biB2ZXJpZmljYXRp
b24gZmFpbHVyZXMgYXJlIGZpeGVkLgorYm9vbCB2ZXJpZmljYXRpb25PbiA9IGZhbHNlOworCit1
bnNpZ25lZCB0cmFjZUNvdW50ID0gMDsKK307CisKKy8qCisgICAgVGhyb3dTY29wZSB2ZXJpZmlj
YXRpb24gd29ya3MgdG8gc2ltdWxhdGUgZXhjZXB0aW9uIHRocm93cyBhbmQgY2F0Y2ggY2FzZXMg
d2hlcmUKKyAgICBleGNlcHRpb24gY2hlY2tzIGFyZSBtaXNzaW5nLiBUaGlzIGlzIGhvdyBpdCB3
b3JrczoKKworIDEuIFRoZSBWTSBoYXMgYSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQgdGhhdCBp
bmRpY2F0ZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNoZWNrIGlzCisgICAgbmVlZGVkLiBZb3UgY2Fu
IHRoaW5rIG9mIHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQgYmVpbmcgc2V0IGFzIGEgc2lt
dWxhdGVkCisgICAgdGhyb3cuCisKKyAyLiBFdmVyeSB0aHJvdyBzaXRlIG11c3QgZGVjbGFyZSBh
IFRocm93U2NvcGUgaW5zdGFuY2UgdXNpbmcgREVDTEFSRV9USFJPV19TQ09QRSBhdAorICAgIHRo
ZSB0b3Agb2YgaXRzIGZ1bmN0aW9uIChhcyBlYXJseSBhcyBwb3NzaWJsZSkgZS5nLgorIAorICAg
ICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCAuLi4pOworICAgICAgICB9CisKKyAgICBOb3RlOiBWTTo6dGhyb3dFeGNlcHRpb24o
KSBtZXRob2RzIGFyZSBwcml2YXRlLCBhbmQgb25seSBjYWxsZWFibGVieSB0aGUgVGhyb3dTY29w
ZQorICAgIGZyaWVuZCBjbGFzcy4gQWxsIHRocm93cyBtdXN0IGdvIHRocm91Z2ggYSBUaHJvd1Nj
b3BlLiBIZW5jZSwgd2UgYXJlIGd1YXJhbnRlZWQgdGhhdAorICAgIGFueSBmdW5jdGlvbiB0aGF0
IGNhbiB0aHJvdyB3aWxsIGhhdmUgYSBUaHJvd1Njb3BlLgorCisgICAgTm90ZTogYnkgY29udmVu
dGlvbiwgZXZlcnkgdGhyb3cgaGVscGVyIGZ1bmN0aW9uIG11c3QgdGFrZSBhIFRocm93U2NvcGUg
YXJndW1lbnQKKyAgICBpbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcgaXRzIG93biBUaHJvd1Njb3Bl
LiAgVGhpcyBhbGxvd3MgdGhlIHRocm93IHRvIGJlIGF0dHJpYnV0ZWQKKyAgICB0byB0aGUgY2xp
ZW50IGNvZGUgcmF0aGVyIHRoYW4gdGhlIHRocm93IGhlbHBlciBpdHNlbGYuCisKKyAzLiBWZXJp
ZmljYXRpb24gb2YgbmVlZGVkIGV4Y2VwdGlvbiBjaGVja3MKKworICAgIGEuIE9uIGNvbnN0cnVj
dGlvbiwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06Om1fbmVlZEV4Y2VwdGlv
bkNoZWNrIGlzCisgICAgICAgbm90IHNldC4KKyAKKyAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCB0
aGUgY2FsbGVyIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGhhcyBjaGVja2VkIGZvciBleGNlcHRp
b25zCisgICAgICAgd2hlcmUgbmVlZGVkIGJlZm9yZSBkb2luZyBtb3JlIHdvcmsgd2hpY2ggbGVk
IHRvIGNhbGxpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisKKyAgICBiLiBPbiBkZXN0cnVjdGlv
biwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06Om1fbmVlZEV4Y2VwdGlvbkNo
ZWNrIGlzCisgICAgICAgbm90IHNldC4gVGhpcyB2ZXJpZmljYXRpb24gd2lsbCBiZSBza2lwcGVk
IGlmIHRoZSBUaHJvd1Njb3BlIGhhcyBiZWVuIHJlbGVhc2VkCisgICAgICAgKHNlZSAoNSkgYmVs
b3cpLgorCisgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGZ1bmN0aW9uIHRoYXQgb3ducyB0
aGlzIFRocm93U2NvcGUgaXMgbm90IG1pc3NpbmcgYW55CisgICAgICAgZXhjZXB0aW9uIGNoZWNr
cyBiZWZvcmUgcmV0dXJuaW5nLgorIAorICAgIGMuIFdoZW4gdGhyb3dpbmcgYW4gZXhjZXB0aW9u
LCB0aGUgVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25lZWRFeGNlcHRpb25DaGVj
aworICAgICAgIGlzIG5vdCBzZXQsIHVubGVzcyBpdCdzIGJlZW4gYXNrIHRvIHJldGhyb3cgdGhl
IHNhbWUgRXhjZXB0aW9uIG9iamVjdC4KKworIDQuIFNpbXVsYXRlZCB0aHJvd3MKKworICAgIFRo
cm93cyBhcmUgc2ltdWxhdGVkIGJ5IHNldHRpbmcgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJp
dC4KKworICAgIFRoZSBiaXQgd2lsbCBvbmx5IGJlIHNldCBpbiB0aGUgVGhyb3dTY29wZSBkZXN0
cnVjdG9yIGV4Y2VwdCB3aGVuIHRoZSBUaHJvd1Njb3BlCisgICAgZGV0ZWN0cyB0aGUgY2FsbGVy
IGlzIGEgTExJbnQgb3IgSklUIGZ1bmN0aW9uLiBMTEludCBvciBKSVQgZnVuY3Rpb25zIHdpbGwg
YWx3YXlzCisgICAgY2hlY2sgZm9yIGV4Y2VwdGlvbnMgYWZ0ZXIgYSBob3N0IEMrKyBmdW5jdGlv
biByZXR1cm5zIHRvIGl0LiBIb3dldmVyLCB0aGV5IHdpbGwKKyAgICBub3QgY2xlYXIgdGhlIG1f
bmVlZEV4Y2VwdGlvbkNoZWNrIGJpdC4KKworICAgIEhlbmNlLCBpZiB0aGUgVGhyb3dTY29wZSBk
ZXN0cnVjdG9yIGRldGVjdHMgdGhlIGNhbGxlciBpcyBhIExMSW50IG9yIEpJVCBmdW5jdGlvbiwK
KyAgICBpdCB3aWxsIGp1c3Qgc2tpcCB0aGUgc2V0dGluZyBvZiB0aGUgYml0LgorCisgICAgTm90
ZTogdGhlcmUgaXMgbm8gbmVlZCwgYW5kIGl0IGlzIGluY29ycmVjdCB0byBzZXQgdGhlIG1fbmVl
ZEV4Y2VwdGlvbkNoZWNrIGJpdAorICAgIGluIHRoZSB0aHJvd0V4Y2VwdGlvbiBtZXRob2RzLiBU
aGlzIGlzIGJlY2F1c2UsIGluIHByYWN0aWNlLCB3ZSBhbHdheXMgcmV0dXJuCisgICAgaW1tZWRp
YXRlbHkgYWZ0ZXIgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ug
dG8gc2V0IHRoZSBiaXQgaW4KKyAgICB0aGUgdGhyb3cganVzdCB0byBoYXZlIHRvIGNsZWFyIGl0
IGltbWVkaWF0ZWx5IGFmdGVyIGJlZm9yZSB3ZSBkbyB2ZXJpZmljYXRpb24gaW4KKyAgICB0aGUg
VGhyb3dTY29wZSBkZXN0cnVjdG9yLgorCisgNS4gVXNpbmcgVGhyb3dTY29wZTo6cmVsZWFzZSgp
CisKKyAgICBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUg
Ym90dG9tIG9mIGEgZnVuY3Rpb24gaWY6CisgCisgICAgYS4gVGhpcyBmdW5jdGlvbiBpcyBnb2lu
ZyB0byBsZXQgaXRzIGNhbGxlciBjaGVjayBhbmQgaGFuZGxlIHRoZSBleGNlcHRpb24uCisgCisg
ICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBnb28o
KTsgLy8gbWF5IHRocm93LgorCisgICAgICAgICAgICAuLi4gLy8gQ2xlYW51cCBjb2RlIHRoYXQg
d2lsbCBhcmUgbm90IGFmZmVjdGVkIGJ5IGEgcGVuZGluZyBleGNlcHRpb25zLgorCisgICAgICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIHRlbGwgdGhlIFRocm93U2NvcGUgdGhhdCB0aGUgY2Fs
bGVyIHdpbGwgaGFuZGxlIHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisgCisgICAgYi4gVGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBkbyBhIHRh
aWwgY2FsbCB0aGF0IG1heSB0aHJvdy4KKworICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICAgICAgICAgIC4uLgorICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOyAvLyB0ZWxsIHRoZSBU
aHJvd1Njb3BlIHRoYXQgdGhlIGNhbGxlciB3aWxsIGhhbmRsZSB0aGUgZXhjZXB0aW9uLgorICAg
ICAgICAgICAgcmV0dXJuIGdvbygpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgIH0KKyAKKyAgICBU
aHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSBjb2RlIHBhdGhz
IHRoYXQgYnJhbmNoLiBGb3IgZXhhbXBsZToKKyAKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gZ29vMSgpOyAvLyBtYXkgdGhyb3cuCisgICAg
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIDw9PT09PT09PT09PT09PT09PT09IHRoZSBXUk9O
RyB3YXkgISEhCisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5IHRocm93LgorICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgCisgICAg
VGhlIGFib3ZlIHdpbGwgcmVzdWx0IGluIGEgdmVyaWZpY2F0aW9uIGZhaWx1cmUgaW4gZ29vMigp
J3MgVGhyb3dTY29wZS4gIFRoZSBwcm9wZXIgd2F5CisgICAgdG8gZml4IHRoaXMgdmVyaWZpY2F0
aW9uIGlzIHRvIGRvIHdpdGhlciAoNikgb3IgKDcpIGJlbG93LgorIAorICA2LiBDaGVja2luZyBl
eGNlcHRpb25zIHdpdGggVGhyb3dTY29wZTo6ZXhjZXB0aW9uKCkKKyAKKyAgICAgVGhyb3dTY29w
ZTo6ZXhjZXB0aW9uKCkgcmV0dXJucyB0aGUgdGhyb3duIEV4Y2VwdGlvbiBvYmplY3QgaWYgdGhl
cmUgaXMgb25lIHBlbmRpbmcuCisgICAgIEVsc2UgaXQgcmV0dXJucyBudWxscHRyLgorIAorICAg
ICBJdCBhbHNvIGNsZWFycyB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0IHRoZXJlYnkgaW5k
aWNhdGluZyB0aGF0IHdlJ3ZlIHNhdGlzaWZlZAorICAgICB0aGUgbmVlZGVkIGV4Y2VwdGlvbiBj
aGVjay4KKyAKKyAgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6CisgCisgICAgICAgIHZvaWQgZm9v
KC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGdvbzEoKTsgLy8gbWF5IHRo
cm93LgorICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAvLyBtYXkgdGhyb3cuCisg
ICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAK
KyAgICBCdXQgc29tZXRpbWVzLCBmb3Igb3B0aW1pemF0aW9uIHJlYXNvbnMsIHdlIG1heSBjaG9v
c2UgdG8gdGVzdCB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsZWUKKyAgICBmdW5jdGlvbiBpbnN0ZWFk
IGRvaW5nIGEgbG9hZCBvZiB0aGUgVk0gZXhjZXB0aW9uIHZhbHVlLiBTZWUgKDcpIGJlbG93Lgor
IAorIDcuIENoZWNraW5nIGV4Y2VwdGlvbiBieSBjaGVja2luZyBjYWxsZWUgcmVzdWx0CisgCisg
ICAgVGhpcyBhcHByb2FjaCBzaG91bGQgb25seSBiZSBhcHBsaWVkIHdoZW4gaXQgbWFrZXMgYSBk
aWZmZXJlbmNlIHRvIHBlcmZvcm1hbmNlLgorICAgIElmIHdlIG5lZWQgdG8gZG8gdGhpcywgd2Ug
c2hvdWxkIGFkZCBhbiBBU1NFUlQoKSB0aGF0IGludm9rZXMgVGhyb3dTY29wZTo6ZXhjZXB0aW9u
KCkKKyAgICBhbmQgdmVyaWZ5IHRoZSByZXN1bHQuIFNpbmNlIFRocm93U2NvcGUgdmVyaWZpY2F0
aW9uIGlzIG9ubHkgZG9uZSBvbiBERUJVRyBidWlsZHMsCisgICAgdGhpcyBBU1NFUlQgd2lsbCBz
YXRpc2Z5IHRoZSB2ZXJpZmljYXRpb24gcmVxdWlyZW1lbnRzIHdoaWxlIG5vdCBpbXBhY3Rpbmcg
cGVyZm9ybWFuY2UuCisgCisgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6CisKKyAgICAgICAgdm9p
ZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgICAgIGJvb2wgZmFpbGVkID0gZ29vMSgpOyAvLyBt
YXkgdGhyb3cuCisgICAgICAgICAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSBmYWls
ZWQpCisgICAgICAgICAgICBpZiAoZmFpbGVkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgICAgICAu
Li4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAKKyA4LiBEZWJ1Z2dp
bmcgdmVyaWZpY2F0aW9uIGZhaWx1cmVzLgorCisgICAgYS4gV2hlbiB2ZXJpZmljYXRpb24gZmFp
bHMsIHlvdSB3aWxsIHNlZSBhIGhlbHBmdWwgbWVzc2FnZSBmb2xsb3dlZCBieSBhbiBhc3NlcnRp
b24gZmFpbHVyZS4KKyAgICAgICBGb3IgZXhhbXBsZToKKyAKKyAgICBGQUlMRUQgZXhjZXB0aW9u
IGNoZWNrIHZlcmlmaWNhdGlvbjoKKyAgICAgICAgRXhjZXB0aW9uIHRocm93biBmcm9tIFRocm93
U2NvcGUgWzJdIEV4aXQ6IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2Uv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoxMjQ1CisgICAg
ICAgIGlzIHVuY2hlY2tlZCBpbiBUaHJvd1Njb3BlIFsxXTogdmFyYXJnc1NldHVwIEAgL1ZvbHVt
ZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOjEzOTgKKworICAgICAgIFRoZSBtZXNzYWdlIHRlbGxzIHlvdSB0aGF0IGZh
aWx1cmUgd2FzIGRldGVjdGVkIGF0IGluIHZhcmFyZ3NTZXR1cCgpIEAgTExJbnRTbG93UGF0aHMu
Y3BwCisgICAgICAgbGluZSAxMzk4LCBhbmQgdGhhdCB0aGUgbWlzc2luZyBleGNlcHRpb24gY2hl
Y2sgc2hvdWxkIGhhdmUgaGFwcGVuZWQgc29tZXdoZXJlIGJldHdlZW4KKyAgICAgICB0aGUgY2Fs
bCB0byBzZXRVcENhbGwoKSBAIExMSW50U2xvd1BhdGhzLmNwcCBsaW5lIDEyNDUgYW5kIGl0Lgor
CisgICAgICAgSWYgdGhhdCBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24sIHlvdSBjYW4gLi4u
CisKKyAgICBiLiBUdXJuIG9uIFRocm93U2NvcGUgdHJhY2luZworIAorICAgICAgIEp1c3Qgc2V0
IHRyYWNlT249dHJ1ZSBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3BwLCBhbmQgcmVidWlsZC4g
VGhlcmVhZnRlciwgeW91IHNob3VsZAorICAgICAgIHNlZSBhIHRyYWNlIG9mIFRocm93U2NvcGVz
IGJlaW5nIGVudGVyZWQgYW5kIGV4aXRlZCBhcyB3ZWxsIGFzIHRoZWlyIGRlcHRoIGUuZy4KKwor
ICAgIFRocm93U2NvcGUgWzFdIEVudGVyOiBsbGludF9zbG93X3BhdGhfamZhbHNlIEAgL1ZvbHVt
ZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOjEwMzIKKyAgICBUaHJvd1Njb3BlIFsxXSBFeGl0OiBsbGludF9zbG93X3Bh
dGhfamZhbHNlIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEwMzIKKworICAgICAgIFlvdSB3aWxsIGFs
c28gc2VlIHRyYWNlcyBvZiBzaW11bGF0ZWQgdGhyb3dzIGUuZy4KKworICAgIFRocm93U2NvcGUg
WzJdIFRocm93IGZyb206IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2Uv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoxMjQ1CisKKyAg
ICAgICBJZiB0aGF0IGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbiwgeW91IGNhbiAuLi4KKwor
ICAgIGMuIFR1cm4gb24gVGhyb3dTY29wZSBzdGFjayBkdW1wcworCisgICAgICAgSnVzdCBzZXQg
dHJhY2VXaXRoU3RhY2tUcmFjZXM9dHJ1ZSBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3BwLCBh
bmQgcmVidWlsZC4KKyAgICAgICBUaGVyZWFmdGVyLCB5b3Ugc2hvdWxkIHNlZSBhIHN0YWNrIHRy
YWNlcyBhdCB2YXJpb3VzIHJlbGV2YW50IFRocm93U2NvcGUgZXZlbnRzLgorCisgICAgZC4gVXNp
bmcgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKQorCisgICAgICAgSWYgeW91IGhhdmUgaXNv
bGF0ZWQgdGhlIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrIHRvIGEgZnVuY3Rpb24gdGhhdCBpcyBs
YXJnZSBidXQKKyAgICAgICBpcyB1bnN1cmUgd2hpY2ggc3RhdGVtZW50IGNhbiB0aHJvdyBhbmQg
aXMgbWlzc2luZyB0aGUgY2hlY2ssIHlvdSBjYW4gc3ByaW5rbGUKKyAgICAgICB0aGUgZnVuY3Rp
b24gd2l0aCBjYWxscyB0byB0aHJvd1Njb3BlUHJpbnRJZk5lZWRDaGVjaygpLgorCisgICAgICAg
dGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB3aWxsIGxvZyBhIGxpbmUgIk5lZWQgZXhjZXB0
aW9uIGNoZWNrIGF0IC4uLiIgdGhhdAorICAgICAgIGlubGN1ZGVzIHRoZSBmaWxlIGFuZCBsaW5l
IG51bWJlciBvbmx5IHdoZW4gaXQgc2VlIHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBzZXQuCisg
ICAgICAgVGhpcyB3aWxsIHRlbGwgeW91IHdoaWNoIHN0YXRlbWVudCBzaW11bGF0ZWQgdGhlIHRo
cm93IHRoYXQgaXMgbm90IGJlaW5nIGNoZWNrZWQKKyAgICAgICBpLmUuIHRoZSBvbmUgdGhhdCBw
cmVjZWRlZCB0aGUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB0aGF0IHByaW50ZWQgYSBs
aW5lLgorKi8KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6OlRocm93U2NvcGUoVk0m
IHZtLCBUaHJvd1Njb3BlTG9jYXRpb24gbG9jYXRpb24pCisgICAgOiBtX3ZtKHZtKQorICAgICwg
bV9wcmV2aW91c1Njb3BlKHZtLm1fdG9wVGhyb3dTY29wZSkKKyAgICAsIG1fbG9jYXRpb24obG9j
YXRpb24pCisgICAgLCBtX2RlcHRoKG1fcHJldmlvdXNTY29wZSA/IG1fcHJldmlvdXNTY29wZS0+
bV9kZXB0aCArIDEgOiAwKQoreworICAgIG1fdm0ubV90b3BUaHJvd1Njb3BlID0gdGhpczsKKwor
ICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+
IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIEVudGVyOiAiLCBsb2NhdGlvbi5mdW5jdGlvbk5h
bWUsICIgQCAiLCBsb2NhdGlvbi5maWxlLCAiOiIsIGxvY2F0aW9uLmxpbmUpOworICAgICAgICBp
ZiAobV92bS5tX25lZWRFeGNlcHRpb25DaGVjaykKKyAgICAgICAgICAgIGRhdGFMb2coIiwgbmVl
ZHMgY2hlY2siKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAgICAgICBpZiAodHJhY2VX
aXRoU3RhY2tUcmFjZXMpCisgICAgICAgICAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKyAgICB9
CisKKyAgICB2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlOjpTY29wZUVu
dHJ5KTsKK30KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6On5UaHJvd1Njb3BlKCkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLm1fdG9wVGhyb3dTY29wZSk7CisKKyAgICBpZiAo
IW1faXNSZWxlYXNlZCkKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2Zp
ZWQoU2l0ZTo6U2NvcGVFeGl0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gSWYgd2UgcmVsZWFz
ZWQgdGhlIHNjb3BlLCB0aGF0IG1lYW5zIHdlJ3JlIGxldHRpbmcgb3VyIGNhbGxlcnMgZG8gdGhl
CisgICAgICAgIC8vIGV4Y2VwdGlvbiBjaGVjay4gSG93ZXZlciwgYmVjYXVzZSBvdXIgY2FsbGVy
IG1heSBiZSBhIExMSW50IG9yIEpJVAorICAgICAgICAvLyBmdW5jdGlvbiAod2hpY2ggYWx3YXlz
IGNoZWNrcyBmb3IgZXhjZXB0aW9ucyBidXQgd29uJ3QgY2xlYXIgdGhlCisgICAgICAgIC8vIG1f
bmVlZEV4Y2VwdGlvbkNoZWNrIGJpdCksIHdlIHNob3VsZCBjbGVhciBtX25lZWRFeGNlcHRpb25D
aGVjayBoZXJlCisgICAgICAgIC8vIGFuZCBsZXQgY29kZSBiZWxvdyBkZWNpZGUgaWYgd2UgbmVl
ZCB0byBzaW11bGF0ZSBhIHJlLXRocm93LgorICAgICAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNo
ZWNrID0gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCB3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQg
PSBmYWxzZTsKKyAgICB2b2lkKiBwcmV2aW91c1Njb3BlID0gbV9wcmV2aW91c1Njb3BlOworICAg
IHZvaWQqIHRvcENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOworICAgIAorICAgIC8vIElm
IHRoZSB0b3BDYWxsRnJhbWUgd2FzIHB1c2hlZCBvbiB0aGUgc3RhY2sgYWZ0ZXIgdGhlIHByZXZp
b3VzU2NvcGUgd2FzIGluc3RhbnRpYXRlZCwKKyAgICAvLyB0aGVuIHRoaXMgVk1FbnRyeSB0aHJv
d1Njb3BlIHdpbGwgYmUgcmV0dXJuaW5nIHRvIExMSU5UIG9yIEpJVCBjb2RlIHRoYXQgYWx3YXlz
IGRvCisgICAgLy8gYW4gZXhjZXB0aW9uIGNoZWNrLiBJbiB0aGF0IGNhc2UsIHNraXAgdGhlIHNp
bXVsYXRlZCB0aHJvdyBiZWNhdXNlIHRoZSBMTEludCBhbmQgSklUCisgICAgLy8gd2lsbCBiZSBj
aGVja2luZyBmb3IgdGhlIGV4Y2VwdGlvbiB0aGVpciBvd24gd2F5IGluc3RlYWQgb2YgY2FsbGlu
ZyB2bS5leGNlcHRpb24oKS4KKyAgICBpZiAodG9wQ2FsbEZyYW1lICYmIHByZXZpb3VzU2NvcGUg
PiB0b3BDYWxsRnJhbWUpCisgICAgICAgIHdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCA9IHRydWU7
CisgICAgCisgICAgaWYgKCF3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQpCisgICAgICAgIHNpbXVs
YXRlVGhyb3coKTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0
cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIEV4aXQ6ICIsIG1fbG9j
YXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRp
b24ubGluZSk7CisgICAgICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklUKQorICAgICAg
ICAgICAgZGF0YUxvZygiLCB3aXRoIHJldGhyb3ciKTsKKyAgICAgICAgaWYgKG1fdm0ubV9uZWVk
RXhjZXB0aW9uQ2hlY2spCisgICAgICAgICAgICBkYXRhTG9nKCIsIG5lZWRzIGNoZWNrIik7Cisg
ICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAgICAgaWYgKHRyYWNlV2l0aFN0YWNrVHJhY2Vz
KQorICAgICAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAgfQorCisgICAgbV92bS5t
X3RvcFRocm93U2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7Cit9CisKK3ZvaWQgVGhyb3dTY29wZTo6
dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAobV92bS5leGNlcHRpb24oKSAmJiBtX3ZtLmV4Y2VwdGlvbigpICE9IGV4Y2VwdGlv
bikKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6VGhy
b3cpOworICAgIAorICAgIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30K
KworSlNWYWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpCit7CisgICAgaWYgKCFlcnJvci5hc0NlbGwoKSB8fCAhanNEeW5hbWljQ2Fz
dDxFeGNlcHRpb24qPihlcnJvci5hc0NlbGwoKSkpCisgICAgICAgIHZlcmlmeUV4Y2VwdGlvbkNo
ZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAgICByZXR1cm4gbV92bS50
aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9CisKK0pTT2JqZWN0KiBUaHJvd1Njb3BlOjp0
aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCit7CisgICAgaWYg
KCFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG9iaikpCisgICAgICAgIHZlcmlmeUV4Y2VwdGlv
bkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAgICByZXR1cm4gbV92
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOworfQorCit2b2lkIFRocm93U2NvcGU6OnByaW50
SWZOZWVkQ2hlY2soY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1
bnNpZ25lZCBsaW5lKQoreworICAgIGlmIChtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrKQorICAg
ICAgICBkYXRhTG9nKCI8IiwgdHJhY2VDb3VudCsrLCAiPiBOZWVkIGV4Y2VwdGlvbiBjaGVjayBh
dCAiLCBmdW5jdGlvbk5hbWUsICIgQCAiLCBmaWxlLCAiOiIsIGxpbmUsICJcbiIpOworfQorCit2
b2lkIFRocm93U2NvcGU6OnNpbXVsYXRlVGhyb3coKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1f
dm0ubV90b3BUaHJvd1Njb3BlKTsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludExvY2F0
aW9uID0gbV9sb2NhdGlvbjsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludERlcHRoID0g
bV9kZXB0aDsKKyAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrID0gdHJ1ZTsKKworICAgIGlm
ICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93
U2NvcGUgWyIsIG1fZGVwdGgsICJdIFRocm93IGZyb206ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25O
YW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIik7
CisgICAgICAgIGlmICh0cmFjZVdpdGhTdGFja1RyYWNlcykKKyAgICAgICAgICAgIFdURlJlcG9y
dEJhY2t0cmFjZSgpOworICAgIH0KK30KKworSlNfRVhQT1JUX1BSSVZBVEUKK3ZvaWQgVGhyb3dT
Y29wZTo6dmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoVGhyb3dTY29wZTo6U2l0
ZSBzaXRlKQoreworICAgIGlmICghdmVyaWZpY2F0aW9uT24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChVTkxJS0VMWShtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrKSkgeworICAgICAgICBh
dXRvIGZhaWxEZXB0aCA9IG1fdm0ubV9zaW11bGF0ZWRUaHJvd1BvaW50RGVwdGg7CisgICAgICAg
IGF1dG8mIGZhaWxMb2NhdGlvbiA9IG1fdm0ubV9zaW11bGF0ZWRUaHJvd1BvaW50TG9jYXRpb247
CisKKyAgICAgICAgYXV0byBzaXRlTmFtZSA9IFtdIChTaXRlIHNpdGUpIC0+IGNvbnN0IGNoYXIq
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoc2l0ZSkgeworICAgICAgICAgICAgY2FzZSBTaXRlOjpT
Y29wZUVudHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiAiRW50cnkiOworICAgICAgICAgICAg
Y2FzZSBTaXRlOjpTY29wZUV4aXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJFeGl0IjsKKyAg
ICAgICAgICAgIGNhc2UgU2l0ZTo6VGhyb3c6CisgICAgICAgICAgICAgICAgcmV0dXJuICJUaHJv
dyI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH07CisKKyAgICAgICAg
ZGF0YUxvZygKKyAgICAgICAgICAgICJGQUlMRUQgZXhjZXB0aW9uIGNoZWNrIHZlcmlmaWNhdGlv
bjpcbiIKKyAgICAgICAgICAgICIgICAgRXhjZXB0aW9uIHRocm93biBmcm9tIFRocm93U2NvcGUg
WyIsIGZhaWxEZXB0aCwgIl0gIiwgc2l0ZU5hbWUoc2l0ZSksICI6ICIsIGZhaWxMb2NhdGlvbi5m
dW5jdGlvbk5hbWUsICIgQCAiLCBmYWlsTG9jYXRpb24uZmlsZSwgIjoiLCBmYWlsTG9jYXRpb24u
bGluZSwgIlxuIgorICAgICAgICAgICAgIiAgICBpcyB1bmNoZWNrZWQgaW4gVGhyb3dTY29wZSBb
IiwgbV9kZXB0aCwgIl06ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2Nh
dGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIgorICAgICAgICAgICAgIlxuIik7
CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spOwor
ICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04pCisg
ICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Rocm93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaHJvd1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGhyb3dTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CisKKyNpZiBFTkFCTEUo
VEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCitjbGFzcyBUaHJvd1Njb3BlIHsKK3B1YmxpYzoK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBUaHJvd1Njb3BlKFZNJiwgVGhyb3dTY29wZUxvY2F0aW9u
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+VGhyb3dTY29wZSgpOworCisgICAgVk0mIHZtKCkg
Y29uc3QgeyByZXR1cm4gbV92bTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJv
d0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVj
dCopOworCisgICAgaW5saW5lIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkKKyAgICB7CisgICAgICAg
IG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fdm0u
ZXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgcmVsZWFzZSgpIHsgbV9pc1Jl
bGVhc2VkID0gdHJ1ZTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludElmTmVl
ZENoZWNrKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZmlsZSwgdW5zaWdu
ZWQgbGluZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzaW11bGF0ZVRocm93KCk7CisKKyAgICBl
bnVtIGNsYXNzIFNpdGUgeworICAgICAgICBTY29wZUVudHJ5LAorICAgICAgICBTY29wZUV4aXQs
CisgICAgICAgIFRocm93CisgICAgfTsKKyAgICB2b2lkIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVl
ZElzU2F0aXNmaWVkKFNpdGUpOworCisgICAgVk0mIG1fdm07CisgICAgVGhyb3dTY29wZSogbV9w
cmV2aW91c1Njb3BlOworICAgIFRocm93U2NvcGVMb2NhdGlvbiBtX2xvY2F0aW9uOworICAgIHVu
c2lnbmVkIG1fZGVwdGg7CisgICAgYm9vbCBtX2lzUmVsZWFzZWQgeyBmYWxzZSB9OworfTsKKwor
I2RlZmluZSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtX18pIFwKKyAgICBKU0M6OlRocm93U2NvcGUo
dm1fXywgSlNDOjpUaHJvd1Njb3BlTG9jYXRpb24oX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19M
SU5FX18pKQorCisjZGVmaW5lIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKHNjb3BlX18pIFwK
KyAgICBzY29wZV9fLnByaW50SWZOZWVkQ2hlY2soX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19M
SU5FX18pCisKKyNlbHNlIC8vIG5vdCBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQor
CitjbGFzcyBUaHJvd1Njb3BlIHsKK3B1YmxpYzoKKyAgICBUaHJvd1Njb3BlKFZNJiB2bSkKKyAg
ICAgICAgOiBtX3ZtKHZtKQorICAgIHsgfQorCisgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4g
bV92bTsgfQorICAgIAorICAgIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBF
eGNlcHRpb24qIGV4Y2VwdGlvbikgeyBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7IH0KKyAgICBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCB2YWx1ZSk7IH0KKyAg
ICBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2Jq
KSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7IH0KKyAgICAKKyAgICBF
eGNlcHRpb24qIGV4Y2VwdGlvbigpIHsgcmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7IH0KKyAgICB2
b2lkIHJlbGVhc2UoKSB7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07Cit9OworCisj
ZGVmaW5lIERFQ0xBUkVfVEhST1dfU0NPUEUodm1fXykgXAorICAgIEpTQzo6VGhyb3dTY29wZSh2
bV9fKQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKworQUxX
QVlTX0lOTElORSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHNjb3BlLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIHJldHVybiBzY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB2YWx1ZSk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
VGhyb3dTY29wZSYgc2NvcGUsIEpTT2JqZWN0KiBvYmopCit7CisgICAgcmV0dXJuIHNjb3BlLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9u
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dT
Y29wZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IFRocm93U2NvcGVMb2NhdGlvbiB7CisgICAgVGhyb3dTY29w
ZUxvY2F0aW9uKCkgeyB9CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgY2hhciogZmlsZSwgdW5zaWduZWQgbGluZSkKKyAgICAgICAgOiBmdW5j
dGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICAgICAsIGZpbGUoZmlsZSkKKyAgICAgICAgLCBs
aW5lKGxpbmUpCisgICAgeyB9CisgICAgCisgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsg
bnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CisgICAgdW5zaWdu
ZWQgbGluZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlN0cm9uZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiVk1FbnRyeVJlY29yZC5oIgpAQCAtMTA4LDYgKzEwOSw3IEBAIGNsYXNzIFN0cnVjdHVy
ZTsKIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOworY2xhc3MgVGhyb3dTY29w
ZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
OwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC00NDksMTAgKzQ1MSw2IEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb24qIGxhc3RFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBt
X2xhc3RFeGNlcHRpb247IH0KICAgICBKU0NlbGwqKiBhZGRyZXNzT2ZMYXN0RXhjZXB0aW9uKCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJm1fbGFzdEV4Y2VwdGlvbik7IH0K
IAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwg
RXhjZXB0aW9uKik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlv
bihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLQogICAgIHZvaWQgc2V0RmFp
bE5leHROZXdDb2RlQmxvY2soKSB7IG1fZmFpbE5leHROZXdDb2RlQmxvY2sgPSB0cnVlOyB9CiAg
ICAgYm9vbCBnZXRBbmRDbGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkKICAgICB7CkBAIC02NDQs
NiArNjQyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fbGFzdEV4Y2VwdGlvbiA9IGV4Y2VwdGlv
bjsKICAgICB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSosIEV4Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhy
b3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKICNpZiBF
TkFCTEUoQVNTRU1CTEVSKQogICAgIGJvb2wgbV9jYW5Vc2VBc3NlbWJsZXI7CiAjZW5kaWYKQEAg
LTY2OCw2ICs2NzAsMTMgQEAgcHJpdmF0ZToKIAogICAgIEV4Y2VwdGlvbiogbV9leGNlcHRpb24g
eyBudWxscHRyIH07CiAgICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNlcHRpb24geyBudWxscHRyIH07
CisjaWYgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKyAgICBUaHJvd1Njb3BlKiBt
X3RvcFRocm93U2NvcGUgeyBudWxscHRyIH07CisgICAgVGhyb3dTY29wZUxvY2F0aW9uIG1fc2lt
dWxhdGVkVGhyb3dQb2ludExvY2F0aW9uOworICAgIHVuc2lnbmVkIG1fc2ltdWxhdGVkVGhyb3dQ
b2ludERlcHRoIHsgMCB9OworICAgIG11dGFibGUgYm9vbCBtX25lZWRFeGNlcHRpb25DaGVjayB7
IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGJvb2wgbV9mYWlsTmV4dE5ld0NvZGVCbG9jayB7IGZh
bHNlIH07CiAgICAgRGVsZXRlUHJvcGVydHlNb2RlIG1fZGVsZXRlUHJvcGVydHlNb2RlIHsgRGVs
ZXRlUHJvcGVydHlNb2RlOjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2dsb2JhbENvbnN0UmVkZWNs
YXJhdGlvblNob3VsZFRocm93IHsgdHJ1ZSB9OwpAQCAtNjkwLDYgKzY5OSw4IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93Q2hpY2tlbj4gbV9zaGFkb3dDaGlj
a2VuOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PiBtX2J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CisKKyAgICBmcmllbmQgY2xhc3MgVGhyb3dTY29wZTsK
IH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVk1FbnRyeVNj
b3BlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+Vk1FbnRy
eVNjb3BlKCk7CiAKKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0
OyB9CiAKICAgICB2b2lkIGFkZERpZFBvcExpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwx
MSArNDgsMTYgQEAgdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKAogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFrTWFwIikpOworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJl
Q2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtNYXAiKSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVj
dCgpOwogICAgIFN0cnVjdHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxP
YmplY3QtPndlYWtNYXBTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQpAQCAtNjksMTEgKzc0LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUg
YWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJG
dW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxU
eXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsm
XShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBp
ZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01NiwxNSArNTYsMTggQEAgdm9pZCBXZWFrTWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTQogCiBzdGF0aWMgV2Vha01hcERhdGEqIGdldFdlYWtNYXBEYXRhKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVj
dCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChKU1dlYWtNYXAqIHdlYWtNYXAg
PSBqc0R5bmFtaWNDYXN0PEpTV2Vha01hcCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHdlYWtN
YXAtPndlYWtNYXBEYXRhKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6
QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrTWFwIG9i
amVjdCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBXVEY6OkFTQ0lJ
TGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gYSBub24tV2Vha01hcCBvYmplY3Qi
KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk5LDEzICsxMDIsMTYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RG
OjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdl
YWtNYXAiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVt
cHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOworICAgIG1hcC0+
c2V0KHZtLCBhc09iamVjdChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxNiBA
QCB2b2lkIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oCiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIldlYWtTZXQiKSk7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha1NldCIpKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
YXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAg
U3RydWN0dXJlKiB3ZWFrU2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vh
a1NldFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02OSw3
ICs3NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBD
YWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlv
bkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxE
YXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkp
OwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYsIEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTQsMTUgKzU0LDE4IEBAIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0KIAogc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlMaXRlcmFs
KCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBub24tb2JqZWN0IikpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoSlNXZWFrU2V0KiB3ZWFrU2V0ID0ganNEeW5h
bWljQ2FzdDxKU1dlYWtTZXQqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiB3ZWFrU2V0LT53ZWFr
TWFwRGF0YSgpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0
ZXJhbCgiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24gb24gYSBub24tV2Vha1NldCBvYmplY3QiKSk7
CisgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwo
IkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQgb2JqZWN0IikpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC04NiwxMyArODksMTYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtTZXRBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxp
dGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtTZXQiKSkp
OwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwganNVbmRlZmlu
ZWQoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24t
b2JqZWN0IGtleSB0byBhIFdlYWtTZXQiKSkpOworICAgIG1hcC0+c2V0KHZtLCBhc09iamVjdChr
ZXkpLCBqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wOC0y
OSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHRo
ZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEg
VGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgIC0gSW50cm9kdWNlZCB0aGUgRU5BQkxFKFRI
Uk9XX1NDT1BFX1ZFUklGSUNBVElPTikgZmxhZy4KKwogMjAxNi0wOC0yNyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTFBhcnNlciBzaG91
bGQgcGFyc2UgcmVsYXRpdmUgVVJMcwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNiAr
OTE4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDAKICNlbmRpZgogCisjaWZuZGVm
IEVOQUJMRV9USFJPV19TQ09QRV9WRVJJRklDQVRJT04KKyNkZWZpbmUgRU5BQkxFX1RIUk9XX1ND
T1BFX1ZFUklGSUNBVElPTiAoIWRlZmluZWQoTkRFQlVHKSkKKyNlbmRpZgorCiAvKiBQaWNrIHdo
aWNoIGFsbG9jYXRvciB0byB1c2U7IHdlIG9ubHkgbmVlZCBhbiBleGVjdXRhYmxlIGFsbG9jYXRv
ciBpZiB0aGUgYXNzZW1ibGVyIGlzIGNvbXBpbGVkIGluLgogICAgT24gbm9uLVdpbmRvd3MgeDg2
LTY0LCBpT1MsIGFuZCBBUk02NCB3ZSB1c2UgYSBzaW5nbGUgZml4ZWQgbW1hcCwgb24gb3RoZXIg
cGxhdGZvcm1zIHdlIG1tYXAgb24gZGVtYW5kLiAqLwogI2lmIEVOQUJMRShBU1NFTUJMRVIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNDggQEAKKzIwMTYtMDgtMjkgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSB0aGUgVGhyb3dTY29w
ZSBhbmQgZm9yY2UgZXZlcnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50aWF0ZSBhIFRocm93U2NvcGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExNzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGlzIGlzIG9ubHkgYW4gQVBJIGNoYW5nZS4gSWYgaXQgYnVpbGRzLCBp
dCBzaG91bGQgYmUgZ29vZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNz
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQ
YXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNCbG9iKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUFlc0NiY1BhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBZXNL
ZXlHZW5QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSG1hY1BhcmFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVIbWFjS2V5UGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVJzYUtleUdlblBhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSc2FPYWVwUGFy
YW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYVNzYVBhcmFtcyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTQXJyYXlGcm9tSlNP
Tik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJpbmdGcm9tSlNPTik6CisgICAgICAgIChXZWJD
b3JlOjpnZXRCb29sZWFuRnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0QmlnSW50ZWdl
clZlY3RvckZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyeUpXS0tleU9wc1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YU9jdGV0U2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhUlNB
Q29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0s6OmtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSldLQWxnb3JpdGhtVG9KU09OKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6c2VyaWFsaXpl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRET01FeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5mb3JjZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU21h
bGxlckludCk6CisgICAgICAgIChXZWJDb3JlOjp0b1NtYWxsZXJVSW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmNhbkFjY2Vzc0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93VHlwZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93Tm90U3VwcG9ydGVkRXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6dGhyb3dJbnZhbGlkU3RhdGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0
aHJvd1NlY3VyaXR5RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBcmd1bWVudE11c3RC
ZUVudW1FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FyZ3VtZW50VHlwZUVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnRocm93QXR0cmlidXRlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93
Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjp0aHJvd1NlcXVlbmNlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnRocm93Tm9uRmluaXRlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93R2V0dGVy
VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93U2V0dGVyVHlwZUVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRocm93VGhpc1R5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpj
YWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
OgorICAgICAgICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRv
UmVmUHRyTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVBcnJheSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU6OmNhbGxUaHJvd1R5cGVFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRXcmFwcGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JFYWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
SXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnNob3dNb2RhbERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0RhdGFD
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50Ojpj
cmVhdGVUb3VjaExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6Z2V0Q1NTQ2Fu
dmFzQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxB
bGxDb2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNF
bGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6
OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJv
YmFibHlTdXBwb3J0c0NvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdEpTSFRNTEVsZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnJlcGxh
Y2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246
OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6
Z2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxp
dGllcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsTWVzc2FnZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9EZWNpc2lvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
SlNNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2Rl
OjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OmFwcGVuZENoaWxkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2lu
RWxlbWVudFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1
Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVu
Z3RoOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6Y29udmVydFRv
U3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRP
YmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmkpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlw
dG9LZXlGb3JtYXRGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9LZXlVc2Fn
ZXNGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6
ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Omlt
cG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmV4cG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3Vi
dGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29ya2VyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aW52b2tlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xvbmVCYXNlOjp0aHJvd1N0YWNrT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OnRocm93VmFsaWRhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZh
aWxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChHZW5l
cmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVP
dmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMpOgorICAgICAg
ICAoR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAg
ICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OkNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRp
b25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6Cisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpPYmpjQXJyYXk6OnNldFZhbHVlQXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2Jq
Y0FycmF5Ojp2YWx1ZUF0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJh
Y2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OnRocm93RXJyb3IpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoSlNDOjpSdW50
aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleCk6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVu
dGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Y2FsbFJ1bnRpbWVNZXRo
b2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMTYtMDgtMjkgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgdGhyb3cgYSBTZWN1cml0eUVy
cm9yIHdoZW4gZGVueWluZyBzZXR0aW5nIGEgY3Jvc3Mtb3JpZ2luIFdpbmRvdyBwcm9wZXJ0eQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlT
ZXNzaW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCwxNSArNDAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQXBwbGVQYXlT
ZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1
ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
biIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTQXBwbGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgdWludDE2X3Qgc3RhdHVzID0gY29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFyZ3Vt
ZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTcwLDE1ICs3MywxOCBAQCBKU1ZhbHVlIEpT
QXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwCiAKIEpTVmFsdWUgSlNBcHBsZVBheVNlc3Np
b246OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgp
OwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0Fw
cGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3Rh
dGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24i
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbiIpKTsKIAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNBcHBsZVBheVNlc3Npb246OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICB1aW50MTZfdCBzdGF0dXMgPSBjb252ZXJ0PHVpbnQxNl90PihzdGF0ZSwgc3RhdGUuYXJndW1l
bnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMTA0LDE1ICsxMTAsMTggQEAgSlNWYWx1ZSBK
U0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcAogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNz
aW9uOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7
CiAgICAgSlNBcHBsZVBheVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBw
bGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0
ZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQXBw
bGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRGlj
dGlvbmFyeSBuZXdUb3RhbCA9IHsgJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTYzLDEyICs2NCwxNSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNC
bG9iKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JP
YmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVj
LmNhbGxlZSgpKTsKICAgICBBU1NFUlQoanNDb25zdHJ1Y3Rvcik7CiAKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiQmxvYiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2
YWlsYWJsZUVycm9yKGV4ZWMsIHNjb3BlLCAiQmxvYiIpOwogCiAgICAgaWYgKCFleGVjLmFyZ3Vt
ZW50Q291bnQoKSkgewogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01f
V1JBUFBFUihqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgQmxvYiwgQmxvYjo6Y3JlYXRl
KCkpKTsKQEAgLTg3LDcgKzkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKUwogICAgICAgICBKU1ZhbHVlIGJsb2JQcm9wZXJ0eUJhZ1ZhbHVlID0gZXhlYy51bmNo
ZWNrZWRBcmd1bWVudCgxKTsKIAogICAgICAgICBpZiAoIWJsb2JQcm9wZXJ0eUJhZ1ZhbHVlLmlz
T2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgIlNl
Y29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0Iik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgc2NvcGUsICJTZWNv
bmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIE9iamVjdCIpOwog
CiAgICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxk
IGFuIG9iamVjdC4KICAgICAgICAgSlNPYmplY3QqIGJsb2JQcm9wZXJ0eUJhZ09iamVjdCA9IGJs
b2JQcm9wZXJ0eUJhZ1ZhbHVlLnRvT2JqZWN0KCZleGVjKTsKQEAgLTEwMiw3ICsxMDYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICAgICAgaWYgKGNv
bnRhaW5zRW5kaW5ncykgewogICAgICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFyZW50
IiAmJiBlbmRpbmdzICE9ICJuYXRpdmUiKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKCZleGVjLCAiVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0
cmFuc3BhcmVudFwiIG9yIFwibmF0aXZlXCIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcigmZXhlYywgc2NvcGUsICJUaGUgZW5kaW5ncyBwcm9wZXJ0eSBtdXN0IGJl
IGVpdGhlciBcInRyYW5zcGFyZW50XCIgb3IgXCJuYXRpdmVcIiIpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gQXR0ZW1wdCB0byBnZXQgdGhlIHR5cGUgcHJvcGVydHkuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5
LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQ4LDggKzM0OCwxMSBAQCBib29sIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoCiAKIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0
cmluZygmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQs
NiArNTQsOSBAQCBlbnVtIGNsYXNzIEhhc2hSZXF1aXJlbWVudCB7CiAKIGJvb2wgSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciYgYWxnb3JpdGhtSWRl
bnRpZmllcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIHR5cGVkZWYgKEFsZ29yaXRobSBvciBE
T01TdHJpbmcpIEFsZ29yaXRobUlkZW50aWZpZXI7CiAKICAgICBTdHJpbmcgYWxnb3JpdGhtTmFt
ZTsKQEAgLTgxLDcgKzg0LDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6Omdl
dEFsZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWFsZ29yaXRobU5hbWUuY29u
dGFpbnNPbmx5QVNDSUkoKSkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAg
ICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTIyLDggKzEyNSwxMSBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxnb3Jp
dGhtKEpTRGljdGlvbmFyCiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4gY3JlYXRlQWVzQ2JjUGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MCw3ICsxNDYsNyBAQCBzdGF0
aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAgICAgfQogCiAgICAgaWYgKGl2
RGF0YS5zZWNvbmQgIT0gMTYpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3Qg
YmUgMTYgYnl0ZXMiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVFcnJvcihleGVjLCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUgMTYgYnl0
ZXMiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTUxLDggKzE1Nywx
MSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBS
ZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVzS2V5R2VuUGFyYW1zKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
IXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTY5LDggKzE3OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4gY3JlYXRlSG1hY1BhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE4Nyw4ICsxOTksMTEg
QEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVm
UHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNLZXlQYXJhbXMoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0yMDksOCArMjI0LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiBjcmVhdGVSc2FLZXlHZW5QYXJhbXMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMzIsNyArMjUwLDcg
QEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiAgICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IHB1YmxpY0V4cG9uZW50QXJyYXkgPSB0b1VpbnQ4QXJyYXkocHVibGljRXhw
b25lbnRWYWx1ZSk7CiAgICAgaWYgKCFwdWJsaWNFeHBvbmVudEFycmF5KSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgIkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBv
bmVudCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiRXhwZWN0ZWQg
YSBVaW50OEFycmF5IGluIHB1YmxpY0V4cG9uZW50Iik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICByZXN1bHQtPnB1YmxpY0V4cG9uZW50LmFwcGVuZChwdWJsaWNFeHBvbmVu
dEFycmF5LT5kYXRhKCksIHB1YmxpY0V4cG9uZW50QXJyYXktPmJ5dGVMZW5ndGgoKSk7CkBAIC0y
NTAsOCArMjY4LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4K
IAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FPYWVw
UGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTI4NCw4ICszMDUsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+IGNyZWF0ZVJzYVNzYVBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM3LDEzICszOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEpTVmFs
dWUgYnVmZmVyID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4gYXJyYXlCdWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcoYnVmZmVyKTsKICAgICBpZiAo
IWFycmF5QnVmZmVyVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1ZXMoYXJyYXlC
dWZmZXJWaWV3LmdldCgpLCBlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVzdWx0KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC02MSw3ICs2NCw3IEBAIHN0YXRp
YyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUKICAgICBKU1ZhbHVlIHZhbHVlID0g
c2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudGlmaWVyKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4
Y2VwdGlvbigpKTsKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5IGZvciBcIiVz
XCIgSlNPTiBrZXkiLCAga2V5KSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBTdHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgYW4gYXJyYXkgZm9yIFwiJXNcIiBKU09OIGtleSIs
ICBrZXkpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzIsNiArNzUsOSBA
QCBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29s
IGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0
IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldCk7CiAKQEAgLTg0LDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJvbUpTT04o
RXhlY1N0YXRlKgogICAgICAgICAvLyBDYW4gZ2V0IGFuIG91dCBvZiBtZW1vcnkgZXhjZXB0aW9u
LgogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEg
c3RyaW5nIHZhbHVlIGZvciBcIiVzXCIgSlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTkzLDYgKzk5LDkgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5n
RnJvbUpTT04oRXhlY1N0YXRlKgogCiBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBib29sJiByZXN1
bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKQEAgLTEwMiw3ICsxMTEs
NyBAQCBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlCiAgICAgSlNWYWx1
ZSBqc1ZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudGlmaWVyKTsKICAgICBBU1NFUlQo
IWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBpZiAoIWpzVmFsdWUuaXNCb29sZWFuKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEg
Ym9vbGVhbiB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgYm9vbGVh
biB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0xMTIsMTcgKzEyMSwyMCBAQCBzdGF0aWMgYm9vbCBnZXRCb29sZWFu
RnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29sIGdldEJpZ0ludGVnZXJWZWN0b3JGcm9t
SlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFZl
Y3Rvcjx1aW50OF90PiYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGJhc2U2
NHVybEVuY29kZWROdW1iZXI7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihleGVjLCBqc29u
LCBrZXksIGJhc2U2NHVybEVuY29kZWROdW1iZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIWJhc2U2NFVSTERlY29kZShiYXNlNjR1cmxFbmNvZGVkTnVtYmVyLCByZXN1bHQp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRl
Y29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkg
ZGF0YSBpbiBKV0siKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAo
cmVzdWx0WzBdID09IDApIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9j
dGV0cyB0byByZXByZXNlbnQgdGhlIHZhbHVlIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0aWxpemUgdGhl
IG1pbmltdW0gbnVtYmVyIG9mIG9jdGV0cyB0byByZXByZXNlbnQgdGhlIHZhbHVlIikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsMTYgKzE0NCwxOSBAQCBzdGF0aWMg
Ym9vbCBnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYganNvblN0cmluZykKICAgICA6IG1fZXhlYyhleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSBqc29uVmFsdWUgPSBKU09OUGFyc2UoZXhlYywganNvblN0cmluZyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IWpzb25WYWx1ZSB8fCAhanNvblZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEpXSyBzZXJpYWxpemF0aW9uIikpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IEpXSyBzZXJpYWxpemF0aW9uIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9q
c29uLnNldChtX2V4ZWMtPnZtKCksIGFzT2JqZWN0KGpzb25WYWx1ZSkpOworICAgIG1fanNvbi5z
ZXQodm0sIGFzT2JqZWN0KGpzb25WYWx1ZSkpOwogfQogCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6On5KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0soKQpAQCAtMTY1LDYgKzE4MCw5IEBA
IHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3IKIAogT3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVB
bGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiBzdWdnZXN0ZWRBbGdvcml0aG0sIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMqIHN1Z2dlc3RlZFBhcmFtZXRlcnMpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJh
bGciLCBtX2p3a0FsZ29yaXRobU5hbWUpKSB7CiAgICAgICAgIC8vIEFsZ29yaXRobSBpcyBvcHRp
b25hbCBpbiBKV0suCiAgICAgICAgIHJldHVybiBDcnlwdG9BbGdvcml0aG1QYWlyIHsgc3VnZ2Vz
dGVkQWxnb3JpdGhtLCBzdWdnZXN0ZWRQYXJhbWV0ZXJzIH07CkBAIC0yMTYsNyArMjM0LDcgQEAg
T3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZQogICAgICAgICBhbGdvcml0
aG0gPSBhbGdvcml0aG1SZWdpc3R5LmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfS1cpOwogICAgICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzKTsKICAgICB9IGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4
ZWMsICJVbnN1cHBvcnRlZCBKV0sgYWxnb3JpdGhtICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGFs
Z29yaXRobSAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CiAgICAgfQogCkBAIC0yNTQsOSArMjcyLDEyIEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBh
aXI+IEpTQ3J5cHRvS2UKIAogc3RhdGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBDcnlwdG9LZXlVc2FnZSYgdXNhZ2VzLCBjb25zdCBTdHJpbmcmIG9wZXJhdGlvbiwg
Y29uc3QgU3RyaW5nJiB0cnlPcGVyYXRpb24sIENyeXB0b0tleVVzYWdlIHRyeVVzYWdlKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKG9wZXJhdGlvbiA9PSB0cnlPcGVyYXRpb24pIHsKICAgICAg
ICAgaWYgKHVzYWdlcyAmIHRyeVVzYWdlKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJh
dGlvbiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJhdGlvbiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICB1c2FnZXMgfD0gdHJ5
VXNhZ2U7CkBAIC0yNjYsNiArMjg3LDkgQEAgc3RhdGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUo
RXhlY1N0YXRlKgogCiB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxl
VXNhZ2VzKENyeXB0b0tleVVzYWdlJiBzdWdnZXN0ZWRVc2FnZXMpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIENyeXB0b0tleVVzYWdlIGp3a1VzYWdlcyA9IDA7CiAKICAgICBKU0FycmF5
KiBrZXlPcHM7CkBAIC0yNzUsNyArMjk5LDcgQEAgdm9pZCBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OnJlY29uYwogICAgICAgICAgICAgU3RyaW5nIG9wZXJhdGlvbjsKICAgICAgICAgICAg
IGlmICghanNWYWx1ZS5nZXRTdHJpbmcobV9leGVjLCBvcGVyYXRpb24pKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRl
IGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQiKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRl
IGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCF0cnlKV0tLZXlPcHNWYWx1ZShtX2V4ZWMsIGp3
a1VzYWdlcywgb3BlcmF0aW9uLCBBU0NJSUxpdGVyYWwoInNpZ24iKSwgQ3J5cHRvS2V5VXNhZ2VT
aWduKSkKQEAgLTMxMCw3ICszMzQsNyBAQCB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpX
Szo6cmVjb25jCiAgICAgICAgIGVsc2UgaWYgKGp3a1VzZVN0cmluZyA9PSAic2lnIikKICAgICAg
ICAgICAgIGp3a1VzYWdlcyB8PSAoQ3J5cHRvS2V5VXNhZ2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VW
ZXJpZnkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
YywgIlVuc3VwcG9ydGVkIEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3a1VzZVN0cmluZyArICJc
IiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIlVuc3VwcG9y
dGVkIEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3a1VzZVN0cmluZyArICJcIiIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzYyLDIxICszODYsMjQgQEAgYm9v
bCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleVNpegogCiBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhT2N0ZXRT
ZXF1ZW5jZSgpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBrZXlCYXNlNjRV
Ukw7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImsi
LCBrZXlCYXNlNjRVUkwpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJTZWNyZXQg
a2V5IGRhdGEgaXMgbm90IHByZXNlbnQgaXMgSldLIikpOworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTZWNyZXQga2V5IGRhdGEgaXMgbm90
IHByZXNlbnQgaXMgSldLIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gb2N0ZXRTZXF1ZW5jZTsKICAgICBpZiAoIWJhc2U2NFVSTERlY29k
ZShrZXlCYXNlNjRVUkwsIG9jdGV0U2VxdWVuY2UpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBp
biBKV0siKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG9jdGV0
U2VxdWVuY2Uuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAi
S2V5IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIktleSBzaXplIGlzIG5vdCB2YWxpZCBm
b3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtMzg1LDI0ICs0MTIsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+
IEpTQ3J5cHRvSwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLOjprZXlEYXRhUlNBQ29tcG9uZW50cygpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFZlY3Rvcjx1aW50OF90PiBtb2R1bHVzOwogICAgIFZlY3Rvcjx1aW50OF90
PiBleHBvbmVudDsKICAgICBWZWN0b3I8dWludDhfdD4gcHJpdmF0ZUV4cG9uZW50OwogCiAgICAg
aWYgKCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJu
IiwgbW9kdWx1cykpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpX
SyBcIm5cIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiblwiIG1lbWJlciBp
cyBtaXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAo
IWtleVNpemVJc1ZhbGlkKG1vZHVsdXMuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IobV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0
aG1OYW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIktleSBzaXpl
IGlzIG5vdCB2YWxpZCBmb3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09O
KG1fZXhlYywgbV9qc29uLmdldCgpLCAiZSIsIGV4cG9uZW50KSkgewogICAgICAgICBpZiAoIW1f
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZXF1aXJlZCBKV0sgXCJlXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtNDU4LDIyICs0ODgsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0tleURhdGE+IEpTQ3J5cHRvSwogICAgICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAoIWVsZW1lbnQuaXNP
YmplY3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVy
YWwoIkpXSyBcIm90aFwiIGFycmF5IG1lbWJlciBpcyBub3QgYW4gb2JqZWN0IikpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgXCJv
dGhcIiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZy
b21KU09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJyIiwgaW5mby5wcmltZUZhY3Rvcikp
IHsKICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBwcmlt
ZSBmYWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGdldCBwcmltZSBmYWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFnZXRC
aWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBhc09iamVjdChlbGVtZW50KSwgImQiLCBp
bmZvLmZhY3RvckNSVEV4cG9uZW50KSkgewogICAgICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlM
aXRlcmFsKCJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgZXhwb25lbnQgZm9yIGEgcHJpbWUgaW4gXCJv
dGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9uZW50IGZv
ciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21K
U09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJ0IiwgaW5mby5mYWN0b3JDUlRDb2VmZmlj
aWVudCkpIHsKICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdl
dCBmYWN0b3IgQ1JUIGNvZWZmaWNpZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFy
eSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmltZSBp
biBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQogICAgICAgICBvdGhlclByaW1lSW5mb3MuYXBwZW5kKGluZm8pOwpAQCAtNDg0LDEw
ICs1MTQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvSwogCiBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldL
OjprZXlEYXRhKCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGp3a0tleVR5
cGU7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImt0
eSIsIGp3a0tleVR5cGUpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJl
ZCBKV0sgXCJrdHlcIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwia3R5XCIg
bWVtYmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtNDk3LDcgKzUzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0
b0sKICAgICBpZiAoandrS2V5VHlwZSA9PSAiUlNBIikKICAgICAgICAgcmV0dXJuIGtleURhdGFS
U0FDb21wb25lbnRzKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRl
ZCBKV0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOworICAgIHRocm93VHlwZUVycm9yKG1fZXhl
Yywgc2NvcGUsICJVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC01NjAsNiArNTkzLDkgQEAgc3RhdGljIHZvaWQgYWRk
Qm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgdm9pZCBhZGRKV0tBbGdvcml0aG1U
b0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgQ3J5cHRvS2V5JiBr
ZXkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgandrQWxnb3JpdGhtOwogICAgIHN3aXRj
aCAoa2V5LmFsZ29yaXRobUlkZW50aWZpZXIoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6SE1BQzoKQEAgLTY1Miw3ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBhZGRKV0tB
bGdvcml0aG1Ub0pTT04oRXhlY1N0CiAKICAgICBpZiAoandrQWxnb3JpdGhtLmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIFRoZSBzcGVjIGRvZXNuJ3QgY3VycmVudGx5IHRlbGwgd2hldGhlciBleHBv
cnQgc2hvdWxkIGZhaWwsIG9yIGp1c3Qgc2tpcCAiYWxnIiAod2hpY2ggaXMgYW4gb3B0aW9uYWwg
a2V5IGluIEpXSykuCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
S2V5IGFsZ29yaXRobSBhbmQgc2l6ZSBkbyBub3QgbWFwIHRvIGFueSBKV0sgYWxnb3JpdGhtIGlk
ZW50aWZpZXIiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIktleSBhbGdvcml0aG0gYW5kIHNpemUgZG8gbm90IG1hcCB0byBhbnkgSldLIGFsZ29y
aXRobSBpZGVudGlmaWVyIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02ODksMTAg
KzcyNSwxMyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pTT04oRXhlY1N0YXRlKiBlCiAKIFN0
cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IENyeXB0b0tleSYga2V5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0tleURhdGE+IGtleURhdGEgPSBrZXkuZXhwb3J0RGF0YSgpOwogICAgIGlm
ICgha2V5RGF0YSkgewogICAgICAgICAvLyBUaGlzIGdlbmVyYWxseSBzaG91bGRuJ3QgaGFwcGVu
IGFzIGxvbmcgYXMgYWxsIGtleSB0eXBlcyBpbXBsZW1lbnQgZXhwb3J0RGF0YSgpLCBidXQgYXMg
dW5kZXJseWluZyBsaWJyYXJpZXMgcmV0dXJuIGVycm9ycywgdGhlcmUgbWF5IGJlIHNvbWUgcmFy
ZSBmYWlsdXJlIGNvbmRpdGlvbnMuCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBt
YXRlcmlhbCIpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIApAQCAtNzEzLDcg
Kzc1Miw3IEBAIFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmkKICAgICBl
bHNlIGlmIChpczxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpKQogICAgICAg
ICBidWlsZEpTT05Gb3JSU0FDb21wb25lbnRzKGV4ZWMsIGRvd25jYXN0PENyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzPigqa2V5RGF0YSksIHJlc3VsdCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiS2V5IGRvZXNuJ3Qgc3VwcG9ydCBleHBv
cnRLZXkiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIktleSBkb2Vzbid0IHN1cHBvcnQgZXhwb3J0S2V5IikpOwogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgfQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9PcGVyYXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTIgKzM2LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogYm9vbCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJiByZXN1bHQp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHRvQXJyYXlC
dWZmZXIodmFsdWUpKQogICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
ZWxzZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRvQXJyYXlCdWZm
ZXJWaWV3KHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRl
TGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNh
biBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiT25seSBBcnJheUJ1ZmZlciBhbmQgQXJy
YXlCdWZmZXJWaWV3IG9iamVjdHMgY2FuIGJlIHBhc3NlZCBhcyBDcnlwdG9PcGVyYXRpb25EYXRh
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA5LDcg
KzEwOSw5IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgp
KTsKKyAgICBWTSYgdm0gPSBtX2lzb2xhdGVkV29ybGQtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIGlmICghbV9jb25zdHJ1Y3RvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDcgKzE0Niw3
IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKIAogICAgIEVsZW1l
bnQqIHdyYXBwZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50
KTsKICAgICBpZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50
KSB7Ci0gICAgICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoKnN0YXRlLCAiQ3VzdG9tIGVsZW1l
bnQgY29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOworICAgICAgICB0
aHJvd0ludmFsaWRTdGF0ZUVycm9yKCpzdGF0ZSwgc2NvcGUsICJDdXN0b20gZWxlbWVudCBjb25z
dHJ1Y3RvciBmYWlsZWQgdG8gdXBncmFkZSBhbiBlbGVtZW50Iik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgd3JhcHBlZEVsZW1lbnQtPnNldEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVkKCp0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIEpTT2JqZWN0KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soRXhlY1N0YXRl
JiBzdGF0ZSwgSlNPYmplY3QmIHByb3RvdHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWQpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJvdG90eXBlLmdldCgmc3RhdGUs
IGlkKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGlmIChjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBpZiAoIWNhbGxiYWNrLmlzRnVuY3Rpb24oKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20gZWxlbWVudCBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20gZWxlbWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gY2Fs
bGJhY2suZ2V0T2JqZWN0KCk7CkBAIC01Niw4ICs1OSwxMSBAQCBzdGF0aWMgSlNPYmplY3QqIGdl
dEN1c3RvbUVsZW1lbnRDYWxsYmFjCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNk
b20tY3VzdG9tZWxlbWVudHJlZ2lzdHJ5LWRlZmluZQogSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZGVmaW5lKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEF0b21p
Y1N0cmluZyBsb2NhbE5hbWUoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0
YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTY1LDcgKzcxLDcgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZGVmaW5lKAogCiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3Ry
dWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhl
IHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiKSk7CiAgICAgSlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JWYWx1ZS5nZXRPYmplY3QoKTsKIAogICAgIC8vIEZJ
WE1FOiBUaHJvdyBhIFR5cGVFcnJvciBpZiBjb25zdHJ1Y3RvciBkb2Vzbid0IGluaGVyaXQgZnJv
bSBIVE1MRWxlbWVudC4KQEAgLTc1LDExICs4MSwxMSBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpkZWZpbmUoCiAgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25T
dGF0dXM6OlZhbGlkOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1l
VmFsaWRhdGlvblN0YXR1czo6Q29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczoKLSAgICAgICAgcmV0
dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50
IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWls
dGluIGVsZW1lbnRzIikpOwogICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3Rh
dHVzOjpOb0h5cGhlbjoKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikp
OworICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOwogICAg
IGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpDb250YWluc1VwcGVyQ2Fz
ZToKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3QgY29udGFpbiBhbiB1cHBlciBjYXNl
IGxldHRlciIpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgcmUtZW50cmFuY3kgaGVy
ZS4KQEAgLTg3LDIxICs5MywyMCBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpk
ZWZpbmUoCiAKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkmIHJlZ2lzdHJ5ID0gd3JhcHBlZCgp
OwogICAgIGlmIChyZWdpc3RyeS5maW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpIHsKLSAgICAgICAg
dGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5l
IG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1lIikpOworICAg
ICAgICB0aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJD
YW5ub3QgZGVmaW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBu
YW1lIikpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAo
cmVnaXN0cnkuY29udGFpbnNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgdGhy
b3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11
bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOworICAgICAgICB0
aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
ZGVmaW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBhdXRvJiB2bSA9IGds
b2JhbE9iamVjdCgpLT52bSgpOwogICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjb25zdHJ1
Y3Rvci0+Z2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IGlmICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rvcidz
IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IncyBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3QiKSk7CiAgICAgSlNPYmplY3QmIHBy
b3RvdHlwZU9iamVjdCA9ICphc09iamVjdChwcm90b3R5cGVWYWx1ZSk7CiAKICAgICBRdWFsaWZp
ZWROYW1lIG5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFj
ZVVSSSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOCwxOCArMzM4LDI0IEBAIEpTVmFsdWUg
Y3JlYXRlRE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXgKIAogdm9pZCBzZXRET01FeGNlcHRpb24o
RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb25Db2RlIGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCFlYyB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywg
ZWMpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKSk7CiB9CiAKIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCFlYy5jb2RlIHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2Vw
dGlvbihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7
CiB9CiAKICN1bmRlZiBUUllfVE9fQ1JFQVRFX0VYQ0VQVElPTgpAQCAtNDMwLDEzICs0MzYsMTYg
QEAgc3RhdGljIFN0cmluZyByYW5nZUVycm9yU3RyaW5nKGRvdWJsZSB2YQogCiBzdGF0aWMgZG91
YmxlIGVuZm9yY2VSYW5nZShFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgeCwgZG91YmxlIG1pbmlt
dW0sIGRvdWJsZSBtYXhpbXVtKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0ZDo6aXNuYW4o
eCkgfHwgc3RkOjppc2luZih4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHJh
bmdlRXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHNjb3BlLCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0p
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHggPSB0cnVuYyh4KTsKICAgICBpZiAo
eCA8IG1pbmltdW0gfHwgeCA+IG1heGltdW0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0pKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBt
YXhpbXVtKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4geDsKQEAgLTQ3
NSw2ICs0ODQsOSBAQCBzdHJ1Y3QgSW50VHlwZUxpbWl0czx1aW50MTZfdD4gewogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NpZ25l
ZDxUPjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25seSBi
ZSB1c2VkIGZvciBzaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVkZWYgSW50VHlw
ZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBzdGF0aWMgaW5saW5l
IFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgCiAgICAgICAgIGNhc2UgTm9ybWFsQ29udmVyc2lv
bjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVuZm9yY2VSYW5nZToKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENs
YW1wOgogICAgICAgICAgICAgcmV0dXJuIGQgPCBMaW1pdHNUcmFpdDo6bWluVmFsdWUgPyBMaW1p
dHNUcmFpdDo6bWluVmFsdWUgOiBMaW1pdHNUcmFpdDo6bWF4VmFsdWU7CkBAIC01MjEsNiArNTMz
LDkgQEAgc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUmIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNp
Z25lZDxUPjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25s
eSBiZSB1c2VkIGZvciB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlcyIpOwogCiAgICAgdHlwZWRlZiBJ
bnRUeXBlTGltaXRzPFQ+IExpbWl0c1RyYWl0OwpAQCAtNTMzLDcgKzU0OCw3IEBAIHN0YXRpYyBp
bmxpbmUgVCB0b1NtYWxsZXJVSW50KEV4ZWNTdGF0ZSYKICAgICAgICAgY2FzZSBOb3JtYWxDb252
ZXJzaW9uOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGQpOwogICAgICAgICBj
YXNlIEVuZm9yY2VSYW5nZToKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBjYXNlIENsYW1wOgogICAgICAgICAgICAgcmV0dXJuIExpbWl0c1Ry
YWl0OjptYXhWYWx1ZTsKQEAgLTc2Miw2ICs3NzcsOSBAQCBET01XaW5kb3cmIGZpcnN0RE9NV2lu
ZG93KEV4ZWNTdGF0ZSogZXhlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVu
dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2VjdXJp
dHlSZXBvcnRpbmdPcHRpb24gcmVwb3J0aW5nT3B0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghdGFyZ2V0RG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzcyLDcg
Kzc5MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0MKIAogICAg
IHN3aXRjaCAocmVwb3J0aW5nT3B0aW9uKSB7CiAgICAgY2FzZSBUaHJvd1NlY3VyaXR5RXJyb3I6
Ci0gICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHRhcmdldERvY3VtZW50LT5kb21X
aW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CisgICAgICAg
IHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHNjb3BlLCB0YXJnZXREb2N1bWVudC0+ZG9tV2lu
ZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIExvZ1NlY3VyaXR5RXJyb3I6CiAgICAgICAgIHByaW50RXJyb3JNZXNz
YWdlRm9yRnJhbWUodGFyZ2V0RG9jdW1lbnQtPmZyYW1lKCksIHRhcmdldERvY3VtZW50LT5kb21X
aW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CkBAIC03OTks
OSArODE3LDkgQEAgYm9vbCBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVAogICAg
IHJldHVybiB0YXJnZXQgJiYgY2FuQWNjZXNzRG9jdW1lbnQoc3RhdGUsICZ0YXJnZXQtPmRvY3Vt
ZW50KCksIExvZ1NlY3VyaXR5RXJyb3IpOwogfQogICAgIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHRocm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGVycm9yTWVz
c2FnZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgZXJyb3JN
ZXNzYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXJndW1lbnRNdXN0QmUoU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1l
bnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUpCkBAIC04MzYsNzUgKzg1NCw3NSBAQCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJv
cihKU0M6OkV4CiAgICAgY29udGV4dC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IHNldCBwcm9wZXJ0eSAnIiwgYXR0cmlidXRlTmFtZSwgIicgb24gYSBub24tIiwgaW50ZXJmYWNl
TmFtZSwgIiBvYmplY3QuIikpOwogfQogCi12b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCB0aHJvd05vdFN1
cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlv
bigpKTsKICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdlKTsKLSAgICBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NV
UFBPUlRFRF9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZt
ZXNzYWdlU3RyaW5nKSk7CiB9CiAKLXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit2b2lkIHRocm93SW52YWxpZFN0
YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBj
b25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghc3RhdGUuaGFkRXhjZXB0aW9uKCkp
OwogICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nKG1lc3NhZ2UpOwotICAgIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NU
QVRFX0VSUiwgJm1lc3NhZ2VTdHJpbmcpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUiwgJm1lc3Nh
Z2VTdHJpbmcpKTsKIH0KIAotdm9pZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIHRocm93U2VjdXJpdHlFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKLSAgICBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0
ZSwgU0VDVVJJVFlfRVJSLCBtZXNzYWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgU0VDVVJJVFlfRVJSLCBtZXNzYWdlKSk7
CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIq
IGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQorSlNDOjpFbmNv
ZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCiB7
CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1
aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1l
LCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgib25lIG9mOiAiKTsK
ICAgICBidWlsZGVyLmFwcGVuZChleHBlY3RlZFZhbHVlcyk7Ci0gICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVu
dE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBh
cmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKIHsKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRl
eCwgYXJndW1lbnROYW1lLCBpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiYSBmdW5jdGlvbiIpOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcigmc3RhdGUsIHNjb3BlLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIHRocm93QXJndW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1
bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFR5cGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1
bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFR5cGUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAg
IGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFt
ZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiYW4gaW5zdGFuY2Ugb2YgIik7CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0
ZWRUeXBlKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9T
dHJpbmcoKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgYnVp
bGRlci50b1N0cmluZygpKTsKIH0KIAotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlw
ZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CiB9CiAKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCit2b2lk
IHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0
cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQogewotICAgIHRocm93VHlwZUVy
cm9yKHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1
dGVOYW1lLCAiIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICIsIGV4cGVjdGVkVHlw
ZSkpOworICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIs
IGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBh
biBpbnN0YW5jZSBvZiAiLCBleHBlY3RlZFR5cGUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1
ZSB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQorSlNDOjpF
bmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZh
aWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
JnN0YXRlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNl
TmFtZSwgIiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZh
aWxhYmxlIikpKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZVJlZmVyZW5jZUVycm9yKCZzdGF0ZSwgbWFrZVN0cmluZyhpbnRlcmZhY2VOYW1lLCAiIGNvbnN0
cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKSkpOwog
fQogCi12b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQor
dm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiB9CiAK
LXZvaWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhy
b3dOb25GaW5pdGVUeXBlRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHBy
b3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZSIp
KTsKIH0KIAogU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCkBAIC05MTIsMTQgKzkzMCwx
NCBAQCBTdHJpbmcgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29uc3QgCiAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUp
OwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0
cmlidXRlTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoaW50ZXJm
YWNlTmFtZSwgYXR0cmlidXRlTmFtZSkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUsIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGF0
dHJpYnV0ZU5hbWUpKTsKIH0KIAotYm9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUpCitib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogYXR0cmlidXRlTmFtZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFr
ZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOwor
ICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVy
ZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtOTI4LDkgKzk0Niw5IEBAIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29u
c3QgY2gKICAgICByZXR1cm4gbWFrZVN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCBpbnRlcmZhY2VO
YW1lLCAnLicsIGZ1bmN0aW9uTmFtZSwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFt
ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSkKK0VuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
c3RhdGUsIG1ha2VUaGlzVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5h
bWUpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBtYWtlVGhpc1R5
cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHZvaWQg
Y2FsbEZ1bmN0aW9uV2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTT2JqZWN0JiB0aGlzT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb24mIGZ1bmN0aW9uKQpAQCAt
OTU1LDcgKzk3Myw5IEBAIHZvaWQgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2kK
IAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIikpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvbnN0cnVjdG9y
IHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywyNSArMTEzLDI1IEBAIERPTVdp
bmRvdyYgZmlyc3RET01XaW5kb3coSlNDOjpFeGVjU3RhdGUKIFdFQkNPUkVfRVhQT1JUIEpTQzo6
RW5jb2RlZEpTVmFsdWUgcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7
CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0
ZU5hbWUpOwogCi12b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKLXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5
cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwotdm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0
dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCB2
b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLXZvaWQg
dGhyb3dTZWN1cml0eUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKLQotV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVz
dEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6
OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUpOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRV
bmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSk7Cit2b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRo
cm93U2NvcGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhyb3dJbnZhbGlkU3RhdGVF
cnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpOwordm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6VGhyb3dTY29wZSYpOwordm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0
IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OlRocm93U2NvcGUmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgdGhy
b3dOb25GaW5pdGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsK
K3ZvaWQgdGhyb3dTZWN1cml0eUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3Bl
JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpUaHJvd1Njb3BlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1l
bnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3Vt
ZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUpOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgdW5zaWdu
ZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRUeXBlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSk7CiAKIFN0cmluZyBtYWtl
R2V0dGVyVHlwZUVycm9yTWVzc2FnZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBhdHRyaWJ1dGVOYW1lKTsKIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiAKLVdF
QkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRy
aWJ1dGVOYW1lKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlz
VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFs
dWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUm
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsK
K1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1
Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvKik7CiBXRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01T
dHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlN0cnVjdHVyZSosIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKik7CkBAIC00OTAsOSArNDkwLDEyIEBAIGlubGluZSBpbnQzMl90IGZpbml0ZUlu
dDMyVmFsdWUoSlNDOjpKU1YKIC8vIFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNzZWQgb2JqZWN0IGlz
IGEgc2VxdWVuY2UgdHlwZSBwZXIgc2VjdGlvbiA0LjEuMTMgb2YgdGhlIFdlYklETCBzcGVjLgog
aW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywg
SlNDOjpKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogeworICAgIEpTQzo6Vk0mIHZt
ID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlm
ICghb2JqZWN0KSB7Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDQsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVj
dCogdG9KU1NlcXVlbmNlKEpTQzo6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KGxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5j
ZVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzE4LDI1ICs3MjEs
MzMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZG91YgogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0
aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKKyAg
ICBKU0M6OlZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhy
b3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+PigpOwogICAg
IH0KIAogICAgIFZlY3RvcjxSZWZQdHI8VD4+IHJlc3VsdDsKLSAgICBmb3JFYWNoSW5JdGVyYWJs
ZSgmZXhlYywgdmFsdWUsIFsmcmVzdWx0XShKU0M6OlZNJiwgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0M6OkpTVmFsdWUganNWYWx1ZSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKCZleGVjLCB2
YWx1ZSwgWyZyZXN1bHRdKEpTQzo6Vk0mIHZtLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6
SlNWYWx1ZSBqc1ZhbHVlKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgICAgICBpZiAoanNWYWx1ZS5pbmhlcml0cyhKU1Q6OmluZm8oKSkpCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKEpTVDo6dG9XcmFwcGVkKGpzVmFsdWUpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoKnN0YXRlKTsK
KyAgICAgICAgICAgIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKCpzdGF0ZSwgc2NvcGUpOwog
ICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZl
Y3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2Vx
dWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgot
ICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDUsNyArNDYsOSBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewotICAgICAgICBKU0M6OnRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAg
SlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgICAgIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBjb25zdHJ1Y3RvciIpKTsKICAgICAgICAgcmV0dXJuIEpT
Qzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNOdWxsKCkpOwogICAgIH0KIApAQCAtMjI2LDggKzIy
OSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpFCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQnVpbHRp
bkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjYWxsQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTT2JqZWN0KiBvYmplY3QpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAo
IW9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0VW5hdmFpbGFibGVFcnJvcihzdGF0ZSwgaW5mbygpLT5jbGFzc05hbWUpOworICAgICAg
ICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJs
ZUVycm9yKHN0YXRlLCBzY29wZSwgaW5mbygpLT5jbGFzc05hbWUpOwogICAgIHJldHVybiBjYWxs
Q29uc3RydWN0b3Ioc3RhdGUsICpvYmplY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDkg
KzczLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBFbmFibGVJZkZsb2EKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUPiBpbmxpbmUgVCogY29udmVydFdyYXBwZXJU
eXBlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJc051bGxhYmxl
IGlzTnVsbGFibGUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBUKiBvYmplY3QgPSBKU1Q6OnRv
V3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKCFvYmplY3QgJiYgKGlzTnVsbGFibGUgPT0gSXNOdWxs
YWJsZTo6Tm8gfHwgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpKQotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0yNzUsOSArMjc3LDExIEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252ZXJ0ZXI8VD4gewogICAgIHN0YXRp
YyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNo
b3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS50b051bWJlcigmc3RhdGUpOwogICAgICAg
ICBpZiAoYWxsb3cgPT0gU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vICYmIFVOTElLRUxZKCFzdGQ6
OmlzZmluaXRlKG51bWJlcikpKQotICAgICAgICAgICAgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Io
c3RhdGUpOworICAgICAgICAgICAgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KG51bWJlcik7CiAgICAgfQogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
Q2Fub24sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzMCw5ICsxMzEsMTIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZv
ckVhY2goSlNDOgogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBpdGVyYXRvckNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQg
a2luZCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQogeworICAgIEpTQzo6Vk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3RhdGUudGhp
c1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCBKU1dyYXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAgIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAqd3JhcHBlci0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVy
Pjo6Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNET01JdGVyYXRv
cjxKU1dyYXBwZXI+PihnbG9iYWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIs
IGtpbmQpKTsKIH0KQEAgLTE4MCw5ICsxODQsMTIgQEAgYXBwZW5kRm9yRWFjaEFyZ3VtZW50cyhK
U0M6OkV4ZWNTdGF0ZSYgcwogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gd3JhcHBl
ciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyYXBwZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCF3cmFwcGVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcihzdGF0ZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEpTV3JhcHBl
cjo6aW5mbygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUg
Y2FsbGJhY2sgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUuYXJndW1lbnQoMSk7CkBAIC0xOTAsNyArMTk3LDcgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOgogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CiAg
ICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNh
bGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gd3JhcHBl
ci0+d3JhcHBlZCgpLmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgd2hpbGUgKGF1dG8gdmFsdWUgPSBp
dGVyYXRvci5uZXh0KCkpIHsKQEAgLTIyNiw5ICsyMzMsMTIgQEAgSlNDOjpKU1ZhbHVlIEpTRE9N
SXRlcmF0b3I8SlNXcmFwcGVyPjo6bgogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNX
cmFwcGVyPjo6bmV4dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgSlNDOjpWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0b3I8
SlNXcmFwcGVyPio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAg
ICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3Qi
KSkpOworICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1J
dGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0
ZXJhdG9yLT5uZXh0KCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1dl
YktpdCgKIAogc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmlj
dGVkQWNjZXNzKEpTRE9NV2luZG93KiB0aGlzT2JqZWN0LCBGcmFtZSogZnJhbWUsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIFdlIGRvbid0IHdh
bnQgYW55IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBhIGZy
YW1lbGVzcyB3aW5kb3cKICAgICAvLyAoaS5lLiBvbmUgd2hvc2UgcGFnZSBnb3QgY2xvc2VkLCBv
ciB3aG9zZSBpZnJhbWUgZ290IHJlbW92ZWQpLgogICAgIC8vIEZJWE1FOiBUaGlzIGhhbmRsaW5n
IGZvciBmcmFtZWxlc3Mgd2luZG93cyBkdXBsaWNhdGVzIHNpbWlsYXIgYmVoYXZpb3VyIGZvciBj
cm9zcy1vcmlnaW4KQEAgLTEzNSw3ICsxMzgsNyBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd0dl
dE93blByb3BlcnR5U2xvCiAgICAgICAgIC8vIEZvciBhbnkgb3RoZXIgZW50cmllcyBpbiB0aGUg
c3RhdGljIHByb3BlcnR5IHRhYmxlLCBkZW55IGFjY2Vzcy4gKEVhcmx5IHJldHVybiBhbHNvIHBy
ZXZlbnRzCiAgICAgICAgIC8vIG5hbWVkIGdldHRlciBmcm9tIHJldHVybmluZyBmcmFtZXMgd2l0
aCBtYXRjaGluZyBuYW1lcyAtIHRoaXMgc2VlbXMgYSBsaXR0bGUgcXVlc3Rpb25hYmxlLCBzZWUK
ICAgICAgICAgLy8gRklYTUUgY29tbWVudCBvbiBwcm90b3R5cGUgc2VhcmNoIGJlbG93LikKLSAg
ICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0
aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBz
bG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNDks
NyArMTUyLDcgQEAgc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMs
IGVycm9yTWVzc2FnZSk7CisgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJy
b3JNZXNzYWdlKTsKICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMjMwLDYgKzIzMyw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dEJ5SW4KIAogYm9vbCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQzLDcgKzI0OSw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWMKICAgICAgICAgICAgICAgICByZXR1
cm4gcHV0UmVzdWx0OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhy
b3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM0LDggKzQ0MCwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBE
aWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2Rh
bERpYWxvZyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgdXJsU3Ry
aW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRl
LmFyZ3VtZW50KDApKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00NTUsOCAr
NDY0LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGUKIAogc3Rh
dGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0czsK
ICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKQEAgLTUwMiw4ICs1MTQsMTEgQEAg
SlNWYWx1ZSBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YQogCiBKU1ZhbHVlIEpTRE9N
V2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBlZCgpLmRv
Y3VtZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkg
OiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9
IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCks
IGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CkBAIC01MjQsOCArNTM5LDExIEBAIEpTVmFsdWUgSlNE
T01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXQKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0
SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/
IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVk
QWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgY29udGVudFNl
Y3VyaXR5UG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1
ZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
YXRhQ3VlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksMTAgKzQ5LDEz
IEBAIHZvaWQgSlNEYXRhQ3VlOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXQKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlJiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTsKICAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
ZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKIAogICAgIGRvdWJsZSBzdGFydFRpbWUo
ZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcigmZXhlYykpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLmhhZEV4Y2VwdGlvbigpKSkKQEAgLTY0LDEzICs2NywxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiRGF0YUN1ZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiRGF0YUN1ZSIpOwogCiAgICAgU3RyaW5nIHR5cGU7CiAjaWYgRU5B
QkxFKERBVEFDVUVfVkFMVUUpCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpID4gMykgewog
ICAgICAgICBpZiAoIWV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykuaXNTdHJpbmcoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDMsICJ0eXBlIiwgIkRh
dGFDdWUiLCBudWxscHRyLCAiRE9NU3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMywgInR5cGUiLCAiRGF0YUN1ZSIsIG51bGxw
dHIsICJET01TdHJpbmciKTsKICAgICAgICAgdHlwZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQo
MykuZ2V0U3RyaW5nKCZleGVjKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTc5LDkgKzE3OSwxMiBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0
CiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSwgUmVmUHRyPERPTVdpbmRvdz4mIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBhdXRvKiB3aW5kb3cgPSBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKCpzdGF0ZSwgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghd2luZG93KSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiRGljdGlvbmFyeSBtZW1iZXIg
aXMgbm90IG9mIHR5cGUgV2luZG93Iik7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiRGljdGlvbmFyeSBtZW1iZXIgaXMgbm90IG9mIHR5cGUgV2luZG93Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgcmVzdWx0ID0gd2luZG93OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzMCwxMiArMTMwLDE1IEBAIEpTVmFs
dWUgSlNEb2N1bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3QKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogSlNWYWx1ZSBKU0RvY3VtZW50OjpjcmVhdGVUb3VjaExpc3QoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gdG91Y2hMaXN0ID0gVG91Y2hMaXN0OjpjcmVh
dGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuYXJndW1lbnRDb3VudCgp
OyArK2kpIHsKICAgICAgICAgYXV0byogaXRlbSA9IEpTVG91Y2g6OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgaSwgInRv
dWNoZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0IiwgIlRvdWNoIikpOworICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgaSwgInRvdWNoZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0IiwgIlRv
dWNoIikpOwogCiAgICAgICAgIHRvdWNoTGlzdC0+YXBwZW5kKCppdGVtKTsKICAgICB9CkBAIC0x
NDUsOCArMTQ4LDExIEBAIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWMK
IAogSlNWYWx1ZSBKU0RvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVu
dENvdW50KCkgPCA0KSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIGF1dG8gY29udGV4dElkID0gc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsMTcgKzQzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0ZpbGUoRXhlY1N0YXRlJiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25z
dHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7
CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY29uc3RydWN0b3ItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
ZXhlYywgIkZpbGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkZpbGUiKTsKICAgICBB
U1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAogICAgIEpTVmFsdWUgYXJnID0gZXhlYy5h
cmd1bWVudCgwKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDAsICJmaWxlQml0cyIsICJGaWxlIiwg
bnVsbHB0ciwgInNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAwLCAiZmlsZUJpdHMiLCAiRmlsZSIsIG51bGxwdHIsICJzZXF1ZW5j
ZSIpOwogCiAgICAgdW5zaWduZWQgYmxvYlBhcnRzTGVuZ3RoID0gMDsKICAgICBKU09iamVjdCog
YmxvYlBhcnRzID0gdG9KU1NlcXVlbmNlKGV4ZWMsIGFyZywgYmxvYlBhcnRzTGVuZ3RoKTsKQEAg
LTYzLDcgKzY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwog
CiAgICAgYXJnID0gZXhlYy5hcmd1bWVudCgxKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDEsICJmaWxlbmFt
ZSIsICJGaWxlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMSwgImZpbGVuYW1lIiwgIkZpbGUiLCBudWxs
cHRyLCAiRE9NU3RyaW5nIik7CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBhcmcudG9XVEZTdHJp
bmcoJmV4ZWMpLnJlcGxhY2UoJy8nLCAnOicpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigp
KQpAQCAtNzYsNyArNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTCiAgICAgaWYgKCFhcmcuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBKU09iamVj
dCogZmlsZVByb3BlcnR5QmFnT2JqZWN0ID0gYXJnLmdldE9iamVjdCgpOwogICAgICAgICBpZiAo
IWZpbGVQcm9wZXJ0eUJhZ09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKGV4ZWMsIDIsICJvcHRpb25zIiwgIkZpbGUiLCBudWxscHRyLCAiRmlsZVByb3Bl
cnR5QmFnIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVj
LCBzY29wZSwgMiwgIm9wdGlvbnMiLCAiRmlsZSIsIG51bGxwdHIsICJGaWxlUHJvcGVydHlCYWci
KTsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBp
bml0aWFsaXplciBvYmplY3QuCiAgICAgICAgIEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KCZleGVj
LCBmaWxlUHJvcGVydHlCYWdPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQsOCArMTA0LDExIEBAIGJvb2wgSlNIVE1M
QWxsQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGUKIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0
aW9uOjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBhcmd1
bWVudCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50Lmlt
cGwoKSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9y
Y2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtNzEsOCArNzEsMTEgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250ZXh0QXR0
cmlidXRlcyhFeGVjUwogCiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQo
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNh
bnZhcyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CkBAIC05NCw4ICs5NywxMSBA
QCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoCiAKIEpTVmFsdWUgSlNI
VE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQo
KTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDYgKzE1Miw5IEBAIHN0YXRpYyBEb2N1
bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGUKIAogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6
b3BlbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gRm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBvdGhlciBicm93c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0
aGFuIDIgcGFyYW1ldGVycyB0byB0aGUgd2luZG93LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENv
dW50KCkgPiAyKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUo
KSkgewpAQCAtMTYxLDcgKzE2NCw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhl
Y1N0YXRlJiAKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRh
KTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbCgmc3RhdGUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHdyYXBwZXIsIEFyZ0xpc3QoJnN0YXRlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1l
bnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMzAgKzQz
LDMyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVj
U3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBq
c0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBBU1NFUlQo
anNDb25zdHJ1Y3Rvcik7CiAKICAgICBhdXRvKiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJu
IHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihl
eGVjLCAiSFRNTEVsZW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3Jp
cHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkhUTUxFbGVt
ZW50Iik7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBhdXRvJiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7CiAKICAgICBhdXRvKiB3aW5k
b3cgPSBkb2N1bWVudC5kb21XaW5kb3coKTsKICAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBu
b3QgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQg
aXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CiAKICAgICBhdXRv
KiByZWdpc3RyeSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFy
ZWdpc3RyeSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0
ZXJhbCgibmV3LnRhcmdldCBpcyBub3QgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rv
ciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IiKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLnZtKCk7CiAgICAgSlNWYWx1ZSBuZXdUYXJn
ZXRWYWx1ZSA9IGV4ZWMudGhpc1ZhbHVlKCk7CiAgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IG5l
d1RhcmdldFZhbHVlLmdldE9iamVjdCgpOwogICAgIGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSBy
ZWdpc3RyeS0+ZmluZEludGVyZmFjZShuZXdUYXJnZXQpOwogICAgIGlmICghZWxlbWVudEludGVy
ZmFjZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJh
bCgibmV3LnRhcmdldCBkb2VzIG5vdCBkZWZpbmUgYSBjdXN0b20gZWxlbWVudCIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5l
dy50YXJnZXQgZG9lcyBub3QgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiKSk7CiAKICAgICBpZiAo
IWVsZW1lbnRJbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVudCgpKSB7CiAgICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwpAQCAtODQsNyAr
ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBF
bGVtZW50KiBlbGVtZW50VG9VcGdyYWRlID0gZWxlbWVudEludGVyZmFjZS0+bGFzdEVsZW1lbnRJ
bkNvbnN0cnVjdGlvblN0YWNrKCk7CiAgICAgaWYgKCFlbGVtZW50VG9VcGdyYWRlKSB7Ci0gICAg
ICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgaW5z
dGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCBpbnNpZGUgaXRzIG93biBjb25zdHJjdXRvciBkdXJp
bmcgdXBncmFkZXMiKSk7CisgICAgICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5z
aWRlIGl0cyBvd24gY29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIikpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTU2LDggKzU2LDExIEBAIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6bmFtZUcKIAogSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpu
YW1lZEl0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3Rh
dGUpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNSw1NCArMzUsNzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKGlucHV0LnNlbGVjdGlvblN0YXJ0KCkpOwogfQog
CiB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigp
KQotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlucHV0LnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLnRv
SW50MzIoJnN0YXRlKSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rp
b25FbmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNl
bGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpz
TnVtYmVyKGlucHV0LnNlbGVjdGlvbkVuZCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAg
ICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAg
aW5wdXQuc2V0U2VsZWN0aW9uRW5kKHZhbHVlLnRvSW50MzIoJnN0YXRlKSk7CiB9CiAKIEpTVmFs
dWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
d3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0
ZSwgaW5wdXQuc2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIEpTSFRNTElucHV0RWxl
bWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBw
ZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTEsMTIgKzEwOSwxNSBAQCB2b2lkIEpT
SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRF
bGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0
LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAg
IGludCBzdGFydCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsK
ICAgICBpbnQgZW5kID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20u
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hp
c3RvcnlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw5ICs1NSwxMiBAQCBKU1ZhbHVlIEpT
SGlzdG9yeTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNo
U3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gYXJnQ291
bnQgPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ0NvdW50IDwg
MikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgMCwgMCk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtODYsOSArODksMTIgQEAgSlNWYWx1ZSBKU0hp
c3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFj
ZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGFyZ0Nv
dW50ID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdDb3VudCA8
IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKICAgICBhdXRvIGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksIDAsIDApOwogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWlj
aGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC00Nyw4ICs0OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAg
ICBTdHJpbmcgbmFtZSA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNTYsNyArNjAsNyBA
QCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlCiAKICAgICBKU1ZhbHVl
IG9wdGlvbnNWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOwogICAgIGlmICghb3B0aW9uc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIW9wdGlvbnNWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiTm90IGFuIG9iamVjdC4iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJOb3QgYW4gb2JqZWN0LiIp
OwogCiAgICAgSURCS2V5UGF0aCBrZXlQYXRoOwogICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDgsIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtNDYsMTAgKzQ2LDEzIEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBK
U0ltYWdlQ29uc3RydWN0b3I6OnAKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0ltYWdl
Q29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ltYWdl
Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGpzQ29uc3RydWN0b3ItPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Ioc3RhdGUsICJJ
bWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNl
RXJyb3Ioc3RhdGUsICJJbWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVu
YXZhaWxhYmxlIikpOwogCiAgICAgLy8gQ2FsbGluZyB0b0pTIG9uIHRoZSBkb2N1bWVudCBjYXVz
ZXMgdGhlIEpTIGRvY3VtZW50IHdyYXBwZXIgdG8gYmUKICAgICAvLyBhZGRlZCB0byB0aGUgd2lu
ZG93IG9iamVjdC4gVGhpcyBpcyBkb25lIHRvIGVuc3VyZSB0aGF0IEpTRG9jdW1lbnQ6OnZpc2l0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgp
OwpAQCAtNTUsNyArNTgsNyBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERl
bGVnCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHRocm93U2VjdXJpdHlFcnJv
cigqZXhlYywgbWVzc2FnZSk7CisgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwg
bWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNl
c0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDggKzM1
OCwxMSBAQCBzdGF0aWMgdm9pZCBwYXJzZUNvbnN0cmFpbnRzKGNvbnN0IERpY3RpCiAKIEpTVmFs
dWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1
dG8gY29uc3RyYWludHNEaWN0aW9uYXJ5ID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDEwICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEpTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRo
aXNWYWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5
cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMTAyLDEwICsxMDUsMTMgQEAgc3RhdGljIEpTVmFs
dWUgY2FwYWJpbGl0eVZhbHVlKGNvbnN0IENhcAogCiBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVh
bVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CiAgICAgSlNNZWRp
YVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhU3RyZWFtVHJh
Y2sqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiTWVkaWFT
dHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiTWVkaWFTdHJlYW1UcmFjayIs
ICJnZXRTZXR0aW5ncyIpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdCgmc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTksNiArNTksOSBAQCBKU0M6
OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoCiAKIHZvaWQgZmlsbE1lc3NhZ2VQ
b3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3Nh
Z2VQb3J0QXJyYXkmIHBvcnRBcnJheSwgQXJyYXlCdWZmZXJBcnJheSYgYXJyYXlCdWZmZXJzKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgLy8gQ29udmVydCBmcm9tIHRoZSBwYXNzZWQtaW4gSlMgYXJy
YXktbGlrZSBvYmplY3QgdG8gYSBNZXNzYWdlUG9ydEFycmF5LgogICAgIC8vIEFsc28gdmFsaWRh
dGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdl
YklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjLgogICAgIGlmICh2
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CkBAIC05NSw3ICs5OCw3IEBAIHZvaWQgZmlsbE1l
c3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUKICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyID0gdG9BcnJheUJ1ZmZlcih2YWx1ZSkpCiAgICAgICAgICAg
ICAgICAgYXJyYXlCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKGFycmF5QnVmZmVyKSk7CiAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTUwLDggKzUxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVCogaW1wbCkKICAgICB7CisgICAgICAgIEpT
Qzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJy
YXk7CiAgICAgICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJBcnJheTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw5IEBAIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpkZWMKIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERl
Y2lzaW9uUG9pbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgeyBjb252ZXJ0PHVpbnQ4X3Q+KHN0YXRlLCB2
YWx1ZSwgRW5mb3JjZVJhbmdlKSB9OwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzcsNyBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RGVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNpc2lvblBv
aW50IHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgU3RyaW5nOjpmb3JtYXQoIiV1IGlzIG5vdCBhIHZhbGlkIGRlY2lzaW9uUG9pbnQgdmFs
dWUuIiwgbmF0aXZlVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIHRvSlNWYWx1
ZShEZWNpc2lvbiBkZWNpc2lvbikKQEAgLTkxLDYgKzk0LDkgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIHRvSlNWYWx1ZShEZWNpc2lvbgogCiBzdGF0aWMgaW5saW5lIERlY2lzaW9uIHRvRGVjaXNp
b24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IHVpbnQ4X3QgbmF0aXZlVmFsdWUgeyBjb252ZXJ0PHVpbnQ4X3Q+KHN0YXRlLCB2YWx1ZSwgRW5m
b3JjZVJhbmdlKSB9OwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIERlY2lzaW9uOjpBbGxvdzsKQEAgLTEwMiw3ICsxMDgsNyBAQCBzdGF0aWMgaW5saW5lIERl
Y2lzaW9uIHRvRGVjaXNpb24oRXhlY1N0CiAgICAgICAgIHJldHVybiBkZWNpc2lvbjsKICAgICB9
CiAKLSAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3Qg
YSB2YWxpZCBkZWNpc2lvbiB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOworICAgIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNp
c2lvbiB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwogICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TW9kdWxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAzLDYgKzEwMyw5IEBAIEpTQzo6SlNJ
bnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjoKIAogSlNDOjpKU1ZhbHVlIEpTTW9kdWxl
TG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpT
Qzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IEpTTW9kdWxlUmVjb3JkLgogICAg
IC8vIE9uY2UgdGhlIHJlZmxlY3RpdmUgcGFydCBvZiB0aGUgbW9kdWxlIGxvYWRlciBpcyBzdXBw
b3J0ZWQsIHdlIHdpbGwgaGFuZGxlIGFyYml0cmFyeSB2YWx1ZXMuCiAgICAgLy8gaHR0cHM6Ly93
aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVnaXN0cnktcHJvdG90eXBlLXByb3ZpZGUKQEAgLTEx
NiwxMCArMTE5LDEwIEBAIEpTQzo6SlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlMK
ICAgICBlbHNlIGlmIChtb2R1bGVLZXlWYWx1ZS5pc1N0cmluZygpKQogICAgICAgICBzb3VyY2VV
cmwgPSBVUkwoVVJMKCksIGFzU3RyaW5nKG1vZHVsZUtleVZhbHVlKS0+dmFsdWUoZXhlYykpOwog
ICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJNb2R1bGUga2V5IGlzIG5vdCBTeW1ib2wgb3IgU3RyaW5nLiIpKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTW9k
dWxlIGtleSBpcyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKSk7CiAKICAgICBpZiAoIXNvdXJjZVVy
bC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiTW9kdWxlIGtleSBpcyBhbiBpbnZhbGlkIFVSTC4iKSk7CisgICAgICAgIHJl
dHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk1vZHVs
ZSBrZXkgaXMgYW4gaW52YWxpZCBVUkwuIikpOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBl
dmFsdWF0aW5nIG1vZHVsZSBjb2RlLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDQsMTkgKzQ1LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2Jz
ZXJ2ZXIoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZXhlYy5hcmd1
bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKCZleGVjLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMp
KTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLmdl
dE9iamVjdCgpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmICghb2JqZWN0IHx8IG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMs
IDAsICJjYWxsYmFjayIsICJNdXRhdGlvbk9ic2VydmVyIiwgbnVsbHB0ciwgIk11dGF0aW9uQ2Fs
bGJhY2siKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJNdXRhdGlvbk9ic2VydmVyIiwgbnVsbHB0ciwgIk11dGF0aW9u
Q2FsbGJhY2siKTsKIAogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0g
anNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAgICAgYXV0byBj
YWxsYmFjayA9IEpTTXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwganNDb25zdHJ1Y3Rv
ci0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBqc09ic2VydmVyID0gYXNPYmplY3Qo
dG9KU05ld2x5Q3JlYXRlZCgmZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIE11
dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKICAgICBQcml2YXRl
TmFtZSBwcm9wZXJ0eU5hbWU7Ci0gICAganNPYnNlcnZlci0+cHV0RGlyZWN0KGpzQ29uc3RydWN0
b3ItPmdsb2JhbE9iamVjdCgpLT52bSgpLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7CisgICAganNP
YnNlcnZlci0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc09ic2VydmVyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkt
MjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMiwxMyArMTEyLDE2IEBAIGJvb2wgSlNOb2RlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVIKIAogSlNWYWx1ZSBKU05vZGU6Omluc2VydEJlZm9yZShF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBKU1ZhbHVlIG5ld0NoaWxkVmFsdWUg
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvKiBuZXdDaGlsZCA9IEpTTm9k
ZTo6dG9XcmFwcGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2hpbGQp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAiaW5zZXJ0QmVmb3JlIiwgIk5vZGUiKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsIDAsICJub2RlIiwgIk5vZGUiLCAiaW5zZXJ0QmVmb3JlIiwgIk5vZGUiKSk7CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoVU5MSUtFTFkoIXdyYXBwZWQoKS5pbnNl
cnRCZWZvcmUoKm5ld0NoaWxkLCBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgxKSksIGVjKSkpIHsKQEAgLTEzMiwxNiArMTM1LDE5IEBAIEpTVmFsdWUgSlNOb2RlOjpp
bnNlcnRCZWZvcmUoRXhlY1N0YXRlJiAKIAogSlNWYWx1ZSBKU05vZGU6OnJlcGxhY2VDaGlsZChF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvKiBuZXdDaGlsZCA9IEpTTm9k
ZTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBKU1ZhbHVlIG9s
ZENoaWxkVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvKiBvbGRD
aGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKG9sZENoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghbmV3Q2hpbGQgfHwgIW9sZENoaWxkKSkgewogICAgICAgICBpZiAoIW5ld0NoaWxkKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0
YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgInJlcGxhY2VDaGlsZCIsICJOb2RlIikpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIDEs
ICJjaGlsZCIsICJOb2RlIiwgInJlcGxhY2VDaGlsZCIsICJOb2RlIikpOworICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgMSwgImNoaWxkIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7CiAgICAgfQog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0xNTYsMTAgKzE2MiwxMyBAQCBKU1ZhbHVl
IEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgCiAKIEpTVmFsdWUgSlNOb2RlOjpyZW1v
dmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBj
aGlsZFZhbHVlID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgYXV0byogY2hpbGQgPSBKU05vZGU6
OnRvV3JhcHBlZChjaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNoaWxkKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAw
LCAiY2hpbGQiLCAiTm9kZSIsICJyZW1vdmVDaGlsZCIsICJOb2RlIikpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAw
LCAiY2hpbGQiLCAiTm9kZSIsICJyZW1vdmVDaGlsZCIsICJOb2RlIikpOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKFVOTElLRUxZKCF3cmFwcGVkKCkucmVtb3ZlQ2hpbGQo
KmNoaWxkLCBlYykpKSB7CkBAIC0xNzMsMTAgKzE4MiwxMyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVt
b3ZlQ2hpbGQoRXhlY1N0YXRlJiBzCiAKIEpTVmFsdWUgSlNOb2RlOjphcHBlbmRDaGlsZChFeGVj
U3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBuZXdDaGlsZFZhbHVl
ID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgYXV0byBuZXdDaGlsZCA9IEpTTm9kZTo6dG9XcmFw
cGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2hpbGQpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIDAs
ICJub2RlIiwgIk5vZGUiLCAiYXBwZW5kQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
Im5vZGUiLCAiTm9kZSIsICJhcHBlbmRDaGlsZCIsICJOb2RlIikpOwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgaWYgKFVOTElLRUxZKCF3cmFwcGVkKCkuYXBwZW5kQ2hpbGQoKm5l
d0NoaWxkLCBlYykpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVG
aWx0ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIs
NyArNDIsOSBAQCB1aW50MTZfdCBKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogCiB7CiAg
ICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKKyAgICBWTSYgdm0gPSBt
X2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBFeGVjU3Rh
dGUqIHN0YXRlID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBAIC01NCw3ICs1Niw3IEBAIHVpbnQxNl90IEpTTm9k
ZUZpbHRlcjo6YWNjZXB0Tm9kZShOb2RlKiAKICAgICBKU1ZhbHVlIHZhbHVlID0gbV9kYXRhLT5p
bnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlv
bk9yT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiYWNjZXB0Tm9kZSIpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAg
IC8vIFJldGhyb3cgZXhjZXB0aW9uLgotICAgICAgICBzdGF0ZS0+dm0oKS50aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihzdGF0
ZSwgc2NvcGUsIHJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgICAgICByZXR1cm4gTm9kZUZpbHRl
cjo6RklMVEVSX1JFSkVDVDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC05NiwxMCArOTYs
MTIgQEAgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3RhdGUqIAogICAgIAogRW5j
b2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNIVE1MRWxlbWVudCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNPYmplY3Qq
IHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCB0aGlzT2JqZWN0KTsKICAg
ICBpZiAoIXNjcmlwdE9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTQgKzM3LDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFB1YmxpYyBKUyBSZWFkYWJsZVN0cmVhbVJlZGVyIGFuZCBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIGNhbGxiYWNrcy4KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVj
dG9yIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOworICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hvdWxkIG5vdCBiZSBjYWxsZWQg
ZGlyZWN0bHkiKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgCiAgICAgSlNSZWFkYWJsZVN0cmVhbSogc3RyZWFtID0ganNEeW5hbWljQ2FzdDxK
U1JlYWRhYmxlU3RyZWFtKj4oZXhlYy5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFzdHJlYW0pCi0g
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDAsICJzdHJlYW0iLCAi
UmVhZGFibGVTdHJlYW1SZWFkZXIiLCBudWxscHRyLCAiUmVhZGFibGVTdHJlYW0iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDAsICJzdHJlYW0i
LCAiUmVhZGFibGVTdHJlYW1SZWFkZXIiLCBudWxscHRyLCAiUmVhZGFibGVTdHJlYW0iKTsKIAog
ICAgIEpTVmFsdWUganNGdW5jdGlvbiA9IHN0cmVhbS0+Z2V0KCZleGVjLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZleGVjLCAiZ2V0UmVhZGVyIikpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC00NywxMyArNDgsMTYgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6dmFsdWUoRXhlY1N0YXRl
JiBzdAogCiB2b2lkIEpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHdyYXBwZWQoKS5pc1JlYWRPbmx5
KCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghdmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaXNOdW1iZXIoKSAmJiAhdmFsdWUuaXNCb29sZWFu
KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
Miw2ICs3Niw5IEBAIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3QKIAog
SlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VE
X0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtODAsNyArODcsNyBAQCBK
U1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVCiAgICAgU1ZHTGVuZ3RoJiBw
b2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKIAogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3LDggKzk3LDExIEBAIEpTVmFs
dWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTeW4KIAogSlNWYWx1ZSBKU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAg
cmV0dXJuIGV4ZWMudm0oKS50aHJvd0V4Y2VwdGlvbigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZleGVj
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKIAogICAgIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQg
cG5hbWUgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJmV4ZWMpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE3MCw4ICsxNzAsMTEgQEAgZW51bSBPYmplY3RUeXBlIHsKIAog
c3RhdGljIEpTVmFsdWUgZ2V0T2JqZWN0UGFyYW1ldGVyKEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSogb2JqLCBFeGVjU3RhdGUmIHN0YXRlLCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAg
ICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0ID0gb2JqLT53cmFwcGVkKCk7CkBAIC0yNzAsMTMgKzI3MywxNiBAQCB2b2lk
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBCiAKIEpTVmFsdWUgSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dl
YkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgVmVjdG9yPFJlZlB0cjxX
ZWJHTFNoYWRlcj4+IHNoYWRlcnM7CiAgICAgYm9vbCBzdWNjZWVkID0gY29udGV4dC5nZXRBdHRh
Y2hlZFNoYWRlcnMocHJvZ3JhbSwgc2hhZGVycywgZWMpOwogICAgIGlmIChlYykgewpAQCAtMjkz
LDggKzI5OSwxMSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAK
IEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRFeHRlbnNpb24oRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAgICAgCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcgbmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CkBAIC0zMTEsOCArMzIw
LDExIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSAhPSAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsK
QEAgLTMzNSw4ICszNDcsMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1l
bnRDb3VudCgpICE9IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwpAQCAtMzUz
LDE0ICszNjgsMTcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAog
CiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3Vt
ZW50Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlv
bigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBX
ZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50
b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTM3OSwxMyArMzk3LDE2IEBAIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmluaGVy
aXRzKEpTV2ViR0xTaGFkZXI6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7
CiAgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IEpTV2ViR0xTaGFkZXI6OnRvV3JhcHBlZChzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQpAQCAtNDE3LDE3ICs0MzgsMjAgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VW5pZm9ybShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsK
ICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBzY29wZSk7CiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0gSlNXZWJH
TFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsK
ICAgICBpZiAoIWxvY2F0aW9uICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdlYkdMR2V0
SW5mbyBpbmZvID0gY29udGV4dC5nZXRVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uLCBlYyk7CiAg
ICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKQEAgLTQ4
OCw4ICs1MTIsMTEgQEAgc3RhdGljIGJvb2wgZnVuY3Rpb25Gb3JVbmlmb3JtKERhdGFGdW5jdAog
CiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1bmN0aW9uVG9DYWxsIGYs
IEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikK
LSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IDA7CiAgICAg
bG9uZyBpbmRleCA9IC0xOwpAQCAtNDk3LDcgKzUyNCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUg
ZGF0YUZ1bmN0aW9uZihEYXRhRnUKICAgICBpZiAoZnVuY3Rpb25Gb3JVbmlmb3JtKGYpKSB7CiAg
ICAgICAgIGxvY2F0aW9uID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIH0gZWxzZQogICAgICAgICBpbmRleCA9IHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsKICAgICAKQEAgLTU0Myw3ICs1
NzAsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgCiAg
ICAgVmVjdG9yPGZsb2F0LCA2ND4gYXJyYXk7CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKICAgICAKICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgpAQCAt
NTc4LDEyICs2MDUsMTUgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFG
dQogCiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1bmN0aW9uVG9DYWxs
IGYsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0g
MikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwogICAgIAogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IEpTV2Vi
R0xVbmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRl
ZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAKICAgICBS
ZWZQdHI8SW50MzJBcnJheT4gd2ViR0xBcnJheSA9IHRvSW50MzJBcnJheShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgxKSk7CiAgICAgCkBAIC02MTMsNyArNjQzLDcgQEAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBkYXRhRnVuY3Rpb25pKERhdGFGdQogICAgIAogICAgIFZlY3RvcjxpbnQsIDY0PiBhcnJh
eTsKICAgICBpZiAoIXRvVmVjdG9yKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSwg
YXJyYXkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIAogICAgIHN3aXRjaCAo
ZikgewogICAgIGNhc2UgZl91bmlmb3JtMXY6CkBAIC02MzgsMTIgKzY2OCwxNSBAQCBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUg
ZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDMpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAK
ICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0
aW9uOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghbG9j
YXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgYm9vbCB0cmFuc3Bvc2Ug
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC02NzEsNyArNzA0LDcgQEAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgoRAogICAgIAogICAgIFZlY3RvcjxmbG9hdCwgNjQ+IGFy
cmF5OwogICAgIGlmICghdG9WZWN0b3Ioc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIp
LCBhcnJheSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgc3dpdGNo
IChmKSB7CiAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXgyZnY6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20u
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDYgKzc3LDkgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZUFsZwogCiBzdGF0aWMgYm9vbCBj
cnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
LCBDcnlwdG9LZXlGb3JtYXQmIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBr
ZXlGb3JtYXRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODksNyArOTIsNyBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShFCiAg
ICAgZWxzZSBpZiAoa2V5Rm9ybWF0U3RyaW5nID09ICJqd2siKQogICAgICAgICByZXN1bHQgPSBD
cnlwdG9LZXlGb3JtYXQ6OkpXSzsKICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIlVua25vd24ga2V5IGZvcm1hdCIpKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGtleSBmb3Jt
YXQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBA
IC05Nyw4ICsxMDAsMTEgQEAgc3RhdGljIGJvb2wgY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUo
RQogCiBzdGF0aWMgYm9vbCBjcnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZShFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9LZXlVc2FnZSYgcmVzdWx0KQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsOCArMTM4LDExIEBAIHN0YXRpYyBib29s
IGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKEUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0g
Y3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMTQ5LDcgKzE1OCw3IEBAIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXgKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+
IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkp
OwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYg
KCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZUVuY3J5cHQpKSB7CiAgICAgICAgIHdyYXBwZWQo
KS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdl
bmNyeXB0JyIpKTsKQEAgLTE4NSw4ICsxOTQsMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZW5jcnlwdChFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1l
bnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0
aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlm
ICghYWxnb3JpdGhtKSB7CkBAIC0yMDIsNyArMjE0LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6ZGVjcnlwdChFeAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlw
dG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFr
ZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dz
KENyeXB0b0tleVVzYWdlRGVjcnlwdCkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOwpA
QCAtMjM3LDggKzI0OSwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0
KEV4CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQot
ICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0
YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsK
QEAgLTI1NCw3ICsyNjksNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4
ZWNTCiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVk
KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VT
aWduKSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5
IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnc2lnbiciKSk7CkBAIC0yODksOCArMzA0LDExIEBAIEpT
VmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1MKIAogSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkKLSAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdv
cml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0zMDYsNyArMzI0LDcgQEAg
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZQogCiAgICAgUmVmUHRyPENy
eXB0b0tleT4ga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgxKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAK
ICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlVmVyaWZ5KSkgewogICAgICAgICB3
cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5j
bHVkZSAndmVyaWZ5JyIpKTsKQEAgLTM0Nyw4ICszNjUsMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1
YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZQogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpk
aWdlc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFs
Z29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTM4OSw4ICs0MTAsMTEgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4ZQogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
OjpnZW5lcmF0ZUtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0g
Y3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtNDQ1LDYgKzQ2OSw5IEBAIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2UKIAogc3RhdGljIHZvaWQgaW1wb3J0S2V5
KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJh
dGlvbkRhdGEgZGF0YSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtLCBSZWZQdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2Uga2V5VXNhZ2VzLCBDcnlwdG9BbGdvcml0aG06OktleUNhbGxiYWNrIGNh
bGxiYWNrLCBDcnlwdG9BbGdvcml0aG06OlZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5U2VyaWFsaXphdGlv
bj4ga2V5U2VyaWFsaXphdGlvbjsKICAgICBzd2l0Y2ggKGtleUZvcm1hdCkgewogICAgIGNhc2Ug
Q3J5cHRvS2V5Rm9ybWF0OjpSYXc6CkBAIC00NTMsNyArNDgwLDcgQEAgc3RhdGljIHZvaWQgaW1w
b3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKV0s6
IHsKICAgICAgICAgU3RyaW5nIGp3a1N0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoZGF0YS5maXJz
dCwgZGF0YS5zZWNvbmQpOwogICAgICAgICBpZiAoandrU3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSldLIEpTT04gc2Vy
aWFsaXphdGlvbiBpcyBub3QgdmFsaWQgVVRGLTgiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkpXSyBKU09OIHNlcmlhbGl6YXRpb24g
aXMgbm90IHZhbGlkIFVURi04IikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGtleVNlcmlhbGl6YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSz4oJnN0YXRlLCBqd2tTdHJpbmcpOwpAQCAtNDYyLDcgKzQ4OSw3IEBAIHN0
YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBpbXBvcnQiKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5
IGZvcm1hdCBmb3IgaW1wb3J0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzEs
NyArNDk4LDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAg
IE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZWRSZXN1bHQgPSBrZXlTZXJp
YWxpemF0aW9uLT5yZWNvbmNpbGVBbGdvcml0aG0oYWxnb3JpdGhtLmdldCgpLCBwYXJhbWV0ZXJz
LmdldCgpKTsKICAgICBpZiAoIXJlY29uY2lsZWRSZXN1bHQpIHsKICAgICAgICAgaWYgKCFzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJBbGdvcml0aG0gc3BlY2lmaWVkIGluIGtleSBpcyBub3QgY29tcGF0aWJsZSB3
aXRoIG9uZSBwYXNzZWQgdG8gaW1wb3J0S2V5IGFzIGFyZ3VtZW50IikpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBbGdvcml0aG0gc3Bl
Y2lmaWVkIGluIGtleSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIG9uZSBwYXNzZWQgdG8gaW1wb3J0
S2V5IGFzIGFyZ3VtZW50IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTQ4MCw3ICs1MDcsNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRL
ZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAgICAgYWxnb3JpdGhtID0gcmVjb25jaWxlZFJlc3VsdC0+
YWxnb3JpdGhtOwogICAgIHBhcmFtZXRlcnMgPSByZWNvbmNpbGVkUmVzdWx0LT5wYXJhbWV0ZXJz
OwogICAgIGlmICghYWxnb3JpdGhtKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJOZWl0aGVyIGtleSBub3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0
byBhbGdvcml0aG0gc3BlY2lmaWVkIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIk5laXRoZXIga2V5IG5vciBmdW5jdGlvbiBhcmd1bWVudCBo
YXMgY3J5cHRvIGFsZ29yaXRobSBzcGVjaWZpZWQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMpOwpAQCAtNTA1LDggKzUzMiwxMSBAQCBzdGF0aWMgdm9p
ZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVD
cnlwdG86OmltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1h
dCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwg
c3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTU2OCw4ICs1OTgsMTEgQEAgSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KAogCiBzdGF0aWMgdm9pZCBleHBv
cnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIENyeXB0b0FsZ29yaXRobTo6VmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ss
IENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICgha2V5LmV4dHJhY3RhYmxlKCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIktleSBpcyBub3QgZXh0cmFjdGFibGUiKSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiS2V5IGlz
IG5vdCBleHRyYWN0YWJsZSIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTkzLDE1
ICs2MjYsMTggQEAgc3RhdGljIHZvaWQgZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGV4cG9ydCIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJV
bnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgp
IDwgMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOwogCiAgICAgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdDsKICAgICBpZiAoIWNy
eXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwga2V5Rm9y
bWF0KSkgewpAQCAtNjExLDcgKzY0Nyw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmV4cG9ydEtleSgKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21p
c2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmpl
Y3QoKSk7CiAgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3Qo
KSwgcHJvbWlzZURlZmVycmVkKTsKQEAgLTYzMSw4ICs2NjcsMTEgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
Ojp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3Rh
dGUuYXJndW1lbnRDb3VudCgpIDwgNCkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgQ3J5cHRvS2V5Rm9ybWF0IGtleUZv
cm1hdDsKICAgICBpZiAoIWNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgwKSwga2V5Rm9ybWF0KSkgewpAQCAtNjQyLDExICs2ODEsMTEgQEAgSlNWYWx1ZSBK
U1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4g
a2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7
CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBSZWZQ
dHI8Q3J5cHRvS2V5PiB3cmFwcGluZ0tleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMikpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogCiAgICAgaWYgKCF3cmFwcGluZ0tleS0+YWxsb3dzKENyeXB0b0tleVVzYWdl
V3JhcEtleSkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwo
IktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikpOwpAQCAtNzAwLDggKzczOSwx
MSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4CiAKIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnVud3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDUpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9t
SlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTcxNyw3
ICs3NTksNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoCiAKICAg
ICBSZWZQdHI8Q3J5cHRvS2V5PiB1bndyYXBwaW5nS2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBl
ZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSk7CiAgICAgaWYgKCF1bndyYXBwaW5nS2V5KQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCF1bndyYXBwaW5nS2V5LT5h
bGxvd3MoQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBL
ZXknIikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3LDEwICs0NywxMyBAQCBKU0M6OkpTVmFs
dWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25z
dHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogCiAgICAgaWYgKCFleGVjLmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigm
ZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAg
ICBTdHJpbmcgc2NyaXB0VVJMID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmlu
ZygmZXhlYyk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDExLCAyMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODAsOCArODAsMTEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBv
cnRTY3JpcAogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFj
dGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmpl
Y3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC05NCw4ICs5NywxMSBAQCBKU1ZhbHVlIEpTV29y
a2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoCiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29w
ZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVh
dGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9u
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0OCw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxGdW5jdGlvbigKIAogSlNDOjpKU1ZhbHVlIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omludm9rZShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNPYmplY3QmIG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUgcGFyYW1ldGVyKQogewotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soJnN0YXRl
KTsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9jayh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgYXV0byBmdW5jdGlvbiA9IG9iamVjdC5nZXQoJnN0YXRlLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCBwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCkBAIC01NSw3ICs1OCw3IEBAIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm8KIAogICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7CiAgICAgICAgIGlm
ICghZnVuY3Rpb24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSB0cnlpbmcgdG8gY2FsbCBhIHByb3Bl
cnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSB0cnlpbmcgdG8gY2Fs
bCBhIHByb3BlcnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpOwogICAgICAgICByZXR1cm4gSlND
Ojpqc1VuZGVmaW5lZCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsNyArMzk0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9p
ZCB0aHJvd1N0YWNrT3ZlcmZsb3coKQogICAgIHsKLSAgICAgICAgbV9leGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKG1fZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOworICAg
ICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24obV9leGVjLCBzY29wZSwg
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwogICAgIH0KIAogICAgIHZvaWQgZmFp
bCgpCkBAIC0xNTcwLDcgKzE1NzIsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB0aHJvd1ZhbGlk
YXRpb25FcnJvcigpCiAgICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOworICAgICAgICBWTSYgdm0g
PSBtX2V4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uIDw9IEN1cnJlbnRWZXJzaW9uOyB9CkBAIC0y
NzU2LDE1ICsyNzYwLDE4IEBAIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3IKIAogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeGNlcHRpb25JZlNl
cmlhbGl6YXRpb25GYWlsZWQoRXhlY1N0YXRlKiBleGVjLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBjb2RlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29t
cGxldGVkKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAg
Y2FzZSBTdGFja092ZXJmbG93RXJyb3I6Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmFsaWRhdGlvbkVycm9yOgotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5h
YmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERh
dGFDbG9uZUVycm9yOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFUQV9DTE9ORV9F
UlIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMjYsMTEgKzEy
NiwxMiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgaW5p
dFNjcmlwdElmTmVlZGVkKCk7CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTQzo6ZXZh
bHVhdGUoZXhlYywgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogCi0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdF
eGVjdXRpb24oKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTQzLDcgKzE0NCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUoY28KICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJjZUNvZGUudXJsKCkuc3RyaW5n
KCk7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGVycm9yOwogICAgICAgICBpZiAo
bV93b3JrZXJHbG9iYWxTY29wZS0+c2FuaXRpemVTY3JpcHRFcnJvcihlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBlcnJvciwgc291cmNlQ29kZS5jYWNo
ZWRTY3JpcHQoKSkpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkpKTsKKyAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgp
KSk7CiAgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IHZtLmV4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgdm0uY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgfQpAQCAtMTUzLDcgKzE1NCw5
IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KIHZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24p
CiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
ci0+Z2xvYmFsRXhlYygpOwotICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhj
ZXB0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1
dGlvblRlcm1pbmF0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtOTA0LDkgKzkwNCwxMSBAQCBzdWIgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0
aW9uQ29uCiAKICAgICAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiAkY2xhc3NOYW1lIGNvbnZl
cnQ8JGNsYXNzTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAg
ICAgICRyZXN1bHQgLj0gIntcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpO1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2U8JGNsYXNzTmFtZT4oc3RhdGUsIHZhbHVlKTtcbiI7CiAgICAgICAg
ICRyZXN1bHQgLj0gIiAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHtcbiI7Ci0gICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTtcbiI7CisgICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiI7
CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuIHsgfTtcbiI7CiAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICB9XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJuIHJlc3Vs
dC52YWx1ZSgpO1xuIjsKQEAgLTEwMDksMTEgKzEwMTEsMTMgQEAgc3ViIEdlbmVyYXRlRGljdGlv
bmFyeUltcGxlbWVudGF0aW9uQ29udAogCiAgICAgICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4g
T3B0aW9uYWw8JGNsYXNzTmFtZT4gY29udmVydERpY3Rpb25hcnk8JGNsYXNzTmFtZT4oRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIntcbiI7
CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBWTSYgdm0gPSBzdGF0ZS52bSgpO1xuIjsKKyAgICAg
ICAgJHJlc3VsdCAuPSAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKVxuIiBpZiAkZGVmYXVsdFZhbHVlczsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAg
ICByZXR1cm4gJGNsYXNzTmFtZSB7ICIgLiAkZGVmYXVsdFZhbHVlcyAuICIgfTtcbiIgaWYgJGRl
ZmF1bHRWYWx1ZXM7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvKiBvYmplY3QgPSB2YWx1
ZS5nZXRPYmplY3QoKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBpZiAoVU5MSUtFTFko
IW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkge1xuIjsKLSAg
ICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpO1xuIjsKKyAg
ICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2Nv
cGUpO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4gTnVsbG9wdDtcbiI7
CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9XG4iOwogCkBAIC0xOTQxLDYgKzE5NDUsOSBAQCBz
dWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjCiAgICAgfQogICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7ICAgIAogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6
ZV90PigkbWF4QXJnQ291bnQsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogRU5ECiAKQEAgLTIw
MTUsOSArMjAyMiw5IEBAIEVORAogICAgIH0KICAgICBteSAkbWluQXJnQ291bnQgPSBHZXRGdW5j
dGlvbkxlbmd0aCgkZnVuY3Rpb24pOwogICAgIGlmICgkbWluQXJnQ291bnQgPiAwKSB7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBhcmdzQ291bnQgPCAkbWluQXJnQ291
bnQgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpCisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBhcmdzQ291bnQgPCAkbWluQXJnQ291bnQgPyB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpCiAgICAgfSBlbHNl
IHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpO1xuIikKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIikKICAgICB9CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMjgxMCw3ICsyODE3LDkgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpT
VmFsdWUgJHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7XG4iKTsKIAogICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0
YXRpYyB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsK
QEAgLTI4MjYsNyArMjgzNSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkxlbmllbnRUaGlzIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlz
aWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwi
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTMwMDcsOSArMzAxNiwxMSBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkVuY29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNz
TmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpXG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKIAogICAg
ICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZh
Y2VPYmplY3QifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpO1xuIik7CkBAIC0zMDI2LDEwICszMDM3
LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJib29sICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkge1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKIApAQCAtMzEwOSw2ICszMTIyLDkgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJib29sICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOyIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIp
IGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+
aXNTdGF0aWMpIHsKQEAgLTMxMjEsNyArMzEzNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNl
TmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1c
biIpOwogICAgICAgICAgICAgfQpAQCAtMzIxMCw3ICszMjI2LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChVTkxJS0VM
WSghbmF0aXZlVmFsdWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlwZVwiKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHRocm93QXR0cmli
dXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVc
IiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CkBAIC0zMjI5LDcgKzMyNDUs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgICAgaWYgKCRz
aG91bGRQYXNzQnlSZWZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHtcbiIpOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJHR5
cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJs
ZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzM5Nyw2ICszNDEzLDEwIEBAIEVORAogCiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKIAorICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKKwogICAgICAgICAgICAgaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ0VSZWFjdGlvbnMifSkgewogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShDVVNUT01fRUxFTUVO
VFMpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztcbiIpOwpAQCAt
MzcxNiw3ICszNzM2LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzCiAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3Qi
fSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRU
aGlzID0gdG8ke2NsYXNzTmFtZX0oc3RhdGUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhzdGF0ZSwgTm90
U3RyaWN0TW9kZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7XG4iKTsKICAgICAg
ICAgbXkgJGNhc3RpbmdIZWxwZXIgPSBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50
ZXJmYWNlKTsKQEAgLTM3MzIsNyArMzc1Miw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVk
VGhpcwogICAgICAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+
R2V0VmlzaWJsZUludGVyZmFjZU5hbWUoJGludGVyZmFjZSk7CiAgICAgICAgIG15ICRkb21GdW5j
dGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJGRvbUZ1bmN0aW9uTmFtZVwiKTtcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwi
JGRvbUZ1bmN0aW9uTmFtZVwiKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJHtjbGFzc05hbWV9
OjppbmZvKCkpO1xuIikgdW5sZXNzICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsK
QEAgLTM4MDAsNyArMzgyMCw3IEBAIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKICAg
ICBpZiAoJG51bU1hbmRhdG9yeVBhcmFtcyA+PSAxKQogICAgIHsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgJG51
bU1hbmRhdG9yeVBhcmFtcykpXG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOwogICAgIH0KIH0KIApAQCAtMzkyMiw3ICszOTQyLDcg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIXN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkuaXNPYmplY3QoKSlcbiIpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRl
LCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAk
cXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2li
bGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lID0gY3JlYXRlRnVuY3Rpb25Pbmx5
Q2FsbGJhY2s8JHtjYWxsYmFja0NsYXNzTmFtZX0+KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KCRhcmd1bWVudEluZGV4KSk7XG4iKTsKQEAgLTM5MzYsNyArMzk1Niw3IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoIXN0YXRl
LT5hcmd1bWVudCgkYXJndW1lbnRJbmRleCkuaXNPYmplY3QoKSkpXG4iKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRl
eCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25O
YW1lKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwg
JHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9u
LT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2Fs
bGJhY2tGdW5jdGlvbi5oIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvICRuYW1lID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8JHtjYWxsYmFj
a0NsYXNzTmFtZX0+KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudElu
ZGV4KSk7XG4iKTsKQEAgLTM5NTQsNyArMzk3NCw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVuc2ln
bmVkIGkgPSAkYXJndW1lbnRJbmRleCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBp
IDwgY291bnQ7ICsraSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICBhdXRvKiBpdGVtID0gSlMke3R5cGV9Ojp0b1dyYXBwZWQoc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgaWYgKCFpdGVtKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCBpLCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlv
bk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsIGksIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3Rl
ZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUudW5jaGVja2VkQXBwZW5kKGl0ZW0pO1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpCiAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtMzk5Nyw3ICs0MDE3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAg
IGlmIChVTkxJS0VMWSghJG9wdGlvbmFsVmFsdWUpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVu
dW1FcnJvcigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRl
cmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8JGNsYXNzTmFtZT4oKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiRpbmRlbnQgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVy
ZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
czwkY2xhc3NOYW1lPigpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
JGluZGVudCAgICAkbmFtZSA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTtcbiIpIGlmICRvcHRpb25h
bFZhbHVlIG5lICRuYW1lOwogCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
fVxuIikgaWYgJGluZGVudCBuZSAiIjsKQEAgLTQwMjEsNyArNDA0MSw3IEBAIHN1YiBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgaWYgKFVOTElLRUxZKCEkbmFtZSkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIs
IFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVc
Iik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7
CiAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKICAgICAgICAgICAg
IH0gZWxzZSB7CkBAIC00MDY3LDcgKzQwODcsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKIAogICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVuY2UpIHsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCEkbmFtZSkpXG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwg
XCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwi
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJndW1lbnRJ
bmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rp
b25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgJHZhbHVlID0gJGlzVGVh
ck9mZiA/ICIkbmFtZS0+cHJvcGVydHlSZWZlcmVuY2UoKSIgOiAiKiRuYW1lIjsKICAgICAgICAg
ICAgIH0KIApAQCAtNTI0MywxNCArNTI2MywxNiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRl
ZmluaXRpb24KICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOwogdGVtcGxh
dGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9
Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBh
dXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oc3Rh
dGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoanNDb25zdHJ1Y3Rvcik7CiAKICAgICBpZiAoIWpz
Q29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3Rh
dGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7CisgICAgICAgIHJldHVybiB0aHJvd0Nv
bnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpOwogCiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKIAogICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmlu
ZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC01
MzI3LDYgKzUzNDksOSBAQCBFTkQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihzdGF0ZS0+Y2Fs
bGVlKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJU
KGNhc3RlZFRoaXMpO1xuIik7CiAKQEAgLTUzNTYsMTQgKzUzODEsMTQgQEAgRU5ECiAgICAgICAg
ICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiKmNvbnRleHQiKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoIWNvbnRl
eHQpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKCpzdGF0ZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0aCJ9LCAi
RG9jdW1lbnQiKSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRvY3VtZW50Lmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiZG9jdW1l
bnQiKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
VU5MSUtFTFkoIWNvbnRleHQpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpO1xuIik7CiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQgUnVu
dGltZUFycmF5OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogRW5jb2RlZEpTVmFsdWUgUnVudGlt
ZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVBcnJheSog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3Qt
PmdldExlbmd0aCgpKSk7CiB9CiAKQEAgLTExMyw5ICsxMTYsMTIgQEAgYm9vbCBSdW50aW1lQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdEJ5SQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBS
dW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKQEAgLTEyNyw5ICsxMzMsMTIgQEAgYm9vbCBSdW50aW1lQXJy
YXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRoaXNP
YmplY3QtPmdldExlbmd0aCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBl
cnJvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTYsOSArNTYsMTIgQEAgdm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVh
dGlvbihWTSYgdgogCiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV9tZXRob2QtPm51bVBhcmFt
ZXRlcnMoKSkpOwogfQogCkBAIC03NSw2ICs3OCw5IEBAIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0
T3duUHJvcGVydHlTbG90KEoKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
UnVudGltZU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGV4ZWMt
PmNhbGxlZSgpKTsKIAogICAgIGlmICghbWV0aG9kLT5tZXRob2QoKSkKQEAgLTg3LDEzICs5Mywx
MyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAgIFJ1
bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgICAgIGluc3RhbmNlID0gcnVudGltZU9iamVjdC0+
Z2V0SW50ZXJuYWxJbnN0YW5jZSgpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSAKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50
aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBl
bGVtZW50PwogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6Omlu
Zm8oKSkpCiAgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hU
TUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAgIGlm
ICghaW5zdGFuY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9
CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTY0LDExICs2NCwxNCBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogCiBF
bmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nh
c3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQ
dHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICgh
aW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2lu
KCk7CiAKQEAgLTgyLDExICs4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0Ojpm
YWxsYmFja09iCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeyAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNP
YmogPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAog
ICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFu
Y2UtPmJlZ2luKCk7CiAKQEAgLTEwMSwxMSArMTA3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIFJ1bnRp
bWVPYmplY3Q6OmZpZWxkR2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0
aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVj
dCogdGhpc09iaiA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3Rh
bmNlOwogCiAgICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAKICAg
ICBpbnN0YW5jZS0+YmVnaW4oKTsKIApAQCAtMTE4LDkgKzEyNywxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0CiAKIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4ob2Jq
ZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKLSAgICAgICAgdGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE2
Myw5ICsxNzUsMTIgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgog
CiBib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2lu
c3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCkBAIC0xOTIsOSArMjA3LDEyIEBAIGJvb2wgUnVudGltZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWwKIAogSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpkZWZhdWx0
VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlIGhpbnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBjb25zdCBSdW50aW1lT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwog
ICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2Ug
PSB0aGlzT2JqZWN0LT5tX2luc3RhbmNlOwogCkBAIC0yNTgsOSArMjc2LDEyIEBAIENvbnN0cnVj
dFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q29uc3RydWMKIAogdm9pZCBSdW50aW1lT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9i
amVjdCo+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0gICAg
ICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRB
Y2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
MSw5ICsyOTIsOSBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAg
ICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIFJ1bnRpbWVPYmpl
Y3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVz
dHJveWVkIHBsdWctaW4uIikpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZy
b20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogCiAgICAgSW5zdGFuY2UqIGdldEludGVybmFsSW5zdGFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgSlNPYmplY3QqIHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU09iamVjdCogdGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAgICAgREVDTEFS
RV9JTkZPOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsMTIgKzY4LDE1IEBAIHZvaWQgQ0luc3Rh
bmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW4KIAogdm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9i
YWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFsRXhj
ZXB0aW9uU3RyaW5nKCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogCiAgICAg
Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKQEAgLTE1NCw4ICsxNTcsMTEgQEAg
SlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIAogCiBKU1ZhbHVlIENJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGlt
ZU1ldGhvZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhv
ZCktPmluaGVyaXRzKENSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBv
biBwbHVnLWluIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4g
b2JqZWN0LiIpOwogCiAgICAgQ01ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8Q01ldGhvZCo+
KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKQEAgLTE4NCw3
ICsxOTAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0CiAgICAg
fQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhv
ZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBO
UE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAg
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMTk3LDYgKzIwMyw5IEBA
IEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXQKIAogSlNWYWx1ZSBDSW5z
dGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0yMTksNyArMjI4LDcgQEAgSlNWYWx1ZSBDSW5zdGFu
Y2U6Omludm9rZURlZmF1bHRNZXRob2QoRQogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKIAogICAgIGZvciAo
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUo
JmNBcmdzW2ldKTsKQEAgLTIzNiw2ICsyNDUsOSBAQCBib29sIENJbnN0YW5jZTo6c3VwcG9ydHND
b25zdHJ1Y3QoKSBjb25zCiAKIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCFfb2JqZWN0LT5fY2xhc3MtPmNvbnN0cnVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKQEAgLTI1OCw3ICsyNzAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlQ29u
c3RydWN0KEV4ZWNTCiAgICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJF
cnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBj
YWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNv
dW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpA
QCAtMzExLDYgKzMyMyw5IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSog
ZXgKIAogYm9vbCBDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBjaGFyKiBuYW1lLCBKU1ZhbHVlJiByZXN1bHRWYWx1ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihuYW1l
KTsKICAgICBpZiAoIV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKF9vYmplY3QsIGlkZW50KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI4LDcgKzM0Myw3IEBAIGJvb2wgQ0luc3RhbmNl
Ojp0b0pTUHJpbWl0aXZlKEV4ZWNTdGF0ZSoKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICByZXN1
bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50LCBt
X3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmcmVzdWx0
VmFyaWFudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0JKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOC0yMDA5LCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzksNiArNzksOSBAQCB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xvYmFs
RXhjZXB0aW9uKE5TCiAKIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9F
eGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFzX2V4
Y2VwdGlvbikgewogICAgICAgICBBU1NFUlQoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQpOwogICAg
ICAgICByZXR1cm47CkBAIC04Niw3ICs4OSw3IEBAIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xv
YmFsRXhjZXB0aW9uVG8KIAogICAgIGlmICghc19leGNlcHRpb25FbnZpcm9ubWVudCB8fCBzX2V4
Y2VwdGlvbkVudmlyb25tZW50ID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSkgewogICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBz
X2V4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIHNfZXhjZXB0aW9u
KTsKICAgICB9CiAKICAgICBbc19leGNlcHRpb24gcmVsZWFzZV07CkBAIC0yMDUsOCArMjA4LDEx
IEBAIEpTQzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGUKIAogSlNDOjpKU1Zh
bHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1l
dGhvZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09i
amVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVNZXRob2Q6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikp
OwogCiAgICAgT2JqY01ldGhvZCAqbWV0aG9kID0gc3RhdGljX2Nhc3Q8T2JqY01ldGhvZCo+KHJ1
bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTQsNiArOTQsOSBAQCBPYmpjRmllbGQ6Ok9i
amNGaWVsZChDRlN0cmluZ1JlZiBuYW1lKQogCiBKU1ZhbHVlIE9iamNGaWVsZDo6dmFsdWVGcm9t
SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAg
ICAgCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0IE9iamNJbnN0YW5j
ZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwpAQCAtMTA5LDcgKzExMiw3IEBAIEpTVmFsdWUg
T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUKICAgICAgICAgfQogICAgIH0gQGNhdGNo
KE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29u
XSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIFtsb2NhbEV4Y2VwdGlvbiByZWFz
b25dKTsKICAgICB9CiAKICAgICAvLyBXb3JrIGFyb3VuZCBwcm9ibGVtIGluIHNvbWUgdmVyc2lv
bnMgb2YgR0NDIHdoZXJlIHJlc3VsdCBnZXRzIG1hcmtlZCB2b2xhdGlsZSBhbmQKQEAgLTEyNyw2
ICsxMzAsOSBAQCBzdGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTCiAKIGJv
b2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
bnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogeworICAgIEpTQzo6Vk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBpZCB0YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3Rh
bmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0VmFs
dWVUb09iamNPYmplY3QoZXhlYywgYVZhbHVlKTsKIApAQCAtMTQxLDcgKzE0Nyw3IEBAIGJvb2wg
T2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1MKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFtsb2NhbEV4
Y2VwdGlvbiByZWFzb25dKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBzY29wZSwgW2xvY2Fs
RXhjZXB0aW9uIHJlYXNvbl0pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQpAQCAt
MTU2LDEzICsxNjIsMTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRyIGEs
IAogCiBib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CisgICAgSlNDOjpWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICghW19hcnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2Vy
dE9iamVjdDphdEluZGV4OildKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQXJyYXkgaXMgbm90IG11dGFibGUuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBbX2FycmF5Lmdl
dCgpIGNvdW50XSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJ
bmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIApAQCAtMTc0LDIxICsxODMsMjQgQEAgYm9vbCBPYmpjQXJyYXk6OnNldFZhbHVlQXQo
RXhlY1N0YXRlKiBleAogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFsdWUu
b2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0g
QGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewotICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNl
cHRpb24uIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKIEpTVmFsdWUgT2JqY0FycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXggZXhj
ZWVkcyBhcnJheSBzaXplLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUu
IikpOwogICAgIEB0cnkgewogICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0
SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAob2JqKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRPYmpjVmFsdWVUb1ZhbHVlIChleGVjLCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2Jq
ZWN0LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsK
LSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4
Y2VwdGlvbi4iKSk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMjMy
LDkgKzI0NCwxMiBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2VsbCosCiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KE9iakNSdW50aW1lT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNDIsNyArMjU3
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIE9iamNJ
bnN0YW5jZSogb2JqY0luc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxPYmpDSW5z
dGFuY2UoKTsKIAogICAgIGlmICghb2JqY0luc3RhbmNlKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAogICAgIG9iamNJbnN0YW5jZS0+YmVn
aW4oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgJ
KHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRp
bGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEpTVmFsdWUgY29udmVydE5T
U3RyaW5nVG9TdHJpbmcoRXhlY1N0YXQKIEpTVmFsdWUgY29udmVydE9iamNWYWx1ZVRvVmFsdWUo
RXhlY1N0YXRlKiwgdm9pZCogYnVmZmVyLCBPYmpjVmFsdWVUeXBlLCBSb290T2JqZWN0Kik7CiBP
YmpjVmFsdWVUeXBlIG9iamNWYWx1ZVR5cGVGb3JUeXBlKGNvbnN0IGNoYXIgKnR5cGUpOwogCi1K
U09iamVjdCAqdGhyb3dFcnJvcihFeGVjU3RhdGUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpOworSlNP
YmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIE5TU3RyaW5nICptZXNz
YWdlKTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMCwxMCArMzEwLDEwIEBAIE9iamNWYWx1ZVR5
cGUgb2JqY1ZhbHVlVHlwZUZvclR5cGUoY29uc3QKICAgICByZXR1cm4gb2JqY1ZhbHVlVHlwZTsK
IH0KIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBOU1N0cmluZyAqbWVz
c2FnZSkKK0pTT2JqZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUsIE5TU3RyaW5nICptZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKLSAgICBK
U09iamVjdCAqZXJyb3IgPSBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIEpTQzo6Y3Jl
YXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7CisgICAgSlNPYmplY3QgKmVycm9yID0g
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5n
KG1lc3NhZ2UpKSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNyBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0
aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsTWV0aG9kKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNhbGxNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpKU05Q
T2JqZWN0OjpjYWxsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y2FsbENv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHV0KToKKyAgICAgICAgKFdlYktp
dDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6
cHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjptZXRob2RHZXR0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhj
ZXB0aW9uVG9FeGVjU3RhdGUpOgorCiAyMDE2LTA4LTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBXZWJQcm9jZXNzUHJveHk6OmZy
b21Db25uZWN0aW9uIGluIFdlYlBhZ2VQcm94eQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSlNO
UE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVj
LT5jYWxsZWUoKSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwpAQCAtNzgsNyArODEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhv
ZChleGVjLCBqc05QTWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIH0KIAogQ2FsbFR5cGUgSlNOUE1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOSArMTA3LDEyIEBAIE5QT2JqZWN0
KiBKU05QT2JqZWN0OjpsZWFrTlBPYmplY3QoKQogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAg
IGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFt
ZXRob2ROYW1lKQpAQCAtMTQyLDcgKzE0NSw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1l
dGhvZChFeGVjU3RhdGUKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNb
aV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24g
TlBPYmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
RXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAg
IEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9K
U1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlh
bnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE1MSw5ICsxNTQsMTIgQEAgSlNWYWx1ZSBKU05QT2JqZWN0
OjpjYWxsTWV0aG9kKEV4ZWNTdGF0ZQogCiBKU0M6OkpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE9i
amVjdChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9U
SElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgc2l6ZV90IGFy
Z3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgVmVjdG9yPE5QVmFyaWFu
dCwgOD4gYXJndW1lbnRzKGFyZ3VtZW50Q291bnQpOwpAQCAtMTgyLDcgKzE4OCw3IEBAIEpTQzo6
SlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsT2JqZWN0KEpTQzoKICAgICAgICAgcmVsZWFzZU5QVmFy
aWFudFZhbHVlKCZhcmd1bWVudHNbaV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJy
b3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9u
IE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFw
LT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQp
OwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE5MSw5ICsxOTcsMTIg
QEAgSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogCiBKU1ZhbHVlIEpT
TlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBBU1NFUlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAo
IW1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAg
IFZlY3RvcjxOUFZhcmlhbnQsIDg+IGFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTIxOCw3
ICsyMjcsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjCiAgICAg
fQogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBP
YmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKICAgICAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gbV9vYmplY3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUo
ZXhlYywgZ2xvYmFsT2JqZWN0KCksIHJlc3VsdCk7CiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVl
KCZyZXN1bHQpOwpAQCAtMjY1LDEwICsyNzQsMTMgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0
OjpnZXRDb25zdHJ1Y3REYQogCiBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTlBPYmplY3Qq
IHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlz
T2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0yOTksMTAgKzMxMSwxMyBAQCBib29s
IEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iCiAKIGJvb2wgSlNOUE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxs
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM1Myw2ICszNjgsOSBA
QCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKCiAKIGJvb2wgSlNOUE9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVS
SVRTKGluZm8oKSk7CiAKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJvbC4KQEAg
LTM2MCw3ICszNzgsNyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9ucE9iamVjdCkgewotICAgICAg
ICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0zODksMTAgKzQwNywxMyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNT
dGF0CiAKIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJh
eSwgRW51bWVyYXRpb25Nb2RlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5t
X25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAg
ICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQzNywxMSArNDU4LDE0IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU08KIAogRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlz
T2JqID0ganNDYXN0PEpTTlBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCBpbmZvKCkpOwogICAgIAogICAg
IGlmICghdGhpc09iai0+bV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlm
ICghdGhpc09iai0+bV9ucE9iamVjdC0+X2NsYXNzLT5nZXRQcm9wZXJ0eSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3NywyMyArNTAxLDI2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGUKIAogRW5jb2RlZEpTVmFs
dWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
aiwgaW5mbygpKTsKICAgICAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBPYmplY3QpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMsIHNjb3BlKSk7CiAKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlm
aWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlOYW1lKTsKICAgICAvLyBJZiB0aGUgcHJvcGVydHlO
YW1lIGlzIHN5bWJvbC4KICAgICBpZiAoIW5wSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUp
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBucElk
ZW50aWZpZXIpKTsKIH0KIAotSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vz
c0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWlu
LiIpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBw
bHVnLWluLiIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIHByb3BlcnR5R2V0dGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUq
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogICAgIE5QUnVudGltZU9iamVjdE1h
cCogbV9vYmplY3RNYXA7CiAgICAgTlBPYmplY3QqIG1fbnBPYmplY3Q7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3NCwxMiArMjc0LDE1IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFw
OjpzZXRHbG9iYWxFeGNlcHQKICAgICAKIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xv
YmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogICAgIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRv
IGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6aW52
b2tlTWV0aG9kKToKKwogMjAxNi0wOC0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgZG9jdW1lbnQudGl0bGUgc2V0dGVyIGNhbid0IHRocm93LgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MzIsMTIgKzE2MzIsMTUgQEAgdm9p
ZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnNldEdsbwogCiB2b2lkIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChnbG9iYWxFeGNlcHRpb25TdHJpbmco
KS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOworICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KIAogICAg
IGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDggKzIxOSwxMSBAQCBKU1Zh
bHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4CiAKIEpTVmFsdWUgUHJveHlJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBy
dW50aW1lTWV0aG9kKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1l
TWV0aG9kKS0+aW5oZXJpdHMoUHJveHlSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9r
ZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBp
bnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKIAogICAgIFBy
b3h5TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRo
b2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsK
</data>
<flag name="review"
          id="310796"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287349</attachid>
            <date>2016-08-29 16:36:38 -0700</date>
            <delta_ts>2016-08-30 00:09:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161171.patch</filename>
            <type>text/plain</type>
            <size>1200900</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1OCBA
QAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGlu
c3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBoYXZpbmcgYSBt
ZWNoYW5pc20gKHVzaW5nIHRoZSBUaHJvd1Njb3BlKSB0bworICAgICAgICB2ZXJpZnkgdGhhdCB3
ZSdyZSBwcm9wZXJseSBjaGVja2luZyBmb3IgZXhjZXB0aW9ucyBpbiBhbGwgdGhlIG5lZWRlZCBw
bGFjZXMuCisgICAgICAgIFNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
IGZvciBkZXRhaWxzIG9uIGhvdyB0aGUgVGhyb3dTY29wZSB3b3Jrcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG9ubHkgaW50cm9kdWNlcyB0aGUgVGhyb3dTY29wZSwgYW5kIGNoYW5nZXMgYWxsIHRo
cm93IHNpdGVzIHRvIHRocm93CisgICAgICAgIHVzaW5nIGEgVGhyb3dTY29wZSBpbnN0YW5jZS4g
IFZNOjp0aHJvd0V4Y2VwdGlvbigpIGZ1bmN0aW9ucyBhcmUgbm93IHByaXZhdGUsIGFuZAorICAg
ICAgICBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuICBBbGwgdGhyb3dzIG11c3Qgbm93IGdv
IHRocm91Z2ggYSBUaHJvd1Njb3BlLgorCisgICAgICAgIFZlcmlmaWNhdGlvbiBpcyBkaXNhYmxl
ZCBmb3IgdGhlIG1vbWVudCB1bnRpbCB3ZSBjYW4gZml4IGFsbCB0aGUgdmVyaWZpY2F0aW9uCisg
ICAgICAgIGZhaWx1cmVzIHRoYXQgd2lsbCBzaG93IHVwLgorCisgICAgICAgIEkgYWxzbyBkaWQg
YSBzbW9rZSB0ZXN0IG9mIHRoZSBUaHJvd1Njb3BlIG1lY2hhbmlzbXMgYnkgcnVubmluZyB2ZXJp
ZmljYXRpb24gb24KKyAgICAgICAgdGhlIEpTVGVzdHMvc3RyZXNzL29wLWFkZC1leGNlcHRpb25z
LmpzIHRlc3Qgd2l0aCBhIGxvY2FsIGJ1aWxkIHdpdGggdmVyaWZpY2F0aW9uCisgICAgICAgIHR1
cm5lZCBvbi4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIG9uIGFnZ3JlZ2F0ZSB3
aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgTWlzYyBvdGhlciBjaGFuZ2VzOgorICAgICAgICAt
IGRlbGV0ZWQgdGhlIHVudXNlZCBDQUxMX1RIUk9XKCkgbWFjcm8gZnJvbSBMTEludFNsb3dQYXRo
cy5jcHAuCisgICAgICAgIC0gbW92ZWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoKSBmcm9tIEpT
T2JqZWN0LmggdG8gSlNPYmplY3RJbmxpbmVzLmguCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmN1c3RvbUhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVR5cGVkQXJyYXkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JO
YW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJp
ZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha1NldFNpemUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
Ojpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpq
c0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4p
OgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlz
T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFp
bERlbGV0ZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAg
KEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9m
VmFyYXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkN1
c3RvbUdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5Ojps
ZW5ndGhHZXR0ZXIpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAg
KGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1
bmN0aW9uTG9hZCk6CisgICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVu
Y3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAg
KGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkxvYWRNb2R1
bGUpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5j
dGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoSlNDOjppc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNl
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjpj
b25jYXRBcHBlbmRPbmUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uU2xvd1BhdGhzOjpvcEluKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
c0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmludGVycHJl
dGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVh
cik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXREYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY0dldE1pbGxpU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChK
U0M6OnNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVG
cm9tRGF0ZUFyZ3MpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6
OnRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAg
ICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJy
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6dGhyb3dSYW5n
ZUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dWTUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dWTVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKyAgICAg
ICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVF
cnJvcik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRo
cm93VHlwZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25GdXp6LmNwcDoKKyAgICAgICAgKEpTQzo6ZG9FeGNlcHRpb25GdXp6aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJv
d091dE9mTWVtb3J5RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpmdW5jdGlvblByb3RvRnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdz
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcik6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsU3RyaW5n
T3B0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bE51bWJlck9wdGlvbik6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0ZWRM
b2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Oml0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCk6CisgICAgICAgIChKU0M6
Oml0ZXJhdG9yRm9ySXRlcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6YXBwZW5kTWVtY3B5KToKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
cG9wKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6Y2FsbEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZl
clByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0lubGluZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09i
amVjdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6dG9TdHJpbmdTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omdl
dERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQ
cm90b0dldHRlckJ1ZmZlcik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVy
R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc6OnNldEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld0Zyb21JdGVyYXRvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpk
ZWNvZGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6Cisg
ICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVMaXN0RnJvbUFycmF5TGlrZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlTGlzdEZy
b21BcnJheUxpa2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0UHJvbWlzZSk6CisgICAgICAgIChKU0M6OmNhbGxQcm9taXNlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0
eU5hbWVJdGVyYXRvckZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeSk6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdCdWlsZGVyOjpi
dWlsZCk6CisgICAgICAgIChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5l
cjo6am9pbmVkTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OmpvaW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0VHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4p
OgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxNYXApOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNJdGVyYXRvcj46OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50
aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwSXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNWYWx1ZXMp
OgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6bWFw
UHJvdG9GdW5jS2V5cyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6Cisg
ICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJv
dG9GdW5jVG9QcmVjaXNpb24pOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJv
dG90eXBlT2YpOgorICAgICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAo
SlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdGcm9tUmVnaXN0ZXJB
cnJheSk6CisgICAgICAgIChKU0M6OmpzU3RyaW5nRnJvbUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJs
ZVByb3h5KToKKyAgICAgICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJy
b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6
OmNhbGxQcm94eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBlcmZv
cm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
SGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90Q29tbW9uKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJl
ZmxlY3RPYmplY3RFbnVtZXJhdGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToK
KyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6
OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0
T3duS2V5cyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjp0b0ZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OmNvbGxlY3RNYXRjaGVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0
RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlND
OjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4
cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVy
TXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3Vy
Y2UpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVqZWN0Lmg6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KToK
KyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFNl
dCk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNl
dFByb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpq
c1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyk6CisgICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChK
U0M6OnJlcGxhY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2Rl
UG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlND
Ojp0b0xvY2FsZUNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCaWcpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTbWFsbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0JsaW5rKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQm9sZCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZpeGVkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jSXRhbGljcyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0cmlrZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1Yik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1N1cCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jQW5jaG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6
CisgICAgICAgIChKU0M6OnRyaW1TdHJpbmcpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25D
aGVja2VyOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9TeW1i
b2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRvTnVtYmVyKToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0
b3JLZXlGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6VGhyb3dTY29wZSk6CisgICAgICAgIChKU0M6
OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6dGhy
b3dFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjpwcmludElmTmVlZENoZWNr
KToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdyk6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKToKKyAg
ICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlRocm93
U2NvcGU6OnZtKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6ZXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6VGhyb3dTY29wZTo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6
OlRocm93U2NvcGUpOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6
CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93
U2NvcGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZUxvY2F0aW9u
OjpUaHJvd1Njb3BlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnZt
KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAg
ICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vh
a01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAg
KiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFr
U2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgor
ICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKwogMjAxNi0wOC0yOSAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdG9TdHJpbmdO
YW1lIGZvciBQcm94aWVzIGFuZCBhZGQgc3VwcG9ydCBmb3Igbm9ybWFsIGluc3RhbmNlcwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04
MTQsNiArODE0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1N5
bWJvbE9iamVjdC5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1N5bWJvbFRhYmxlLmNwcAorICAgIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHAKICAgICBydW50
aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3Bw
CiAgICAgcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzY1LDEyICszNjUsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiAgICAgeworICAgICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICAgICAgQ3VzdG9tR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxDdXN0b21HZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlm
ICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICBib29sIHNob3VsZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3BlcnR5TmFt
ZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFu
KGV4ZWMpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigx
MDApKTsKICAgICB9CiB9OwpAQCAtNDcwLDkgKzQ3MywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogICAgIHsKKyAgICAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVu
dGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBpZiAoIXRo
aXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkp
OwogICAgIH0KIApAQCAtMTIzMiwxMSArMTIzOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVFbGVtZW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJv
b3QqPihleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFyb290KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJv
b3QuIikpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50OjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCByb290KSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBS
b290LiIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHJvb3QpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQpAQCAt
MTQxNiwyMCArMTQyNSwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
VmVyCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZl
Y3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0
ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAotICAgIEdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5n
PigpKTsKKyAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3Jl
YXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0
b3I8U3RyaW5nPigpKTsKIAogICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJh
eShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4
ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgICAgICB2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAK
ICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdh
dGNoOwpAQCAtMTQzOCw3ICsxNDUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1bgogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNDQ3LDIzICsxNDU5LDI2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJp
bmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0Ojpj
cmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZl
Y3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFycmF5LT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgKLSAgICAgICAg
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgICAgIHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsK
IAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIGV2YWx1YXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBtYWtlU291cmNlKHNvdXJjZSksIEpTVmFsdWUoKSwgZXhj
ZXB0aW9uKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAg
ICAgc2NvcGUudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQogICAgIApAQCAtMTQ3MiwyNCArMTQ4NywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUnVuCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxl
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRG
cm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpOwogICAgIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIFN0cmluZyBzb3VyY2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ5OCwzMCArMTUxOSwzNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSksIEpTVmFsdWUo
KSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0
aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+
IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUs
IHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5v
dCBvcGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291
bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURihzY3JpcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dU
RlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNj
cmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwg
c2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3Vs
ZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKIApAQCAtMTUzMyw3ICsxNTYwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5z
dG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBzeW50YXhFeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAKQEAgLTE2MzgsMTIg
KzE2NjUsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbwogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVu
b3VnaCBhcmd1bWVudHMiKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJO
b3QgZW5vdWdoIGFyZ3VtZW50cyIpKSkpOwogICAgIAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhw
ZWN0ZWQgYW4gYXJyYXkgYnVmZmVyIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRXhwZWN0ZWQgYW4gYXJyYXkgYnVmZmVyIikpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZm
ZXJDb250ZW50cyBkdW1teUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2Zlcihk
dW1teUNvbnRlbnRzKTsKQEAgLTE4MTAsMjcgKzE4NDAsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbklzMwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBT
dHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZl
dGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
KSkpOwogCiAgICAgSlNJbnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVN
b2R1bGUoZXhlYywgZmlsZU5hbWUpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFs
dWUgZXJyb3I7Ci0gICAgSlNGdW5jdGlvbiogZXJyb3JIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5j
dGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwg
U3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBKU0Z1bmN0aW9uKiBlcnJvckhh
bmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKICAgICAgICAg
ZXJyb3IgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICB9KTsKIAogICAgIHByb21pc2UtPnRoZW4oZXhlYywgbnVs
bHB0ciwgZXJyb3JIYW5kbGVyKTsKLSAgICBleGVjLT52bSgpLmRyYWluTWljcm90YXNrcygpOwor
ICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGVycm9yKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTg1OCw2ICsxODkxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tN
b2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5n
IHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTE4NzAsNyArMTkwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DaGUKICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxp
ZFN5bnRheCkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgdG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdl
KCksICI6IiwgZXJyb3IubGluZSgpKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwg
ZXJyb3IubWVzc2FnZSgpLCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0x
OTA3LDEwICsxOTQzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
dGEKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT52bSgpLnNh
bXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
U2FtcGxpbmcgcHJvZmlsZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiKSkpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGlmICghdm0uc2FtcGxpbmdQcm9maWxlcigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlNhbXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIikpKSk7CiAKLSAg
ICBTdHJpbmcganNvblN0cmluZyA9IGV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpLT5zdGFj
a1RyYWNlc0FzSlNPTigpOworICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2FtcGxpbmdQcm9m
aWxlcigpLT5zdGFja1RyYWNlc0FzSlNPTigpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9
IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNiArNDQsOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1Jl
ZihleGVjKTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxl
ZSgpKTsKICAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC02
MSw3ICs2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2sKICAg
ICAgICAgcmVzdWx0ID0ganNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVmKSktPmZ1bmN0aW9uQ2Fs
bGJhY2soKShleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwg
YXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24p
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNl
cHRpb24pKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywg
ZXhjZXB0aW9uKSk7CiAKICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAg
ICAgaWYgKCFyZXN1bHQpCkBAIC03Myw2ICs3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgQVBJQ2FsbGJhY2sKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmNh
bGxlZSgpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09iamVj
dFJlZiBjb25zdHJ1Y3RvclJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKQEAgLTkyLDEyICs5Niwx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrCiAgICAgICAgICAg
ICByZXN1bHQgPSBjYWxsYmFjayhjdHgsIGNvbnN0cnVjdG9yUmVmLCBhcmd1bWVudENvdW50LCBh
cmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhj
ZXB0aW9uKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRv
SlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgfQogICAgICAgICAvLyBy
ZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAgICAgIGlmICghcmVzdWx0KQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhyZXN1bHQpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEzMyw2ICsxMzMsOSBAQCBTdHJpbmcgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpjbGFzc05hCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0
UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0
aGlzT2JqZWN0KTsKQEAgLTE1OSw3ICsxNjIsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0T3duUHJvCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNl
cHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RW51bSwganNVbmRlZmluZWQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMCw2
ICsyMDMsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgogSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRl
ZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgaGludCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IEpTQ2Fs
bGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+
KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2Jq
ZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTIxMCw3ICsyMTYsNyBAQCBK
U1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiAgICAgICAgICAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGNv
bnZlcnRUb1R5cGUoY3R4LCB0aGlzUmVmLCBqc0hpbnQsICZleGNlcHRpb24pOwogICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChyZXN1bHQpCkBAIC0yMjQsNiArMjMwLDkgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlZmF1bAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0
b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7
CkBAIC0yNDIsNyArMjUxLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChK
U0NlbAogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNS
ZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
fQpAQCAtMjU5LDcgKzI2OCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShj
dHgsIHRoaXNSZWYsIGVudHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhj
ZXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNl
cHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMjczLDcgKzI4Miw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJl
bnQ6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQg
YXMgb3ZlcnJpZGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODUsNiArMjk0LDkgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0
UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0
aGlzT2JqZWN0KTsKQEAgLTMwMyw3ICszMTUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6cHV0QnlJbmRlCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4
LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikp
OworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzIwLDcgKzMzMiw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3Bl
cnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAgICAgICAgIH0KQEAgLTM0Miw2ICszNTQsOSBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpT
T2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTM1OSw3ICszNzQsNyBA
QCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvCiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1l
UmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC00MDgsNiArNDIzLDkgQEAgQ29uc3Ry
dWN0VHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OgogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3Rv
ciA9IGV4ZWMtPmNhbGxlZSgpOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhl
Yyk7CiAgICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rvcik7
CkBAIC00MjYsNyArNDQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3RydWN0b3IoZXhl
Y1JlZiwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZl
eGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDM4LDYgKzQ1Niw5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxi
YWNrT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4
ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTQ1
Miw3ICs0NzMsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzCiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5zdGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFs
dWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRv
SlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CiAgICAgfQpAQCAtNDc1LDYgKzQ5Niw5IEBAIENhbGxUeXBlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q2EKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVj
KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxlZSgpKTsK
ICAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC00OTMsNyAr
NTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgZnVu
Y3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZl
eGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTcwLDYgKzU5NCw5IEBAIGJvb2wg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbmhlcml0cygKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CiBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIAogICAgIGlmIChT
dHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CkBAIC01ODQsNyArNjExLDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHkodG9SZWYoZXhlYyksIHRoaXNSZWYs
IGVudHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKQEAgLTYw
MSw2ICs2MjgsOSBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlkZSBwcm9wZXJ0
eS4KQEAgLTYxMyw3ICs2NDMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxl
KiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAg
ICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5j
dGlvbnMtPmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxs
QXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1l
LCBvLCBlbnRyeS0+YXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG8pOwpAQCAtNjIzLDEyICs2NTIsMTUgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOwogfQogCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNWYWx1ZSk7
CiAgICAgCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwpAQCAtNjQ2
LDcgKzY3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eSh0b1JlZihleGVjKSwgdGhpc1Jl
ZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUpCkBAIC02NTUsNyArNjg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3Ig
YSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVlIGZv
ciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4iKSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRB
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw5ICsxMDAsMTEgQEAgaW5saW5lIFR5cGVk
QXJyYXlUeXBlIHRvVHlwZWRBcnJheVR5cGUoSgogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVR5
cGVkQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGVkQXJyYXlUeXBlIHR5cGUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBzd2l0Y2ggKHR5cGUp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjA5Niw4ICsyMDk2LDEwIEBACiAJCUZFMUMwRkZG
MUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2Vw
dGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29w
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBD
RTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKIAkJRkUyMENFOUUx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENM
b29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RkUyRTZBN0IxRDZFQTYyQzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2
IC8qIFRocm93U2NvcGUuY3BwICovOyB9OwogCQlGRTMxOEZERjFDQUM5ODI3MDBERkNDNTQgLyog
RUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4
MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBE
RkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OworCQlGRTM0
MjIxMjFENkI4MUMzMDAzMkJFODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRo
cm93U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTM4NEVFNTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMTFBRERCN0FEMDA1
NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi87IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU3MUFEREI3
QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIxMjQsNiArMjEyNiw3IEBACiAJCUZF
NTA2ODY3MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1MDY4NjYxQUUyNUUyODAw
MDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi87IH07CiAJCUZFNTkzMkE3MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5jcHAgKi87IH07CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkz
MkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQg
LyogVGhyb3dTY29wZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzYxQjkwRERE
OTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjhDNjM4MUI5MERFMEIwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1i
bGVyUHJpbnRlci5jcHAgKi87IH07CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFw
VmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBA
IC00Mzk4LDggKzQ0MDEsMTAgQEAKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2Vw
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0
MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGgg
PSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkU2
QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0
MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUaHJvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZN
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyNiw2
ICs0NDMxLDcgQEAKIAkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNl
RHVtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNv
dXJjZUR1bXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNTE4M0M1
QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZNRW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFNjAyOUQ4MUQ2RTFFMzMwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyb3dTY29wZUxvY2F0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNC
MyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJp
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEQxQTFBN0NFQzAw
RjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIZWFwVmVyaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjEyOSw2ICs2MTM1LDkgQEAKIAkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVSZWdpc3RyeUtleS5oICovLAogCQkJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0
UnVubmVyVXRpbHMuY3BwICovLAogCQkJCTBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0
UnVubmVyVXRpbHMuaCAqLywKKwkJCQlGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dT
Y29wZS5jcHAgKi8sCisJCQkJRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUu
aCAqLywKKwkJCQlGRTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0aW9u
LmggKi8sCiAJCQkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVl
LmggKi8sCiAJCQkJMEYyQjY2RDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9y
cy5oICovLAogCQkJCTBGMkI2NkQ5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJv
bGxlci5jcHAgKi8sCkBAIC03NjM1LDYgKzc2NDQsNyBAQAogCQkJCUJDMThDNDA1MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJEMkQz
OTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBQzE3QjZCNTNG
MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLApAQCAtNzY3
Niw2ICs3Njg2LDcgQEAKIAkJCQkwRkUwNTAxQTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkMwMUMxMTA0MUEwMDM5
MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDhF
QkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRTA1MDFCMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMDE3QjZCNUFCMDBBN0FFM0YgLyogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMTE3QjZCNUFC
MDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MTc3LDYgKzkxODgsNyBAQAogCQkJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBG
VExTYXZlUmVzdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1
MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYx
MUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkUyRTZBN0IxRDZFQTYyQzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyNUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNv
ZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2
MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDggKzEzOCwxMCBAQCBjaGFyKiBuZXdUeXBlZEFy
cmF5V2l0aFNpemUoRXhlY1N0YXRlKiBlCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHNpemUgPCAwKSB7Ci0gICAg
ICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4
ZWMsIHN0cnVjdHVyZSwgc2l6ZSkpOwpAQCAtNzI1LDEyICs3MjcsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZQogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1
ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CiAgICAgCiAgICAgaWYgKCFi
YXNlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxs
KGV4ZWMpOwogICAgIGlmICghaW5wdXQpCkBAIC03NjksMTIgKzc3MiwxMyBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1Zh
bHVlIGJhc2UgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKIAogICAgIGlmICghYmFz
ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTMzLDkgKzkzNywxMCBAQCBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXpl
IDwgMCkpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFy
cmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpKSk7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSkpKTsKIAogICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OmNyZWF0ZSgqdm0sIGFycmF5U3RydWN0dXJlLCBzaXplKTsKICAg
ICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYmFja2luZyBzdG9yZSBp
cyBpbiB0by1zcGFjZS4KQEAgLTEzODgsOSArMTM5MywxMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTWFrZVJvcGUyCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90
PihsZWZ0LT5sZW5ndGgoKSwgcmlnaHQtPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTQwMSw5ICsxNDA3
LDEwIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTMKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGEtPmxlbmd0aCgpLCBiLT5sZW5ndGgoKSwgYy0+
bGVuZ3RoKCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC0xNDE0LDYgKzE0MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3RyQ2F0MihFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNTdHJpbmcqIHN0cjEgPSBKU1ZhbHVl
OjpkZWNvZGUoYSkudG9TdHJpbmcoZXhlYyk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
IC8vIEltcG9zc2libGUsIHNpbmNlIHdlIG11c3QgaGF2ZSBiZWVuIGdpdmVuIHByaW1pdGl2ZXMu
CkBAIC0xNDIxLDcgKzE0MjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Ry
Q2F0MihFCiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICBpZiAoc3VtT3ZlcmZs
b3dzPGludDMyX3Q+KHN0cjEtPmxlbmd0aCgpLCBzdHIyLT5sZW5ndGgoKSkpIHsKLSAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0
MzIsNiArMTQ0MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBKU1N0cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhl
eGVjKTsKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ug
d2UgbXVzdCBoYXZlIGJlZW4gZ2l2ZW4gcHJpbWl0aXZlcy4KQEAgLTE0NDEsNyArMTQ1MCw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUKICAgICBBU1NFUlQoIXZt
LmV4Y2VwdGlvbigpKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oc3RyMS0+bGVu
Z3RoKCksIHN0cjItPmxlbmd0aCgpLCBzdHIzLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1NDUsNyAr
MTU1NCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKLSAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZXhlYywgc2NvcGUpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U2l6ZU9mVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1
bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCkBAIC0xNzMyLDEzICsxNzQyLDE0IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAg
ICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8oZ2V0
UHV0SW5mb0JpdHMpOwogICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9
PSBUaHJvd0lmTm90Rm91bmQpCi0gICAgICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICB9CiAKQEAgLTE3NDYsNyArMTc1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3Rh
dGljYWxseSBwcm92ZSB3ZSBuZWVkIGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNo
ZWNrIG9uIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3Qu
Z2V0VmFsdWUoZXhlYywgaWRlbnQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBqc1REWlZh
bHVlKCkpIHsKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMTc2MCw2ICsxNzcxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dER5bmFtaWNWYQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpOwogICAgIEdldFB1dEluZm8gZ2V0UHV0SW5m
byhnZXRQdXRJbmZvQml0cyk7CkBAIC0xNzcxLDEzICsxNzgzLDEzIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXREeW5hbWljVmEKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2Nv
cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBp
ZGVudCwgc2xvdCk7CiAgICAgICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBq
c1REWlZhbHVlKCkpIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9
PSBUaHJvd0lmTm90Rm91bmQgJiYgIWhhc1Byb3BlcnR5KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBp
ZGVudCkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsOSArOTUsMTIgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6
ZXZhbHVhdGUoRQogCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpdGhT
Y29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHNjcmlwdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1
ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmly
c3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4i
KSk7CiAKICAgICBTdHJpbmcgcHJvZ3JhbSA9IHNjcmlwdFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMDcsNyArMTEw
LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaQogICAgIEpTT2Jq
ZWN0KiBzY29wZUV4dGVuc2lvbiA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjLCBt
YWtlU291cmNlKHByb2dyYW0pLCBzY29wZUV4dGVuc2lvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03NywxMjAgKzc3LDE1NiBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlOjpmaW5pCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVj
dGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5ldmFsdWF0ZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0
b3JOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29uc3RydWN0
b3JOYW1lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGV4ZWMpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uV2Vha01hcFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVj
dGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlw
dEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
d2Vha01hcFNpemUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwRW50cmllcyhleGVjKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbldlYWtTZXRTaXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtT
ZXRTaXplKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldEVudHJpZXMoZXhlYykpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25JdGVyYXRvckVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2Ny
aXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3Qq
Pih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXRlcmF0
b3JFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPnN1YnR5cGUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFp
bHMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGV4ZWMp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPmdldEludGVybmFsUHJvcGVydGllcyhleGVjKSk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3Jp
cHRDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3
LDkgKzc3LDEyIEBAIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2YVNjcmlwdENhbGwKIAog
SlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgc2NyaXB0VmFs
dWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTSmF2
YVNjcmlwdENhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVu
dCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5ldmFsdWF0ZVdp
dGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAog
ICAgIFN0cmluZyBzY3JpcHQgPSBzY3JpcHRWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtODksNyArOTIsNyBAQCBKU1Zh
bHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXCiAgICAgSlNPYmplY3QqIHNjb3Bl
RXh0ZW5zaW9uID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBpbXBsKCkuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4
dGVuc2lvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzYsMTEwICs3NiwxNDMgQEAgdm9pZCBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGU6OmZpbgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxs
RnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0
ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0
aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25z
KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENh
bGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5jYWxsZXIoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+c291cmNlSUQoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRU
aGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5saW5lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jb2x1bW4oZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9u
TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uTmFtZShleGVj
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlU2NvcGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNj
cmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PnNjb3BlQ2hhaW4oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT50aGlzT2JqZWN0KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzVGFpbERlbGV0ZWQoZXhlYykpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5o
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FjaGVkQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAsIG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRl
cigpKQogICAgICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIFZNJiB2
bSA9IG1fZW50cnlTY29wZS52bSgpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUt
PnZtKCkuaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KHZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50
cy5yZXNpemUoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9p
bnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgp
LCBjYWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCAr
IDEsIGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwogICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKICAgICAgICAgICAgIG1fdmFsaWQgPSAhY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKTsK
ICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAxMCwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJs
b28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMjcsNiArMTI3LDkgQEAgU3RyaW5nIFN0YWNr
RnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIAogCiBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0xMzQsMTAg
KzEzNywxMCBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFw
cm9ncmFtLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBwcm9ncmFtOwogCi0gICAgVG9wQ2Fs
bEZyYW1lU2V0dGVyIHRvcENhbGxGcmFtZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZSk7Cisg
ICAgVG9wQ2FsbEZyYW1lU2V0dGVyIHRvcENhbGxGcmFtZSh2bSwgY2FsbEZyYW1lKTsKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAg
Y2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlRXZhbEVycm9y
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3Io
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KICAgICBTdHJpbmcgcHJvZ3JhbVNv
dXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUpOwpAQCAtMTgxLDcgKzE4
NCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxk
IG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgotICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+
dm0oKS5leGNlcHRpb24oKSk7CisgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAg
ICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNh
bGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKQEAgLTE5MCwxNyArMTkz
LDIwIEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB9CiAKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxlckZyYW1lLT50aGlzVmFsdWUoKTsKLSAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBjYWxsRnJhbWUtPnZtKCkuaW50ZXJwcmV0ZXI7CisgICAgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyID0gdm0uaW50ZXJwcmV0ZXI7CiAgICAgcmV0dXJuIGludGVy
cHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29wZUNo
YWluKTsKIH0KIAogdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIFZN
JiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cy5pc0NlbGwoKSkpIHsKICAg
ICAgICAgaWYgKGFyZ3VtZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIAotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxG
cmFtZSwgYXJndW1lbnRzKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2Nv
cGUsIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCBh
cmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApAQCAtMjE1LDcgKzIy
MSw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnIKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICAg
ICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxp
ZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0
aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0yMzcsMjEgKzI0MywyNSBAQCB1
bnNpZ25lZCBzaXplT2ZWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiAKIHVuc2lnbmVkIHNpemVG
cmFtZUZvckZvcndhcmRBcmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgdW5z
aWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxlZUZyYW1lRm9yVmFy
YXJncyhjYWxsRnJhbWUsIG51bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGggKyAxKTsKICAgICBpZiAo
VU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVy
cygpKSkpCi0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CisgICAg
ICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgcmV0
dXJuIGxlbmd0aDsKIH0KIAogdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0
YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVP
ZlZhcmFyZ3MoY2FsbEZyYW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAK
ICAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxG
cmFtZSwgbnVtVXNlZFN0YWNrU2xvdHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWShs
ZW5ndGggPiBtYXhBcmd1bWVudHMgfHwgIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVl
RnJhbWUtPnJlZ2lzdGVycygpKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTgyMiwxNSArODMyLDE2
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKIHsKICAgICBKU1Nj
b3BlKiBzY29wZSA9IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZSgpOwogICAg
IFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VS
VCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3koKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0g
ICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxG
cmFtZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRo
ZSAicHJvZ3JhbSIgaXMgYWN0dWFsbHkganVzdCBhIEpTT04gb2JqZWN0LiBJZiBzbywKICAgICAv
LyB3ZSdsbCBoYW5kbGUgdGhlIEpTT04gb2JqZWN0IGhlcmUuIEVsc2UsIHdlJ2xsIGhhbmRsZSBy
ZWFsIEpTIGNvZGUKQEAgLTg3MSwyMiArODgyLDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBKU09OUFBh
dGhbaV0ubV9wYXRoRW50cnlOYW1lLCBzbG90KSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZW50cnkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVVbmRlZmluZWRW
YXJpYWJsZUVycm9yKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGNhbGxGcmFt
ZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gZmFpbGVkSlNPTlA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUs
IEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChj
YWxsRnJhbWUsIEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlTG9va3Vw
OiB7CiAgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChjYWxs
RnJhbWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU09OUFBhdGhbaV0ubV9wYXRoSW5kZXgpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTg5OSwyOSArOTEwLDI5IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgICAgIHN3aXRjaCAoSlNP
TlBQYXRoLmxhc3QoKS5tX3R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlU
eXBlQ2FsbDogewogICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBiYXNlT2JqZWN0
LmdldChjYWxsRnJhbWUsIEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1lKTsKLSAgICAg
ICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
ICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2Fs
bERhdGEpOwogICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlv
bihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGNhbGxGcmFtZSwgZnVuY3Rpb24p
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoY2FsbEZyYW1lLCBmdW5jdGlvbikp
OwogICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGpzb25Bcmc7CiAgICAgICAg
ICAgICAgICAganNvbkFyZy5hcHBlbmQoSlNPTlBWYWx1ZSk7CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBKU09OUFBhdGguc2l6ZSgpID09IDEgPyBqc1VuZGVmaW5lZCgpOiBi
YXNlT2JqZWN0OwogICAgICAgICAgICAgICAgIEpTT05QVmFsdWUgPSBKU0M6OmNhbGwoY2FsbEZy
YW1lLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGpzb25BcmcpOwot
ICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlRG90OiB7CiAgICAgICAgICAg
ICAgICAgYmFzZU9iamVjdC5wdXQoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEVu
dHJ5TmFtZSwgSlNPTlBWYWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFt
ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKU09OUFBh
dGhFbnRyeVR5cGVMb29rdXA6IHsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dEJ5SW5k
ZXgoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEluZGV4LCBKU09OUFZhbHVlLCBz
bG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC05NDEsMTggKzk1MiwyMCBAQCBmYWlsZWRKU09O
UDoKIAogICAgIC8vIENvbXBpbGUgc291cmNlIHRvIGJ5dGVjb2RlIGlmIG5lY2Vzc2FyeToKICAg
ICBpZiAoSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRp
ZXModm0sIGNhbGxGcmFtZSwgc2NvcGUpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihj
YWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsIGVycm9yKSk7CiAKICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewog
ICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIGlmIChKU09iamVjdCog
ZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihj
YWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jaykpCi0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9n
cmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51
bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEFTU0VS
VCghdGhyb3dTY29wZS5leGNlcHRpb24oKSB8fCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGpz
RHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBlcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNv
ZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5z
aG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUp
OwogCiAgICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKQEAgLTk3MSw2
ICs5ODQsOCBAQCBmYWlsZWRKU09OUDoKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxs
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlIGNhbGxU
eXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghY2Fs
bEZyYW1lLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3ko
KSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtOTkzLDEzICsxMDA4LDE0IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIAogICAgIFZNRW50cnlT
Y29wZSBlbnRyeVNjb3BlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwog
CiAgICAgaWYgKGlzSlNDYWxsKSB7CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAg
ICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwg
anNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29k
ZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRl
cnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNh
bGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOwor
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2Rl
QmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0g
ZmFsc2U7CkBAIC0xMDA3LDcgKzEwMjMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
Q2FsbChDYWxsRnJhCiAgICAgICAgIG5ld0NvZGVCbG9jayA9IDA7CiAKICAgICBpZiAoVU5MSUtF
TFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1
cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJv
d1Njb3BlKTsKIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAgIHByb3Rv
Q2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBhcmdzQ291
bnQsIGFyZ3MuZGF0YSgpKTsKQEAgLTEwMTUsMTEgKzEwMzEsMTIgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKICAg
ICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICAgICAgaWYgKGlzSlNDYWxsKQorICAgICAg
ICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZw
cm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVl
OjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBp
ZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIGlmICh0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTAzMCwxMiArMTA0NywxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlQ2FsbChDYWxsRnJhCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1
Y3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBj
b25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBj
YWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFT
U0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIC8vIFdlIHRocm93IGluIHRoaXMgY2Fz
ZSBiZWNhdXNlIHdlIGhhdmUgdG8gcmV0dXJuIHNvbWV0aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQog
ICAgIC8vIGFscmVhZHkgaW4gYW4gaW52YWxpZCBzdGF0ZS4KICAgICBpZiAodm0uaXNDb2xsZWN0
b3JCdXN5KCkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIGJvb2wgaXNK
U0NvbnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICBK
U1Njb3BlKiBzY29wZSA9IG51bGxwdHI7CkBAIC0xMDU0LDEzICsxMDczLDEzIEBAIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKIAogICAgIFZNRW50cnlTY29wZSBlbnRy
eVNjb3BlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgaWYg
KGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAg
ICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPihjYWxsRnJhbWUs
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLCBzY29wZSwgQ29kZUZvckNvbnN0cnVj
dCwgbmV3Q29kZUJsb2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkK
LSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxl
RXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdD
b2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDY4LDcgKzEw
ODcsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAg
IG5ld0NvZGVCbG9jayA9IDA7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRl
cm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIFByb3Rv
Q2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29k
ZUJsb2NrLCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsK
QEAgLTEwOTUsNiArMTExNCw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0
cnVjdCgKIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxs
KEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlv
biwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1
ZSogYXJncykKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24o
KSk7CiAgICAgCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtMTEwNCw3ICsxMTI0
LDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogICAgIENvZGVC
bG9jayogbmV3Q29kZUJsb2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwg
ZnVuY3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKICAgICBpZiAoZXJy
b3IpIHsKLSAgICAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
ZXJyb3IpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVy
cm9yKTsKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKICAgICB9CiAgICAgbmV3
Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtMTEyMCw3ICsx
MTQwLDggQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKSAKIHsKICAg
ICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKLSAgICAKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OwogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKQEAgLTExMjksNyArMTE1MCw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBTdGFja1N0YXRzOjpD
aGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRU
cmlnZ2VyVGVybWluYXRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3Vy
ZS5vbGRDYWxsRnJhbWUsIHRocm93U2NvcGUpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgY2xvc3VyZS5wcm90b0NhbGxGcmFtZSk7
CkBAIC0xMTQwLDcgKzExNjEsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxG
cmFtZUNsCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFs
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNjb3Bl
KQogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKLSAgICAKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVChzY29wZS0+dm0oKSA9
PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKQEAgLTExNTAsNyArMTE3Miw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIFZNRW50cnlTY29wZSBl
bnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlmIChVTkxJS0VMWSgh
dm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7ICAgICAgICAKKyAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJv
d1Njb3BlKSk7CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMgPSBldmFsLT5udW1WYXJpYWJs
ZXMoKTsKICAgICBpbnQgbnVtRnVuY3Rpb25zID0gZXZhbC0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCk7CkBAIC0xMTgxLDcgKzEyMDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhCiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNP
YmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVGb3JFeGVjdXRpb248RXZhbEV4ZWN1
dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJs
b2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKICAg
ICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsK
ICAgICB9CiAKQEAgLTExOTIsNyArMTIxNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT52YXJpYWJsZShpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6Omdl
dE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgaWRl
bnQsIHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGds
b2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSksICInIikpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xv
YmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEyMDAsNyArMTIyMiw3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2
YWw6ICciLCBTdHJpbmcoZnVuY3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJp
YWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTIyOSw3ICsxMjUxLDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIH0KIAogICAgIGlm
IChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJh
bWUsIHRocm93U2NvcGUpOwogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCkBAIC0xMjQ1LDYgKzEyNjcsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCiB7CiAgICAgVk0m
IHZtID0gKnNjb3BlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkp
OwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwpAQCAtMTI1NSwxOSArMTI3OCwxOSBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAKICAgICBWTUVudHJ5U2Nv
cGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2Nv
cGUpKTsKIAogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAg
ICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBp
bGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29k
ZUJsb2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsK
ICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1w
Q29kZUJsb2NrKTsKICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRl
cm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIGlmIChz
Y29wZS0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNj
b3BlLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDYgKzg5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgog
ewogICAgIC8vIFdlIHBhc3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRoZSBjYWxs
ZnJhbWUgaGFzbid0IGJlZW4gcG9wdWxhdGVkLgogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgVk1F
bnRyeUZyYW1lKiB2bUVudHJ5RnJhbWUgPSB2bS0+dG9wVk1FbnRyeUZyYW1lOwogICAgIENhbGxG
cmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwpAQCAt
OTgsNDMgKzk5LDQ4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YK
ICAgICB9CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0s
IHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxlckZyYW1lKTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwg
c2NvcGUpOwogfQogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRocm93RGl2aWRlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2
bSk7CisKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJh
bWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50
cnlGcmFtZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIo
dm0sIHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBl
cnJvclNjb3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVh
dGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRp
dmlzaW9uIG92ZXJmbG93LiIpKSk7CisgICAgdGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIHNj
b3BlLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6
ZXJvIG9yIGRpdmlzaW9uIG92ZXJmbG93LiIpKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd091dE9mQm91bmRzQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKCp2bSk7CisKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BW
TUVudHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZy
YW1lKHZtRW50cnlGcmFtZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9y
ZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxp
bmdTY29wZSBlcnJvclNjb3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZy
YW1lLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJPdXQtb2YtYm91bmRz
IGFjY2Vzcy4iKSkpOworICAgIHRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBzY29wZSwgY3Jl
YXRlRXJyb3IoY2FsbGVyRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiT3V0LW9mLWJvdW5kcyBhY2Nlc3Mu
IikpKTsKIH0KICNlbmRpZgogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFy
aXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKICAgICBpbnQzMl90
IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAq
dm0sIENvZGVGb3JDYWxsKTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAg
ICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAg
ICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJh
bWUpOwogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0s
IHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsZXJGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxl
ckZyYW1lLCBzY29wZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAg
LTE0MywxMyArMTQ5LDE0IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJp
dHkKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgaW50MzJfdCBtaXNzaW5nQXJn
Q291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgKnZtLCBDb2RlRm9y
Q29uc3RydWN0KTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVu
dHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENh
bGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwog
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50
cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsZXJGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1l
LCBzY29wZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTI1NCw5
ICsyNjEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAg
IAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwotICAgIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKCp2bSk7CisKICAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdm0tPnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJh
c2UpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJ
blBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0yODMsMTEgKzI5MSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7Ci0gICAgCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwog
ICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgaWYgKCFiYXNlLT5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlk
SW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBA
IC03OTQsNiArODAzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKIApAQCAtODE5
LDcgKzgyOSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAg
ICAgICAgfQogICAgIAogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUp
OwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFGdW5j
dGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
LAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBA
IC04NDYsNyArODU2LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogICAgIH0KICAgICAKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlv
bkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAog
ICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKQEAgLTg1Niw2
ICs4NjYsOCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiB7CiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKCp2bSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjYWxsTGlua0lu
Zm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogICAgIApAQCAtODY1LDYgKzg3Nyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlw
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjYWNo
ZSB0aGVzZSBraW5kcyBvZiBjYWxscy4gVGhleSBjYW4gYmUgY29tbW9uIGFuZCBjdXJyZW50bHkg
dGhleSBhcmUKICAgICAgICAgLy8gZXhwZW5zaXZlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NDU4CisgICAgICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVl
QXNWYWx1ZSwgY2FsbExpbmtJbmZvKTsKICAgICB9CiAKQEAgLTg5Miw3ICs5MDUsNyBAQCBTbG93
UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0KSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAog
ICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC05MDAsOCArOTEz
LDkgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogCiAgICAgICAg
IENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxv
Y2soKTsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZXhlY0NhbGxlZSwgY2FsbGVlLCBz
Y29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5l
eGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CiAgICAg
ICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBlcnJvcik7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAg
ICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRv
cikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC05MjcsNiArOTQxLDggQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlv
bktpbmQoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIApA
QCAtOTQ3LDcgKzk2Myw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldp
dGgKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAg
ICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJp
bGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkgewotICAgICAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVj
dG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5j
dGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAg
ICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdl
bmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTU2LDcgKzk3Miw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgICAg
IENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxv
Y2soKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGV4ZWNDYWxsZWUsIGZ1bmN0
aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwogICAgICAgICAgICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJv
cik7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJy
b3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAg
ICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVy
YXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTY0LDcgKzk4MCw3IEBA
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBpZiAoIWlzQ2FsbChraW5k
KSkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JF
cnJvcihleGVjLCBmdW5jdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpA
QCAtMTEzOSw5ICsxMTU1LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmUKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwog
ICAgIGlmICghcmVnZXhwLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnZXhwLT5lcnJvck1lc3NhZ2UoKSkpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgcmVnZXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIApAQCAtMTE1Niw5ICsxMTc0LDEwIEBAIFVudXNl
ZFB0ciBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVcKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtF
TFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGV4ZWMpKSkKLSAgICAgICAgdm0udGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oJnZtKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNjcs
MTMgKzExODYsMTUgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhdGljRQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgZXJyb3JNZXNzYWdlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChlcnJvck1lc3NhZ2VWYWx1ZS5pc1N0cmlu
ZygpKTsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gYXNTdHJpbmcoZXJyb3JNZXNzYWdlVmFs
dWUpLT52YWx1ZShleGVjKTsKICAgICBpZiAocmVmZXJlbmNlRXJyb3JGbGFnKQotICAgICAgICB2
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBlcnJvck1l
c3NhZ2UpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOwogICAgIGVsc2UKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZGVidWdIb29rSUQpCkBAIC0xODcxLDEz
ICsxODkyLDE0IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSku
dG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iaiwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHVpZCkpOwog
ICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICByZXR1cm4g
Y291bGREZWxldGU7CiB9CiAKQEAgLTE4OTAsNiArMTkxMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmEKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7CiAgICAgSlNWYWx1ZSBr
ZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CkBAIC0xOTA5LDcgKzE5MzIsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhCiAgICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBl
eGVjLCBwcm9wZXJ0eSk7CiAgICAgfQogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29k
ZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKQEAgLTIwMjYsNiArMjA0
OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gYnl0ZWNvZGVQQzsKIApAQCAtMjAzOSw3ICsyMDY0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5k
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7
CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RG
b3VuZCkKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihl
eGVjLCBpZGVudCkpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAg
IH0KIApAQCAtMjA0OCw3ICsyMDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZQogICAgICAgICAgICAgLy8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3Zl
IHdlIG5lZWQgYSBURFogY2hlY2ssIHdlIG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNs
b3cgcGF0aC4KICAgICAgICAgICAgIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQp
OwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBqc1REWlZhbHVlKCkpIHsKLSAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAg
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVERaRXJy
b3IoZXhlYykpOwogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0yMDY1LDYgKzIwOTAsOCBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0VG9TY29wZShFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJbnN0cnVjdGlvbiogcGMg
PSBieXRlY29kZVBDOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKQEAgLTIwOTIsMjAgKzIxMTksMjAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dFRvU2NvcGUoRQogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3Qoc2NvcGUsIGV4ZWMsIGlkZW50LCBzbG90KTsK
ICAgICAgICAgaWYgKHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpID09IGpzVERaVmFsdWUoKSkg
ewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpF
cnJvcihleGVjKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RG
b3VuZCAmJiAhaGFzUHJvcGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlh
YmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQ
cm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8u
aW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNj
b3BlLCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChleGVjLT52bSgp
LmV4Y2VwdGlvbigpKQorICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZXhlYywgY29k
ZUJsb2NrLCBwYywgc2NvcGUsIGdldFB1dEluZm8sIHNsb3QsIGlkZW50KTsKQEAgLTIxMTUsOSAr
MjE0MiwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsK
IAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEV4
Y2VwdGlvblZhbHVlKTsKLSAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFs
dWUpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb25WYWx1ZSk7CiAK
ICAgICAvLyBSZXN1bHRzIHN0b3JlZCBvdXQtb2YtYmFuZCBpbiB2bS50YXJnZXRNYWNoaW5lUENG
b3JUaHJvdyAmIHZtLmNhbGxGcmFtZUZvckNhdGNoCiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhl
Yyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDggQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQkVHSU5fTk9fU0VU
X1BDKCkgXAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7ICAgICAgXAotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKQorICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsgXAorICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pCiAKICNpZm5kZWYgTkRFQlVHCiAjZGVmaW5lIExMSU5UX1NFVF9QQ19GT1JfU1RV
QlMoKSBkbyB7IFwKQEAgLTkyLDE0ICs5MywxNCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKICNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCAw
KQogCiAjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
blRvVGhyb3cpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHRocm93U2NvcGUsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICBcCiAgICAgICAgIHBjID0gcmV0
dXJuVG9UaHJvdyhleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBkb0V4Y2VwdGlvbkZ1enpp
bmdJZkVuYWJsZWQoZXhlYywgIkxMSW50U2xvd1BhdGhzIiwgcGMpOyAgICBcCi0gICAgICAgIGlm
IChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpIHsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKSB7ICAgICAgICAgXAogICAgICAg
ICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMpOyAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApA
QCAtMTUyLDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCiAj
ZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0
aW9uKF9fY3RfZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHRocm93RXhjZXB0aW9uKF9fY3RfZXhlYywgdGhyb3dTY29wZSwgZXhjZXB0aW9uVG9UaHJv
dyk7ICAgICAgICBcCiAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoMCwgY2FsbFRvVGhyb3co
X19jdF9leGVjKSk7ICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKQEAg
LTE2MCw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAg
ICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjQ2FsbGVlID0gKGV4ZWND
YWxsZWUpOyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgZG9FeGNlcHRpb25GdXp6aW5n
SWZFbmFibGVkKF9fY2NlX2V4ZWMsICJMTEludFNsb3dQYXRocy9jYWxsIiwgbnVsbHB0cik7IFwK
LSAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIExMSU5UX0NB
TExfRU5EX0lNUEwoMCwgY2FsbFRvVGhyb3coX19jY2VfZXhlY0NhbGxlZSkpOyAgICAgIFwKICAg
ICB9IHdoaWxlIChmYWxzZSkKIApAQCAtNDY2LDYgKzQ2Nyw4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHJlcGxhY2UpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgVk1FbnRyeUZyYW1lKiB2bUVudHJ5RnJhbWUgPSB2bS50b3BWTUVu
dHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1l
KHZtRW50cnlGcmFtZSk7CiAgICAgaWYgKCFjYWxsZXJGcmFtZSkgewpAQCAtNDgyLDkgKzQ4NSw5
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIGRhdGFMb2dGKCJOdW0g
Y2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVl
TG9jYWxzKTsKICAgICBkYXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9j
aygpLT5tX251bVZhcnMpOwogCi0gICAgZGF0YUxvZ0YoIkN1cnJlbnQgT1Mgc3RhY2sgZW5kIGlz
IGF0ICVwLlxuIiwgZXhlYy0+dm0oKS5zb2Z0U3RhY2tMaW1pdCgpKTsKKyAgICBkYXRhTG9nRigi
Q3VycmVudCBPUyBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsK
ICNpZiAhRU5BQkxFKEpJVCkKLSAgICBkYXRhTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5k
IGlzIGF0ICVwLlxuIiwgZXhlYy0+dm0oKS5jbG9vcFN0YWNrTGltaXQoKSk7CisgICAgZGF0YUxv
Z0YoIkN1cnJlbnQgQyBMb29wIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIsIHZtLmNsb29wU3RhY2tM
aW1pdCgpKTsKICNlbmRpZgogCiAjZW5kaWYKQEAgLTUwMiw3ICs1MDUsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzdGFja19jaGVjaykKICNlbmRpZgogCiAgICAgRXJyb3JIYW5kbGluZ1Njb3Bl
IGVycm9yU2NvcGUodm0pOwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1l
KTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwgdGhyb3dTY29wZSk7
CiAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGNhbGxlckZyYW1lKTsKICAgICBMTElOVF9SRVRVUk5f
VFdPKHBjLCBleGVjKTsKIH0KQEAgLTc4NCwxMCArNzg3LDExIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxk
RGVsZXRlKSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQorc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1
YnNjcmlwdC5pc1N0cmluZygpKSkgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
ICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSh2bSk7CiAgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1
Y3R1cmUpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0
aW5nQXRvbWljU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0
cmluZyhleGVjKSkgewpAQCAtODA2LDEwICs4MTAsMTAgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlW
YWwoRXhlY1N0YXRlKiBleGVjLAogICAgIH0KIAogICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0
Q29lcmNpYmxlKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1
dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKLSAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9w
ZXJ0eSk7CiB9CkBAIC04MTcsNyArODIxLDcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhl
Y1N0YXRlKiBleGVjLAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0
X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpKSk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92
YWwsIGdldEJ5VmFsKHZtLCBleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV92YWwpCkBAIC04MjcsNiArODMxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgYm9vbCBp
c1N0cmljdE1vZGUgPSBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CiAgICAgCiAg
ICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3Qg
aSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpAQCAtODM1LDE2ICs4NDAsMTYgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YQogICAgICAgICAgICAgaWYgKG9iamVjdC0+
Y2FuU2V0SW5kZXhRdWlja2x5KGkpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhR
dWlja2x5KHZtLCBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUsIGlz
U3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQotICAgICAg
ICBiYXNlVmFsdWUucHV0QnlJbmRleChleGVjLCBpLCB2YWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwg
dmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAogICAg
IGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZVZhbHVlLCBpc1N0cmljdE1vZGUpOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywg
cHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICBMTElOVF9FTkQoKTsKIH0KQEAgLTExODYsNiAr
MTE5MSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlY0Nh
bGxlZS0+Y2xlYXJSZXR1cm5QQygpOwpAQCAtMTIzOCwxOCArMTI0NCwyMCBAQCBzdGF0aWMgU2xv
d1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWND
YWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogI2lmIExMSU5UX1NMT1df
UEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZ0YoIlBlcmZvcm1pbmcgY2FsbCB3aXRoIHJlY29yZGVk
IFBDID0gJXBcbiIsIGV4ZWMtPmN1cnJlbnRWUEMoKSk7CiAjZW5kaWYKICAgICAKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsK
LSAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgIGlmICghY2FsbGVlQXNGdW5jdGlv
bkNlbGwpIHsKKyAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBo
YW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7Ci0gICAg
CisgICAgfQogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5zY29wZVVu
Y2hlY2tlZCgpOwotICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBFeGVjdXRhYmxlQmFz
ZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNvZGVQdHI7CkBAIC0xMzM1LDEyICsxMzQzLDE0IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXgKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jYWxsKQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwogICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwp
OwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0KQogewogICAg
IExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAg
IHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKQEAg
LTE0OTgsNiArMTUwOCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1ZykK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKQogewogICAg
IExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBnZW5lcmljVW53aW5kKCZ2bSwgZXhlYyk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0K
QEAgLTE1MDUsNyArMTUxNiw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5k
bGVfZXgKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKIHsK
ICAgICBMTElOVF9CRUdJTigpOwotCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgIEpTT2JqZWN0
KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CiAgICAg
R2V0UHV0SW5mbyBnZXRQdXRJbmZvKHBjWzRdLnUub3BlcmFuZCk7CkBAIC0xNTE2LDcgKzE1MjYs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgTExJTlRf
UkVUVVJOKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3Vu
ZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90
Rm91bmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAgICAgfQogCkBAIC0xNTI1LDcgKzE1MzUsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgICAgICAgICAvLyBXaGVuIHdl
IGNhbid0IHN0YXRpY2FsbHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJm
b3JtIHRoZSBjaGVjayBvbiB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpzVERa
VmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVH
bG9iYWwoZXhlYywgdm0sIHBjLCBzY29wZSwgc2xvdCwgaWRlbnQpOwpAQCAtMTU4Miw5ICsxNTky
LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9h
bmRfbm90aWZ5X3Byb2ZpbGVyKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgUkVMRUFTRV9B
U1NFUlQoISF2bS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoISF0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKIAotICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
dm0uZXhjZXB0aW9uKCkpKQorICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpOwogICAgIExMSU5U
X1JFVFVSTl9UV08ocGMsIDApOwogfQpAQCAtMTYxOSw5ICsxNjI5LDExIEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJh
bWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFt
ZTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgaWYg
KCFleGVjKQogICAgICAgICBleGVjID0gcHJvdG9GcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcs
IDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3Au
Y29tKQogICoKQEAgLTczLDE4ICs3MywyMCBAQCB2b2lkIEFycmF5Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlv
bnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJh
eVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBw
cm9maWxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxlbmd0aCwgSlNW
YWx1ZSBuZXdUYXJnZXQpCitKU1ZhbHVlIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVj
U3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBpZiAoIWxlbmd0aC5pc051bWJlcigpKQogICAgICAgICByZXR1cm4g
Y29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0
LCAmbGVuZ3RoLCAxLCBuZXdUYXJnZXQpOwogICAgIAogICAgIHVpbnQzMl90IG4gPSBsZW5ndGgu
dG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKG4gIT0gbGVuZ3RoLnRvTnVtYmVyKGV4ZWMpKQotICAg
ICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2gg
cG9zaXRpdmUgaW50ZWdlci4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBzaXpl
IGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBuZXdU
YXJnZXQpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhT
aXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5l
d1RhcmdldCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVp
cmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1Rhcmdl
dCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwNy0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1
ZGUgIlRocm93U2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDcgKzYxLDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0
YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBs
ZW5ndGgsIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKK0pTVmFsdWUgY29uc3RydWN0
QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIHByb3RvdHlwZSA9IEpTVmFs
dWUoKSk7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclBy
aXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCkBAIC02OCw2ICs2OSw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHIKIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXkKIGlubGluZSBib29sIGlzQXJyYXko
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoIWFyZ3VtZW50VmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC04MSw3ICs4NSw3IEBAIGlubGluZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBKU1YKIAogICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3Qq
Pihhcmd1bWVudCk7CiAgICAgICAgIGlmIChwcm94eS0+aXNSZXZva2VkKCkpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNBcnJheSBjYW5u
b3QgYmUgY2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNB
cnJheSBjYW5ub3QgYmUgY2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGFyZ3VtZW50
ID0gcHJveHktPnRhcmdldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjUsNiArMjY1LDkgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJ
bgogdGVtcGxhdGU8SlNBcnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CiB2b2lk
IHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRl
ciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5zaWduZWQg
bGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudENvdW50
ID4gcmVzdWx0Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gY3VycmVudENvdW50IC0gcmVz
dWx0Q291bnQ7CiAKQEAgLTI4NiwxNCArMjg5LDE0IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGgKICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUo
ZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXNP
YmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgdG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCB0bykpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsg
ayA+IGxlbmd0aCAtIGNvdW50OyAtLWspIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsg
LSAxKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkp
IHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMzAyLDYgKzMwNSw5IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGgKIHRlbXBsYXRlPEpTQXJyYXk6OlNoaWZ0Q291bnRNb2RlIHNoaWZ0
Q291bnRNb2RlPgogdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNP
YmosIHVuc2lnbmVkIGhlYWRlciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1
bHRDb3VudCwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0Q291bnQgPiBjdXJyZW50Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0g
cmVzdWx0Q291bnQgLSBjdXJyZW50Q291bnQ7CiAKQEAgLTMxMCw3ICszMTYsNyBAQCB2b2lkIHVu
c2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogCiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0
IG92ZXJmbG93LgogICAgIGlmIChjb3VudCA+IChVSU5UX01BWCAtIGxlbmd0aCkpIHsKLSAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjcsOCAr
MzMzLDggQEAgdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIAogICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVlLCB0
cnVlKTsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRl
bGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMzYxLDcgKzM2Nyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgY3VzdG9tSm9pbkNhc2Ug
PSB0cnVlOwogCiAgICAgaWYgKFVOTElLRUxZKGN1c3RvbUpvaW5DYXNlKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0
ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09i
amVjdCksICJdIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOwogCiAgICAgLy8gNC4gUmV0dXJuIHRoZSBy
ZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGZ1bmMgcHJv
dmlkaW5nIGFycmF5IGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0eSBhcmd1bWVudHMgbGlz
dC4KICAgICBpZiAoIWlzSlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxsVHlwZSAhPSBDYWxsVHlw
ZTo6SG9zdCB8fCBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gIT0gYXJyYXlQcm90b0Z1bmNKb2lu
KQpAQCAtNjc0LDYgKzY4MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0YKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKIAogICAgIGlmIChp
c0pTQXJyYXkodGhpc1ZhbHVlKSkKQEAgLTY5NCw4ICs3MDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChl
eGVjLCBsZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
aWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgcHV0TGVuZ3RoKGV4ZWMsIHRoaXNPYmosIGpzTnVtYmVyKGxl
bmd0aCAtIDEpKTsKQEAgLTc0MCwxMSArNzQ5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0YKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGdldExlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC04MTIsNyArODIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgbG93ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAoIXZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0KIApAQCAtODIyLDcgKzgzMyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
IXRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIHVwcGVyKSkgewogICAgICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtOTAyLDYgKzkxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0YKICAgICAvLyAxNS40LjQuMTIKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNP
YmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCF0aGlzT2JqKQpAQCAtOTY2LDcgKzk3OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGRlbGV0ZUNvdW50KTsK
ICAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGVs
ZXRlQ291bnQ7ICsraykgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5
KGV4ZWMsIHRoaXNPYmosIGsgKyBiZWdpbik7CkBAIC0xMTIzLDYgKzExMzUsOCBAQCBzdGF0aWMg
Ym9vbCBtb3ZlRWxlbWVudHMoRXhlY1N0YXRlKiBleGVjCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBjb25jYXRBcHBlbmRPbmUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGZpcnN0
LCBKU1ZhbHVlIHNlY29uZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBBU1NFUlQoIWlzSlNBcnJheShzZWNvbmQpKTsKICAgICBBU1NFUlQoIXNo
b3VsZFVzZVNsb3dQdXQoZmlyc3QtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgQnV0dGVyZmx5KiBm
aXJzdEJ1dHRlcmZseSA9IGZpcnN0LT5idXR0ZXJmbHkoKTsKQEAgLTExMzUsNyArMTE0OSw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25jYXRBcHBlbmRPbmUoRXgKICAgICBTdHJ1Y3R1cmUq
IHJlc3VsdFN0cnVjdHVyZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OmNyZWF0ZSh2bSwgcmVzdWx0U3RydWN0dXJlLCBmaXJzdEFycmF5
U2l6ZSArIDEpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBpZiAo
IXJlc3VsdC0+YXBwZW5kTWVtY3B5KGV4ZWMsIHZtLCAwLCBmaXJzdCkpIHsKICAgICAgICAgaWYg
KCFtb3ZlRWxlbWVudHMoZXhlYywgdm0sIHJlc3VsdCwgMCwgZmlyc3QsIGZpcnN0QXJyYXlTaXpl
KSkgewpAQCAtMTE1NCw2ICsxMTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvUAogewogICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBKU0FycmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAKQEAgLTExOTcsNyArMTIxMiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1AKICAgICBTdHJ1Y3R1cmUqIHJlc3Vs
dFN0cnVjdHVyZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkqIHJlc3Vs
dCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIHJlc3VsdFN0cnVjdHVyZSwg
Zmlyc3RBcnJheVNpemUgKyBzZWNvbmRBcnJheVNpemUpOwogICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMsIHNjb3BlKSk7CiAKICAgICBpZiAodHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAg
ICAgZG91YmxlKiBidWZmZXIgPSByZXN1bHQtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91Ymxl
KCkuZGF0YSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4
LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTY4LDYgKzY4LDcgQEAgdm9pZCBCb29sZWFuUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9v
bGVhbihmYWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3Ry
aW5ncy5mYWxzZVN0cmluZygpKTsKQEAgLTc2LDcgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBib29sZWFuUHJvdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZt
LT5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZygpKTsKIAogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKEJvb2xlYW5PYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBpZiAoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9
PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5z
bWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKSk7CkBAIC04NywxMiArODgsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNCb29s
ZWFuKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKEJvb2xlYW5PYmplY3Q6OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQm9v
bGVhbk9iamVjdCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2RlZmluZSBFTkRfSU1QTCgpIFJFVFVSTl9UV08ocGMsIGV4ZWMpCiAKICNkZWZpbmUgVEhS
T1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgIFwK
KyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvblRvVGhy
b3cpOyAgICAgIFwKICAgICAgICAgUkVUVVJOX1RPX1RIUk9XKGV4ZWMsIHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE0MCwxMyAr
MTQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBj
YWxsVGFyZ2V0KSBSRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQogCi0jZGVmaW5lIENB
TExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIEV4ZWNTdGF0ZSogY3RFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEluc3RydWN0aW9uKiBjdFBDID0gKHBj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIENBTExfRU5EX0lNUEwoY3RFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY3RF
eGVjKSk7ICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KICNkZWZpbmUgQ0FM
TF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgRXhlY1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0gKHBjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsOCArNzMsMTAgQEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0Zv
cihFeGVjU3RhdAogCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBw
cm9wTmFtZSwgSlNWYWx1ZSBiYXNlVmFsKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghYmFzZVZh
bC5pc09iamVjdCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbCkpOworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3Io
ZXhlYywgYmFzZVZhbCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NSw3
ICs4Nyw3IEBAIGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAg
ICAgcmV0dXJuIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkpOwogCiAgICAgYXV0byBwcm9w
ZXJ0eSA9IHByb3BOYW1lLnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPnZtKCku
ZXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5KTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNyArMzgsOSBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihF
eGVjU3RhdGUqCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMs
IGVycm9yKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCisg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKTsKICNpZiBMTElOVF9TTE9XX1BB
VEhfVFJBQ0lORwogICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCB2bS0+ZXhjZXB0
aW9uKCksICIuXG4iKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NywxMCArMzcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBh
cmdzLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0gZ2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7CiAg
ICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIAogICAgIHJldHVybiBj
b25zdHJ1Y3QoZXhlYywgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVj
dERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmls
ZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMjAsOSAr
MzIwLDEwIEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXQKIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIGZvcm1hdGVEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBE
YXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAK
QEAgLTUyMiwxMyArNTIzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIERhdGVJbnN0YW5jZSog
dGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJ
bnZhbGlkIERhdGUiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKTsK
IAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRh
dGVUaW1lKQpAQCAtNTY4LDkgKzU3MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5j
ZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRo
aXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwpAQCAtNTc4
LDkgKzU4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+
aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlRGF0ZSkpOwpAQCAtNTg4LDkgKzU5MiwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2Nh
bGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwg
TG9jYWxlVGltZSkpOwpAQCAtNTk4LDEzICs2MDMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0ZS5wcm90b3R5cGVb
U3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90
eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4i
KTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1
ZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0g
ZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4
cGVjdGVkIGEgZmlyc3QgYXJndW1lbnQuIik7CiAKICAgICBKU1ZhbHVlIGhpbnRWYWx1ZSA9IGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlw
ZSA9IHRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZShleGVjLCBoaW50VmFsdWUpOwpAQCAtNjE5LDE4
ICs2MjUsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNl
KHRoaXNWYWx1ZSk7IAogCkBAIC02NDIsOSArNjUwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0VVRDRnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC02NTYsOSArNjY1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9u
dGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0
ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NzAsOSArNjgwLDEwIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02ODQsOSArNjk1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTY5OCw5ICs3MTAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzEyLDkgKzcyNSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsgCiAKQEAgLTcyNiw5ICs3NDAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENEYXkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNl
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3Rh
bmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NDAs
OSArNzU1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMt
PnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFz
RGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NTQsOSArNzcwLDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNW
YWx1ZSk7IAogCkBAIC03NjgsOSArNzg1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0TWludXRlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFu
Y2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc4Miw5
ICs4MDAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShl
eGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmog
PSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzk2LDkgKzgxNSwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRo
aXNWYWx1ZSk7IAogCkBAIC04MTAsOSArODMwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTgyNCw5ICs4NDUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNl
Y29uZHMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlz
RGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9
IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwpAQCAtODQwLDkgKzg2MiwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVy
bmFsTnVtYmVyKCk7CkBAIC04NTYsOSArODc5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VGltZXpvbmVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC04NzAsOSArODk0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGlt
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRl
T2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg4NCw5ICs5MDksMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVt
QXJnc1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRl
SW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBE
YXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKICAg
ICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKQEAgLTkyMyw5
ICs5NDksMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRpbQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgbnVtQXJnc1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewpAQCAtMTAzNSw5ICsx
MDYyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0o
KSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwpAQCAtMTA3OCw5
ICsxMTA2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTEwOTQsNiArMTEyMyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nh
c3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMTEyLDEzICsxMTQyLDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRvSVNPVmFsdWUsIGNhbGxE
YXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9JU09TdHJpbmcgaXMgbm90
IGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIikpOwogCiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGFzT2JqZWN0KHRvSVNPVmFsdWUpLCBjYWxs
VHlwZSwgY2FsbERhdGEsIG9iamVjdCwgZXhlYy0+ZW1wdHlMaXN0KCkpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEg
cHJpbWl0aXZlIHZhbHVlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1p
dGl2ZSB2YWx1ZSIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk4LDM0ICsxOTgsMzQgQEAgYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRl
KiBleGVjLCBKU09iagogICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNP
YmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCitKU09iamVjdCog
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUp
CiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcg
IiwgY29uc3RydWN0b3JOYW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQi
KSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJj
YWxsaW5nICIsIGNvbnN0cnVjdG9yTmFtZSwgIiBjb25zdHJ1Y3RvciB3aXRob3V0IG5ldyBpcyBp
bnZhbGlkIikpOwogfQogCi1KU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
KQorSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2UpCitKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlM
aXRlcmFsIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dUeXBlRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQog
Ci1KU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCog
dGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewot
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKKyAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOworICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwog
fQogCiBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogCkBAIC03MSwyMSAr
NzIsMjEgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iagogLy8gTWV0
aG9kcyB0byB0aHJvdyBFcnJvcnMuCiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUg
YW4gdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi1KU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLUpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwotSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJy
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJu
IHN0YXRlLT52bSgpLnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRl
LCBlcnJvck1lc3NhZ2UpKTsgfQorSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhy
b3dTY29wZSYsIGNvbnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CitKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKK2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4
ZWNTdGF0ZSogc3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkgeyByZXR1cm4gdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywg
d3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCi1pbmxpbmUgdm9pZCB0aHJvd1ZNRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0
aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcikpOyB9Ci1p
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KLWlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRl
cmFsIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIGVycm9yTWVzc2FnZSkpOyB9Ci1pbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5
cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7
IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93UmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSB2b2lkIHRo
cm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBFeGNlcHRpb24q
IGV4Y2VwdGlvbikgeyB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsgfQor
aW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93
U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1
ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOyB9Citp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9
CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2Up
KTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEV4ZWNTdGF0ZSog
c3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihzdGF0ZSwgc2NvcGUsIGVycm9y
TWVzc2FnZSkpOyB9CiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByaXZhdGU6CkBAIC0xMDksNyArMTEwLDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIH0KIApAQCAtMTIxLDcgKzEyNCw5IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5
cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxs
ZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
bio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDEyICs2NywxNSBAQCB2b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgCiAvLyBFQ01BLTI2MiA1LjEsIDE1LjExLjQuNAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIC8vIDEuIExldCBPIGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJZiBUeXBlKE8p
IGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXRo
aXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKIAogICAgIC8vIEd1YXJkIGFn
YWluc3QgcmVjdXJzaW9uIQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uRnV6ei5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uRnV6ei5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNyAr
MzgsMTggQEAgdW5zaWduZWQgbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKCkgewogLy8gQ2Fs
bCB0aGlzIG9ubHkgaWYgeW91IGtub3cgdGhhdCBleGNlcHRpb24gZnV6emluZyBpcyBlbmFibGVk
Lgogdm9pZCBkb0V4Y2VwdGlvbkZ1enppbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiB3
aGVyZSwgdm9pZCogcmV0dXJuUEMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKE9wdGlvbnM6
OnVzZUV4Y2VwdGlvbkZ1enooKSk7CiAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoZXhl
Yy0+dm0oKS5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAg
ICAgCiAgICAgc19udW1iZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MrKzsKICAgICAKICAgICB1bnNp
Z25lZCBmaXJlVGFyZ2V0ID0gT3B0aW9uczo6ZmlyZUV4Y2VwdGlvbkZ1enpBdCgpOwogICAgIGlm
IChmaXJlVGFyZ2V0ID09IHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKSB7CiAgICAgICAg
IHByaW50ZigiSlNDIEVYQ0VQVElPTiBGVVpaOiBUaHJvd2luZyBmdXp6IGV4Y2VwdGlvbiB3aXRo
IGNhbGwgZnJhbWUgJXAsIHNlZW4gaW4gJXMgYW5kIHJldHVybiBhZGRyZXNzICVwLlxuIiwgZXhl
Yywgd2hlcmUsIHJldHVyblBDKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbigK
LSAgICAgICAgICAgIGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0
aW9uIEZ1enoiKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeGNlcHRpb24gRnV6eiIpKSk7CiAgICAgfQogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg5
LDIzICsyODksMjMgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEV4ZWNTdGF0ZSogZXhlYwog
ICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLiIpOwogfQogCi1KU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IoZXhlYykpOwogfQogCi1KU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0
YXRlKiBleGVjKQorSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
ZXhlYykpOwogfQogCi1KU09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKLSAg
ICByZXR1cm4gdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbigmdm0pKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Miw5
ICs1Myw5IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3QKIEpTT2Jq
ZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpOwogSlNTdHJpbmcqIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlKTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihFeGVjU3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKik7CitKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSos
IFRocm93U2NvcGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJik7CitKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIFRo
cm93U2NvcGUmKTsKIAogCiBjbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2
ICsyNjgsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29w
ZSogc2NvcGUsIEpTT2JqZWN0KiYgZXhjZXB0aW9uKQogewogICAgIFZNKiB2bSA9IHNjb3BlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAog
ICAgIEFTU0VSVCh2bS0+aGVhcC5pc0RlZmVycmVkKCkpOwogICAgIEFTU0VSVChzdGFydENvbHVt
bigpICE9IFVJTlRfTUFYKTsKQEAgLTMxOSw4ICszMjAsOCBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4
ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVj
dXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCiAgICAgICAgIGxh
c3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtl
ZENvZGVCbG9jaykgewotICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCi0g
ICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwKKyAgICAgICAgZXhjZXB0aW9u
ID0gdGhyb3dFeGNlcHRpb24oCisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgdGhyb3dTY29wZSwKICAgICAgICAgICAgIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBleGVjdXRhYmxlLT5tX3NvdXJjZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC00MjksMjAgKzQzMCwyMyBAQCBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6
OnNfaW5mbyA9CiAKIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9i
YWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5l
dmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
ICAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywg
c291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOwotICAgIGV4ZWN1dGFibGUtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsK
IAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9i
amVjdC0+Y3JlYXRlRXZhbENvZGVCbG9jayhleGVjLCBleGVjdXRhYmxlLCB2YXJpYWJsZXNVbmRl
clREWik7CiAgICAgaWYgKCF1bmxpbmtlZEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldChleGVjLT52bSgpLCBl
eGVjdXRhYmxlLCB1bmxpbmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXZhbENvZGVCbG9jay5zZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCwgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC03Niw4ICs3NiwxMSBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
CiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIEpTVmFsdWUg
bmV3VGFyZ2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxF
bmFibGVkKCkpCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVz
c2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdl
KCkpKTsKICAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9z
aXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5ld1RhcmdldCk7CiB9CiAKQEAg
LTg2LDYgKzg5LDkgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRQog
ICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIAogICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVO
dW1iZXIsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUs
IEpTVmFsdWUgbmV3VGFyZ2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gSG93IHdlIHN0cmlu
Z2lmeSBmdW5jdGlvbnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxp
dHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKQEAgLTExNiwxNCArMTIyLDE0IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEUKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5h
bWUsICpleGVjLCBzb3VyY2UsIGV4Y2VwdGlvbiwgb3ZlcnJpZGVMaW5lTnVtYmVyKTsKICAgICBp
ZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgICAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgfQogCiAg
ICAgU3RydWN0dXJlKiBzdWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG5ld1RhcmdldCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgp
LCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVy
ZSk7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9i
amVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwogfQogCiAvLyBFQ01BIDE1
LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBDYWxsVHlwZSBGdW5jdGlvblByb3Rv
dHlwZTo6Z2V0Q2FsbERhdGEoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CkBAIC0xMTIsMTkgKzExNCwy
MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0
LT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSkgewogICAg
ICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2Fs
bFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY2xhc3NJbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFs
U3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBjbGFzc0luZm8tPmNsYXNzTmFtZSwgIigpIHtcbiAg
ICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogfQogCiAvLyAxNS4zLjQuNSBGdW5jdGlvbi5wcm90b3R5
cGUuYmluZCAodGhpc0FyZyBbLCBhcmcxIFssIGFyZzIsIC4uLl1dKQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY0JpbmQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxs
ZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAvLyBMZXQgVGFyZ2V0IGJlIHRoZSB0aGlzIHZh
bHVlLgpAQCAtMTM0LDExICsxMzgsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblBybwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEodGFyZ2V0LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIC8vIFByaW1p
dGl2ZSB2YWx1ZXMgYXJlIG5vdCBjYWxsYWJsZS4KICAgICBBU1NFUlQodGFyZ2V0LmlzT2JqZWN0
KCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKICAgICAvLyBMZXQgQSBiZSBhIG5ldyAocG9zc2libHkg
ZW1wdHkpIGludGVybmFsIGxpc3Qgb2YgYWxsIG9mIHRoZSBhcmd1bWVudCB2YWx1ZXMgcHJvdmlk
ZWQgYWZ0ZXIgdGhpc0FyZyAoYXJnMSwgYXJnMiBldGMpLCBpbiBvcmRlci4KICAgICBzaXplX3Qg
bnVtQm91bmRBcmdzID0gZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSA/IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSAtIDEgOiAwOwpAQCAtMTQ2LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Qcm8KICAgICBpZiAobnVtQm91bmRBcmdzKSB7CiAgICAgICAgIGJv
dW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aENvbnRpZ3VvdXMpLCBudW1Cb3VuZEFyZ3MpOwogICAgICAgICBpZiAoIWJvdW5kQXJncykKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUJvdW5kQXJnczsgKytpKQogICAgICAgICAgICAgYm91bmRBcmdzLT5pbml0aWFs
aXplSW5kZXgodm0sIGksIGV4ZWMtPmFyZ3VtZW50KGkgKyAxKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDIwNTE0
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOSwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODcsMTEgKzg3LDE0IEBA
IEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogYm9vbCBjYWxsU2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwg
SlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0
ZXJTZXR0ZXIpOwogCiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpIHsK
ICAgICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCi0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEw
MSw3ICsxMDQsNyBAQCBib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlCiAg
ICAgYXJncy5hcHBlbmQodmFsdWUpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxs
RGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+
bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxs
KGV4ZWMsIHNldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDExICszNjcs
MTQgQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmNyZWF0ZUNvbGxhdG9yKEV4ZWNTdAogCiBKU1ZhbHVl
IEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoRXhlY1N0YXRlJiBzdGF0ZSwgU3RyaW5nVmll
dyB4LCBTdHJpbmdWaWV3IHkpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMC4zLjQgQ29tcGFy
ZVN0cmluZ3MgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2Nv
bGxhdG9yKSB7CiAgICAgICAgIGNyZWF0ZUNvbGxhdG9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFt
X2NvbGxhdG9yKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBh
cmUgc3RyaW5ncy4iKSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gY29t
cGFyZSBzdHJpbmdzLiIpKSk7CiAgICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CkBAIC0zNzksNyArMzgyLDcgQEAgSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNvbXBh
cmVTdHJpbmdzKEV4ZQogICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JZID0gY3JlYXRlSXRlcmF0
b3IoeSk7CiAgICAgYXV0byByZXN1bHQgPSB1Y29sX3N0cmNvbGxJdGVyKG1fY29sbGF0b3IuZ2V0
KCksICZpdGVyYXRvclgsICZpdGVyYXRvclksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3Ry
aW5ncy4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwg
Y3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmlu
Z3MuIikpKTsKICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTYgKzEw
NiwxOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEwLjMuMyBJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0
IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgogICAgIEludGxDb2xsYXRvciogY29s
bGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5j
b21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIENvbGxhdG9yIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBDb2xsYXRvciIpKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFy
ZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBhcmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2Jv
dW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kQ29tcGFyZSkgewotICAg
ICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGNvbGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYg
YmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40Lgog
ICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCkBA
IC0xMzQsMTAgKzEzNiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xs
YXRvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAo
RUNNQS00MDIgMi4wKQogICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0
PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVND
SUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3Ii
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgQ29sbGF0b3IiKSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+
cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNiArNDIwLDkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OnNldEZvcm1hdHNGcm9tUAogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbGVzLCBKU1Zh
bHVlIG9yaWdpbmFsT3B0aW9ucykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTIuMS4xIEluaXRp
YWxpemVEYXRlVGltZUZvcm1hdCAoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpIChF
Q01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFsaXplZElu
dGxPYmplY3RdXSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8g
Mi4gU2V0IGRhdGVUaW1lRm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4K
QEAgLTQ0MCw3ICs0NDMsNiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURh
dGVUCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbG9jYWxlT3B0OwogCiAgICAgLy8gOC4g
TGV0IG1hdGNoZXIgYmUgR2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmlu
ZyIsIMKrImxvb2t1cCIsICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgVk0mIHZtID0g
ZXhlYy52bSgpOwogICAgIFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihl
eGVjLCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAi
LCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIg
b3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZBYnJ1cHQo
bWF0Y2hlcikuCiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODcsNyArNDg5LDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgICAgICAvLyBk
LiBMZXQgdHogYmUgQ2Fub25pY2FsaXplVGltZVpvbmVOYW1lKHR6KS4KICAgICAgICAgdHogPSBj
YW5vbmljYWxpemVUaW1lWm9uZU5hbWUob3JpZ2luYWxUeik7CiAgICAgICAgIGlmICh0ei5pc051
bGwoKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKCZleGVjLCBTdHJpbmc6OmZvcm1h
dCgiaW52YWxpZCB0aW1lIHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoJmV4ZWMsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgi
aW52YWxpZCB0aW1lIHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNjQ3LDcgKzY0OSw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9y
KiBnZW5lcmF0b3IgPSB1ZGF0cGdfb3BlbihkYXRhTG9jYWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0
dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1h
dCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
ImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02NjMsNyArNjY1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVAogICAgIH0KICAgICB1ZGF0cGdfY2xvc2UoZ2VuZXJhdG9yKTsKICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiKSk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjc0LDcgKzY3Niw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0
ZVQKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBtX2RhdGVG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4o
dWRhdF9vcGVuKFVEQVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBtX2xvY2FsZS51dGY4KCkuZGF0
YSgpLCB0aW1lWm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5s
ZW5ndGgoKSwgcGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgo
KSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
VGltZUZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04ODMsNiArODg1LDkgQEAgSlNPYmplY3QqIEludGxEYXRl
VGltZUZvcm1hdDo6cmVzb2x2ZWRPcAogCiBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9y
bWF0KEV4ZWNTdGF0ZSYgZXhlYywgZG91YmxlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyAxMi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjAp
CiAgICAgaWYgKCFtX2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXQpIHsKICAgICAgICAgaW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KGV4ZWMsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwpA
QCAtODkxLDcgKzg5Niw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhl
Y1MKIAogICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJvdyBh
IFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGF0ZSB2
YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdCgpIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJkYXRl
IHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiKSk7CiAKICAg
ICAvLyBEZWxlZ2F0ZSByZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtOTAzLDcgKzkwOCw3IEBAIEpTVmFsdWUgSW50bERhdGVU
aW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1MKICAgICAgICAgdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0
LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBudWxscHRyLCAmc3Rh
dHVzKTsKICAgICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRl
IHZhbHVlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSIpKTsKIAogICAgIHJldHVy
biBqc1N0cmluZygmZXhlYywgU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCkpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMCw2ICsxMTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBE
YXRlVGltZUZvcm1hdCBvYmplY3QuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5
bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CkBAIC0x
MTcsMjMgKzEyMSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
CiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGgg
RUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghZHRmKQotICAgICAgICBk
dGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUo
KS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlu
dGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIGR0ZiA9IGpzRHluYW1p
Y0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZh
dGVOYW1lKCkpKTsKIAogICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKCFk
dGYpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1l
Rm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRG
b3JtYXQgPSBkdGYtPmJvdW5kRm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3Jt
YXRdXSBpbnRlcm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVm
aW5lZCwKICAgICBpZiAoIWJvdW5kRm9ybWF0KSB7Ci0gICAgICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxP
YmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24g
b2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2Yg
RuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
d2FzIDAgaW4gRUNNQS00MDIgMS4wKQogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3Qg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJm
b3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNp
Yyk7CiAgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOwogICAgICAgICBpZiAoIWJv
dW5kQXJncykKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKHN0YXRlKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0ZSwgc2NvcGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQg
YmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJv
dW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHRhcmdldE9iamVjdCwgZHRmLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0
IikpOwpAQCAtMTQ4LDE2ICsxNTEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsRGF0ZVRpbQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0
ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBj
b21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlm
ICghZGF0ZVRpbWVGb3JtYXQpCi0gICAgICAgIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2Fz
dDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0
ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVl
UHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8
SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1l
KCkpKTsKIAogICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERh
dGVUaW1lRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVG
b3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgU3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vrb2xzYWtAZ21haWwuY29tKQor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU5LDYgKzE2MCw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckYKIHsKICAgICAvLyAxMS4xLjEgSW5pdGlh
bGl6ZU51bWJlckZvcm1hdCAobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSAoRUNNQS00
MDIgMi4wKQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gSWYgbnVtYmVyRm9ybWF0IGhhcyBhbiBb
W2luaXRpYWxpemVkSW50bE9iamVjdF1dIGludGVybmFsIHNsb3Qgd2l0aCB2YWx1ZSB0cnVlLCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IG51bWJlckZvcm1hdC5b
W2luaXRpYWxpemVkSW50bE9iamVjdF1dIHRvIHRydWUuCkBAIC0xODYsNyArMTg4LDcgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IG9wdDsKIAogICAgIC8vIDguIExldCBtYXRjaGVyIGJlIEdldE9wdGlvbihvcHRp
b25zLCAibG9jYWxlTWF0Y2hlciIsICJzdHJpbmciLCDCqyJsb29rdXAiLCAiYmVzdCBmaXQiwrss
ICJiZXN0IGZpdCIpLgotICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihzdGF0
ZSwgb3B0aW9ucywgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJs
b29rdXAiLCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9v
a3VwXCIgb3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CisgICAgU3RyaW5nIG1hdGNoZXIg
PSBpbnRsU3RyaW5nT3B0aW9uKHN0YXRlLCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2Nh
bGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3Qg
YmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CiAgICAg
Ly8gOS4gUmV0dXJuSWZBYnJ1cHQobWF0Y2hlcikuCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm47CkBAIC0yMzAsNyArMjMyLDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsK
ICAgICAgICAgLy8gYS4gSWYgdGhlIHJlc3VsdCBvZiBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUo
YyksIGlzIGZhbHNlLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAg
IGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1
cnJlbmN5IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiKSkpOworICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29k
ZSIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzksNyAr
MjQxLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIGlm
IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAgICAvLyAyMi4gSWYgcyBpcyAi
Y3VycmVuY3kiIGFuZCBjIGlzIHVuZGVmaW5lZCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9u
LgogICAgICAgICBpZiAoY3VycmVuY3kuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBtdXN0IGJlIGEgc3RyaW5nIikp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJjdXJyZW5jeSBtdXN0IGJlIGEgc3RyaW5nIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTQyMywxMSArNDI1LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Y3Jl
YXRlTnVtYmVyRm9ybWEKIAogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXROdW1iZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgZG91YmxlIG51bWJlcikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8v
IDExLjMuNCBGb3JtYXROdW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAg
ICAgaWYgKCFtX251bWJlckZvcm1hdCkgewogICAgICAgICBjcmVhdGVOdW1iZXJGb3JtYXQoc3Rh
dGUpOwogICAgICAgICBpZiAoIW1fbnVtYmVyRm9ybWF0KQotICAgICAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CiAgICAgfQogCiAgICAg
Ly8gTWFwIG5lZ2F0aXZlIHplcm8gdG8gcG9zaXRpdmUgemVyby4KQEAgLTQ0Myw3ICs0NDgsNyBA
QCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFCiAgICAgICAgIHVudW1f
Zm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBudW1iZXIsIGJ1ZmZlci5kYXRhKCks
IGxlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7CiAgICAgfQogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3Jl
YXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
IikpKTsKIAogICAgIHJldHVybiBqc1N0cmluZygmc3RhdGUsIFN0cmluZyhidWZmZXIuZGF0YSgp
LCBsZW5ndGgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw5IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgbmYgYmUgdGhpcyBO
dW1iZXJGb3JtYXQgb2JqZWN0LgogICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWlj
Q2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKQEAgLTEwNywyMiAr
MTEwLDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckYKICAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFuZikKLSAgICAgICAgbmYgPSBqc0R5
bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRl
LCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0
ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51
bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CiAK
ICAgICBpZiAoIW5mKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TnVtYmVyRm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJv
dG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOwogICAgIAogICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGb3JtYXQgPSBuZi0+Ym91bmRGb3JtYXQoKTsKICAgICAvLyAyLiBJZiBuZi5bW2JvdW5k
Rm9ybWF0XV0gaXMgdW5kZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsKLSAgICAgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBuZi0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1
aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8g
Yi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgogICAgICAgICBKU0Z1
bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXRO
dW1iZXIsIE5vSW50cmluc2ljKTsKICAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7
CiAgICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29wZSkpOwogCiAg
ICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1
ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
c3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJ
SUxpdGVyYWwoImZvcm1hdCIpKTsKQEAgLTEzNywxNiArMTM5LDE5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsTnVt
YmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQq
PihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJv
dmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQog
ICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWND
YXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0
ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVl
UHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PElu
dGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkp
OwogCiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIp
KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+cmVzb2x2ZWRP
cHRpb25zKCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYy
LDkgQEAgYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLAogCiBTdHJpbmcg
aW50bFN0cmluZ09wdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1
ZXMsIGNvbnN0IGNoYXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjaykKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIC8vIDkuMi45IEdldE9wdGlvbiAob3B0aW9ucywgcHJvcGVydHksIHR5cGUs
IHZhbHVlcywgZmFsbGJhY2spCiAgICAgLy8gRm9yIHR5cGU9InN0cmluZyIuCiAKQEAgLTE5NSw3
ICsxOTgsNyBAQCBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihFeGVjU3RhdGUmIHN0YXRlCiAgICAg
ICAgIC8vIGQuIElmIHZhbHVlcyBpcyBub3QgdW5kZWZpbmVkLCB0aGVuCiAgICAgICAgIC8vIGku
IElmIHZhbHVlcyBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgZXF1YWwgdG8gdmFsdWUsIHRo
cm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpICYm
IHN0ZDo6ZmluZCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCBzdHJpbmdWYWx1ZSkgPT0g
dmFsdWVzLmVuZCgpKSB7Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIG5vdEZvdW5kKSk7CisgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgbm90
Rm91bmQpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIApAQCAtMjA5LDYg
KzIxMiw5IEBAIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKIAogdW5z
aWduZWQgaW50bE51bWJlck9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11
bSwgdW5zaWduZWQgZmFsbGJhY2spCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyA5LjIuOSBHZXRO
dW1iZXJPcHRpb24gKG9wdGlvbnMsIHByb3BlcnR5LCBtaW5pbXVtLCBtYXhpbXVtLCBmYWxsYmFj
aykgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgb3B0cyBiZSBUb09iamVjdChvcHRpb25z
KS4KICAgICBKU09iamVjdCogb3B0cyA9IG9wdGlvbnMudG9PYmplY3QoJnN0YXRlKTsKQEAgLTIz
Myw3ICsyMzksNyBAQCB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgLy8gMS4gSWYgdmFsdWUgaXMgTmFOIG9yIGxl
c3MgdGhhbiBtaW5pbXVtIG9yIGdyZWF0ZXIgdGhhbiBtYXhpbXVtLCB0aHJvdyBhIFJhbmdlRXJy
b3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAoIShkb3VibGVWYWx1ZSA+PSBtaW5pbXVtICYmIGRv
dWJsZVZhbHVlIDw9IG1heGltdW0pKSB7Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNO
YW1lKCkgKyAiIGlzIG91dCBvZiByYW5nZSIpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCAqcHJvcGVydHkucHVibGlj
TmFtZSgpICsgIiBpcyBvdXQgb2YgcmFuZ2UiKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQogCkBAIC01MjQsNiArNTMwLDggQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXpl
TG9jYWxlTGlzdChFeAogewogICAgIC8vIDkuMi4xIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QgKGxv
Y2FsZXMpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHNlZW47
CiAKQEAgLTU4Nyw3ICs1OTUsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVM
aXN0KEV4CiAKICAgICAgICAgICAgIC8vIGlpaS4gSWYgVHlwZShrVmFsdWUpIGlzIG5vdCBTdHJp
bmcgb3IgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgICAgICBp
ZiAoIWtWYWx1ZS5pc1N0cmluZygpICYmICFrVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUg
bXVzdCBiZSBhIHN0cmluZyBvciBvYmplY3QiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBh
IHN0cmluZyBvciBvYmplY3QiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7CiAgICAgICAgICAgICB9CiAKQEAgLTYwMiw3ICs2MTAsNyBAQCBWZWN0b3I8U3RyaW5n
PiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiAgICAgICAgICAgICAvLyB2aWkuIExldCBjYW5v
bmljYWxpemVkVGFnIGJlIENhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZykuCiAgICAgICAgICAg
ICBTdHJpbmcgY2Fub25pY2FsaXplZFRhZyA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZy0+
dmFsdWUoJnN0YXRlKSk7CiAgICAgICAgICAgICBpZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwo
KSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQoImludmFsaWQgbGFuZ3VhZ2Ug
dGFnOiAlcyIsIHRhZy0+dmFsdWUoJnN0YXRlKS51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0
YXRlLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCBsYW5ndWFnZSB0YWc6ICVzIiwgdGFnLT52YWx1
ZSgmc3RhdGUpLnV0ZjgoKS5kYXRhKCkpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3Rv
cjxTdHJpbmc+KCk7CiAgICAgICAgICAgICB9CiAKQEAgLTg3MCw2ICs4NzgsOSBAQCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiByZXNvbHZlTG9jYWxlKEV4CiAKIHN0YXRpYyBKU0FycmF5KiBsb29r
dXBTdXBwb3J0ZWRMb2NhbGVzKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2Fs
ZXMpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyA5LjIuNiBMb29rdXBTdXBwb3J0ZWRMb2NhbGVz
IChhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKQogCiAgICAgLy8gMS4gTGV0IHJM
b2NhbGVzIGJlIENyZWF0ZUFycmF5RnJvbUxpc3QocmVxdWVzdGVkTG9jYWxlcykuCkBAIC04Nzks
MTEgKzg5MCwxMCBAQCBzdGF0aWMgSlNBcnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhFCiAg
ICAgc2l6ZV90IGxlbiA9IHJlcXVlc3RlZExvY2FsZXMuc2l6ZSgpOwogCiAgICAgLy8gMy4gTGV0
IHN1YnNldCBiZSBhbiBlbXB0eSBMaXN0LgotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKTsKICAgICBKU0FycmF5KiBzdWJzZXQgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICBpZiAoIXN1YnNldCkgewot
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRl
cmF0b3JPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2
LDE0ICszNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogSlNWYWx1ZSBpdGVyYXRvck5leHQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGl0ZXJhdG9yLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEpT
VmFsdWUgbmV4dEZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVy
dHlOYW1lcy0+bmV4dCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIG5leHRGdW5jdGlvbiA9
IGl0ZXJhdG9yLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAg
Q2FsbERhdGEgbmV4dEZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgbmV4dEZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShuZXh0RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxEYXRh
KTsKICAgICBpZiAobmV4dEZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG5leHRGdW5j
dGlvbkFyZ3VtZW50czsKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTUzLDcgKzU3LDcg
QEAgSlNWYWx1ZSBpdGVyYXRvck5leHQoRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTg5
LDE4ICs5MywyMSBAQCBKU1ZhbHVlIGl0ZXJhdG9yU3RlcChFeGVjU3RhdGUqIGV4ZWMsIEpTCiAK
IHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaXRlcmF0b3IpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4
Y2VwdGlvbigpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KLSAgICBK
U1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CisgICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9
IGl0ZXJhdG9yLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChy
ZXR1cm5GdW5jdGlvbi5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA4LDkgKzExNSw5IEBAIHZvaWQgaXRlcmF0b3JDbG9z
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBDYWxsVHlwZSByZXR1cm5GdW5jdGlvbkNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEocmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEp
OwogICAgIGlmIChyZXR1cm5GdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExOCw3ICsxMjUsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xv
c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgSlNWYWx1ZSBpbm5lclJlc3VsdCA9IGNhbGwo
ZXhlYywgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUsIHJldHVybkZ1bmN0
aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCByZXR1cm5GdW5jdGlvbkFyZ3VtZW50cyk7CiAKICAgICBp
ZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
ZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNiw3ICsxMzMsNyBAQCB2b2lkIGl0
ZXJhdG9yQ2xvc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaW5uZXJSZXN1bHQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0xNDcsMTQgKzE1NCwxOCBAQCBTdHJ1Y3R1cmUqIGNy
ZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RyCiAKIEpTT2JqZWN0KiBjcmVhdGVJdGVyYXRvclJl
c3VsdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIGJvb2wgZG9uZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiByZXN1bHRPYmplY3QgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPml0
ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKCkpOwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGRvbmVQcm9wZXJ0eU9mZnNldCwganNCb29sZWFuKGRvbmUpKTsKLSAg
ICByZXN1bHRPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCB2YWx1ZVByb3BlcnR5T2Zmc2V0
LCB2YWx1ZSk7CisgICAgcmVzdWx0T2JqZWN0LT5wdXREaXJlY3Qodm0sIGRvbmVQcm9wZXJ0eU9m
ZnNldCwganNCb29sZWFuKGRvbmUpKTsKKyAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdCh2bSwg
dmFsdWVQcm9wZXJ0eU9mZnNldCwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHRPYmplY3Q7CiB9
CiAKIEpTVmFsdWUgaXRlcmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHN0YXRlLCBKU1ZhbHVl
IGl0ZXJhYmxlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAKICAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVu
Y3Rpb24gPSBpdGVyYWJsZS5nZXQoc3RhdGUsIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JTeW1ib2wpOwogICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CkBAIC0xNjIsNyArMTczLDcgQEAgSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJh
YmxlKEV4ZWNTdGF0ZSogcwogICAgIENhbGxEYXRhIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBpdGVyYXRvckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpdGVy
YXRvckZ1bmN0aW9uLCBpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChpdGVyYXRv
ckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTcyLDcgKzE4Myw3IEBAIEpTVmFs
dWUgaXRlcmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHMKICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKIAogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEyLCAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA5LCAyMDEyLTIwMTMsIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9z
a3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCkBAIC03NSw2ICs3NSw5IEBAIHZvaWQgSlNBcnJh
eTo6c2V0TGVuZ3RoV3JpdGFibGUoRXhlY1N0YXQKIC8vIERlZmluZWQgaW4gRVM1LjEgMTUuNC41
LjEKIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAogICAg
IC8vIDMuIElmIFAgaXMgImxlbmd0aCIsIHRoZW4KQEAgLTEwNiw3ICsxMDksNyBAQCBib29sIEpT
QXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0CiAgICAgICAgIHVuc2lnbmVkIG5ld0xl
biA9IGRlc2NyaXB0b3IudmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgLy8gZC4gSWYg
bmV3TGVuIGlzIG5vdCBlcXVhbCB0byBUb051bWJlciggRGVzYy5bW1ZhbHVlXV0pLCB0aHJvdyBh
IFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAobmV3TGVuICE9IGRlc2NyaXB0b3Iu
dmFsdWUoKS50b051bWJlcihleGVjKSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgSlNDOjp0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBA
IC0xOTEsNiArMTk0LDkgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
YwogLy8gRUNNQSAxNS40LjUuMQogYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZKGlzVGhp
c1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBAIC0xOTksNyArMjA1LDcgQEAgYm9v
bCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdAogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICB1bnNpZ25lZCBu
ZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZhbHVlLnRvTnVt
YmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBu
ZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtMzkzLDYgKzM5OSw4IEBAIGJvb2wg
SlNBcnJheTo6c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjphcHBl
bmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIEpT
Qzo6SlNBcnJheSogb3RoZXJBcnJheSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNhbkZhc3RDb3B5KHZtLCBvdGhlckFycmF5KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MTgsNyArNDI2LDcgQEAgYm9vbCBKU0FycmF5Ojph
cHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoIWVuc3VyZUxlbmd0aCh2bSwgbmV3TGVuZ3RoKSkgewotICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgQVNTRVJUKGNvcHlUeXBlID09
IGluZGV4aW5nVHlwZSgpKTsKQEAgLTQzMyw2ICs0NDEsOSBAQCBib29sIEpTQXJyYXk6OmFwcGVu
ZE1lbWNweShFeGVjU3RhdGUqIGV4CiAKIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgbmV3TGVuZ3RoLCBib29sIHRocm93RXhjZXB0aW9uKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsK
ICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgpAQCAt
NDQxLDkgKzQ1Miw5IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywK
ICAgICAgICAgaWYgKG5ld0xlbmd0aCA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAg
ICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgIGVuc3Vy
ZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlT
dG9yYWdlKHZtKSk7CiAgICAgICAgIH0KLSAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChl
eGVjLT52bSgpLCBuZXdMZW5ndGgpOworICAgICAgICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKHZt
LCBuZXdMZW5ndGgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBB
cnJheVdpdGhVbmRlY2lkZWQ6CkBAIC00NTcsMTEgKzQ2OCwxMSBAQCBib29sIEpTQXJyYXk6OnNl
dExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91
Z2hGb3JWZWN0b3IobmV3TGVuZ3RoLCBjb3VudEVsZW1lbnRzKCkpKSkgewogICAgICAgICAgICAg
cmV0dXJuIHNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAgZXhlYywg
bmV3TGVuZ3RoLCB0aHJvd0V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0
b3JhZ2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZSh2
bSkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChuZXdMZW5ndGggPiBidXR0ZXJmbHktPnB1Ymxp
Y0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBu
ZXdMZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
OworICAgICAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIG5ld0xlbmd0aCkpIHsKKyAgICAg
ICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNDcwLDcgKzQ4MSw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoVG9DbGVhciA9IGJ1dHRlcmZseS0+cHVi
bGljTGVuZ3RoKCkgLSBuZXdMZW5ndGg7CiAgICAgICAgIHVuc2lnbmVkIGNvc3RUb0FsbG9jYXRl
TmV3QnV0dGVyZmx5ID0gNjQ7IC8vIGEgaGV1cmlzdGljLgogICAgICAgICBpZiAobGVuZ3RoVG9D
bGVhciA+IG5ld0xlbmd0aCAmJiBsZW5ndGhUb0NsZWFyID4gY29zdFRvQWxsb2NhdGVOZXdCdXR0
ZXJmbHkpIHsKLSAgICAgICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJmbHkoZXhlYy0+
dm0oKSwgbmV3TGVuZ3RoKTsKKyAgICAgICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJm
bHkodm0sIG5ld0xlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
CkBAIC00OTcsNiArNTA4LDkgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjLAogCiBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAg
IAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKQEAgLTU0OCw3ICs1NjIsNyBAQCBKU1Zh
bHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwogICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAg
ICAgaWYgKCFpc0xlbmd0aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
ICAgICB9CiAKQEAgLTU4MCw3ICs1OTQsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIC8vIENhbGwgdGhl
IFtbRGVsZXRlXV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMgaW5keCBhbmQg
dHJ1ZS4KICAgICBpZiAoIWRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzLCBleGVjLCBpbmRleCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KICAgICAvLyBDYWxsIHRoZSBbW1B1dF1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnRzICJsZW5ndGgiLCBpbmR4LCBhbmQgdHJ1ZS4K
QEAgLTU5NCwyMyArNjA4LDI2IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhl
YykKIC8vICAtIHB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJeMzItMSBzdG9yZXMgdGhl
IHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lkIEpTQXJyYXk6OnB1c2go
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOiB7Ci0gICAgICAgIGNyZWF0
ZUluaXRpYWxVbmRlY2lkZWQoZXhlYy0+dm0oKSwgMCk7CisgICAgICAgIGNyZWF0ZUluaXRpYWxV
bmRlY2lkZWQodm0sIDApOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOiB7Ci0gICAgICAgIGNvbnZlcnRVbmRlY2lkZWRG
b3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JW
YWx1ZSh2bSwgdmFsdWUpOwogICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjogewogICAgICAg
ICBpZiAoIXZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFs
dWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUo
dm0sIHZhbHVlKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC02MjQsOSArNjQxLDkgQEAgdm9pZCBKU0FycmF5OjpwdXNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
bGVuZ3RoID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAg
ICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgs
IHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjM4LDE1ICs2NTUsMTUgQEAgdm9p
ZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogICAgICAgICBBU1NFUlQobGVuZ3Ro
IDw9IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAobGVuZ3RoIDwgYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkgewotICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzKClbbGVuZ3RoXS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAg
YnV0dGVyZmx5LT5jb250aWd1b3VzKClbbGVuZ3RoXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAg
ICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4g
TUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAg
IG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0
cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjU2LDEzICs2NzMsMTMgQEAgdm9pZCBKU0FycmF5
OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0
aERvdWJsZTogewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAg
IGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CisgICAgICAgICAgICBjb252
ZXJ0RG91YmxlVG9Db250aWd1b3VzKHZtKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFz
RG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVlQXNEb3VibGUgIT0g
dmFsdWVBc0RvdWJsZSkgewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhl
eGVjLT52bSgpKTsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwog
ICAgICAgICAgICAgcHVzaChleGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTY3Niw5ICs2OTMsOSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhf
QVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0
aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUp
OwogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC03MDMsNyArNzIwLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICAvLyBGYXN0IGNhc2UgLSBwdXNoIHdpdGhp
biB2ZWN0b3IsIGFsd2F5cyB1cGRhdGUgbV9sZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yLgog
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKICAgICAgICAgaWYg
KGxlbmd0aCA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdG9yYWdl
LT5tX3ZlY3RvcltsZW5ndGhdLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAg
ICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAgICAgKytz
dG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzEx
LDEwICs3MjgsMTAgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQog
CiAgICAgICAgIC8vIFB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgaW52YWxpZCBsZW5ndGggKDJeMzEt
MSkgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9yLgogICAgICAg
ICBpZiAoc3RvcmFnZS0+bGVuZ3RoKCkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAg
IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2Ut
Pmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1
dEJ5SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAg
ICAgICAgICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMu
ZC4KICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTk2Myw2ICs5ODAsOSBAQCBib29sIEpTQXJyYXk6OnNoaWZ0Q291bnRX
aXRoQW55SW5kZXhpbmdUCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHVuc2hpZnQgY2FuIGJlIGhh
bmRsZWQsIGZhbHNlIHRvIGZhbGxiYWNrLiAgICAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50
V2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVu
c2lnbmVkIGNvdW50LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKIAogICAgIFJFTEVBU0VfQVNT
RVJUKHN0YXJ0SW5kZXggPD0gbGVuZ3RoKTsKQEAgLTk4MSwxMyArMTAwMSwxMyBAQCBib29sIEpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAgICAgICAgIHN0b3JhZ2UgPSBuZXdC
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICBzdG9yYWdlLT5tX2luZGV4QmlhcyAt
PSBjb3VudDsKICAgICAgICAgc3RvcmFnZS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCAr
IGNvdW50KTsKLSAgICAgICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKGV4
ZWMtPnZtKCksIG5ld0J1dHRlcmZseSk7CisgICAgICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFu
Z2luZ1N0cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKICAgICB9IGVsc2UgaWYgKCFtb3ZlRnJv
bnQgJiYgdmVjdG9yTGVuZ3RoIC0gbGVuZ3RoID49IGNvdW50KQogICAgICAgICBzdG9yYWdlID0g
c3RvcmFnZS0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOwotICAgIGVsc2UgaWYgKHVuc2hp
ZnRDb3VudFNsb3dDYXNlKGV4ZWMtPnZtKCksIG1vdmVGcm9udCwgY291bnQpKQorICAgIGVsc2Ug
aWYgKHVuc2hpZnRDb3VudFNsb3dDYXNlKHZtLCBtb3ZlRnJvbnQsIGNvdW50KSkKICAgICAgICAg
c3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTAwNyw2ICsxMDI3LDkg
QEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiBib29sIEpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEJ1
dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgCiAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewpAQCAtMTAyMiwxMCArMTA0NSwxMCBAQCBib29sIEpTQXJyYXk6
OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdh
bGsgdGhlIGVudGlyZSBhcnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBk
byBzbwogICAgICAgICAvLyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAg
IGlmIChvbGRMZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0g
ICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFy
dEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAg
ICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgs
IGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICgh
ZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0
aCh2bSwgb2xkTGVuZ3RoICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTAzNSw3ICsxMDU4
LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAg
ICAgICBKU1ZhbHVlIHYgPSBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKTsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghdikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRD
b3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5
U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3Vu
dFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3Rv
cmFnZSh2bSkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkTGVu
Z3RoOyBpLS0gPiBzdGFydEluZGV4OykgewpAQCAtMTA1OCwxMCArMTA4MSwxMCBAQCBib29sIEpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZl
IHRvIHdhbGsgdGhlIGVudGlyZSBhcnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGlu
ZyB0byBkbyBzbwogICAgICAgICAvLyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAg
ICAgICAgIGlmIChvbGRMZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5E
RVgpCi0gICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVj
LCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAg
ICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0
SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAg
IGlmICghZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAg
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3Vy
ZUxlbmd0aCh2bSwgb2xkTGVuZ3RoICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTA3MSw3
ICsxMDk0LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAg
ICAgICAgICAgICBkb3VibGUgdiA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHYgIT0gdikpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVu
c3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVu
c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3Vy
ZUFycmF5U3RvcmFnZSh2bSkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gb2xkTGVuZ3RoOyBpLS0gPiBzdGFydEluZGV4OykgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw5
IEBAIFN0cnVjdHVyZSogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpjcmUKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9CiAgICAgICAgIGpzQ2FzdDxKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSk7CiAgICAgCkBAIC05NiwxOSArOTksMjEgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIAogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIDEpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNj
b3BlKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7Ci0gICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGFycmF5QnVmZmVyU3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihleGVjLCAiQXJyYXlCdWZmZXIiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0
aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7CiB9CiAKIENvbnN0cnVj
dFR5cGUgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywx
NCArMzcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24q
PihleGVjLT5jYWxsZWUoKSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBvZiBzbGljZSBtdXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CiAgICAg
CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25l
IGFyZ3VtZW50LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIp
KTsKICAgICAKICAgICBpbnQzMl90IGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02MCwxMSArNjMsMTEgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYQogICAgIAogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICBpZiAoIW5ld0J1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoKTsKICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOworICAgIEpT
QXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJl
LCBuZXdCdWZmZXIpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIldlYWtHQ01h
cElubGluZXMuaCIKIAogI2VuZGlmIC8vIEpTQ0lubGluZXNfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA3LTIwMDgsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk0LDYgKzk0LDggQEAgT3B0aW9uYWw8ZG91Ymxl
PiBKU1ZhbHVlOjp0b051bWJlckZyb21QcgogCiBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RT
bG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCFpc0NlbGwoKSk7CiAKICAgICBpZiAoaXNJ
bnQzMigpIHx8IGlzRG91YmxlKCkpCkBAIC0xMDIsOCArMTA0LDcgQEAgSlNPYmplY3QqIEpTVmFs
dWU6OnRvT2JqZWN0U2xvd0Nhc2UoRXhlYwogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVh
bkZyb21JbW1lZGlhdGVCb29sZWFuKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKIAog
ICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhl
YywgKnRoaXMpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5P
YmplY3RFcnJvcihleGVjLCAqdGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0x
MjQsNiArMTI1LDkgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShFeGVjU3RhdAog
CiBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYg
KGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5zdHJpbmdQcm90b3R5cGUoKTsKQEAgLTEzNyw4ICsxNDEsNyBAQCBKU09iamVjdCogSlNW
YWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmJvb2xlYW5Qcm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChpc1VuZGVm
aW5lZE9yTnVsbCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHZtLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAq
dGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xNDYsNiArMTQ5LDcgQEAgSlNP
YmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogYm9vbCBKU1ZhbHVlOjpwdXRU
b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
CiAgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtMTYwLDcgKzE2NCw3IEBAIGJvb2wg
SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIHByb3RvdHlw
ZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgICAgICAgICBpZiAocHJvdG90eXBl
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTcyLDcgKzE3Niw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAK
ICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApA
QCAtMTk2LDEyICsyMDAsMTUgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgIH0KICAgICAKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTVmFs
dWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoKnRoaXMsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIHB1
dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwg
dmFsdWUsIHNsb3QpOwpAQCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmVCeUluZGV4KEV4ZWMKICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBp
ZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMzM4LDEzICszNDUsMTUgQEAgYm9vbCBKU1ZhbHVlOjppc1ZhbGlk
Q2FsbGVlKCkKIAogSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRl
KiBleGVjLCBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcikgY29uc3QKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGF1dG8gZXJyb3JWYWx1ZSA9IFsmXSAoKSAtPiBKU1N0cmluZyogewogICAgICAg
ICBpZiAocmV0dXJuRW1wdHlTdHJpbmdPbkVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGpzRW1w
dHlTdHJpbmcoZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH07CiAgICAgCi0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIWlzU3RyaW5nKCkpOwogICAgIGlm
IChpc0ludDMyKCkpIHsKICAgICAgICAgYXV0byBpbnRlZ2VyID0gYXNJbnQzMigpOwpAQCAtMzYz
LDcgKzM3Miw3IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWMKICAg
ICBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRl
ZmluZWRTdHJpbmcoKTsKICAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3Ry
aW5nIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0dXJu
IGVycm9yVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02MzMsOCArNjMzLDExIEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OnRvUHJpbWl0aXZlKEV4ZWMKIAogaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmlu
Zy4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iKSk7CiAgICAgICAgIHJldHVybiBOb1By
ZWZlcmVuY2U7CiAgICAgfQogCkBAIC02NDksNyArNjUyLDcgQEAgaW5saW5lIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUgdG9QcmVmZXJyZQogICAgIGlmIChXVEY6OmVxdWFsKGhpbnRTdHJpbmcsICJz
dHJpbmciKSkKICAgICAgICAgcmV0dXJuIFByZWZlclN0cmluZzsKIAotICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8gbWF0Y2gg
b25lIG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcnLiIpKTsKKyAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBwcmltaXRpdmUgaGludCB0
byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmluZycuIikpOwogICAgIHJl
dHVybiBOb1ByZWZlcmVuY2U7CiB9CiAKQEAgLTEwMzEsOSArMTAzNCwxMiBAQCBpbmxpbmUgVHJp
U3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU1Zh
bHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDE2ICs0NywxOCBAQCBKU0RhdGFW
aWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0
LCBieXRlTGVuZ3RoLCBzaXplb2YodWludDhfdCkpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBvZiBy
YW5nZSBvZiBidWZmZXIiKSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdlIG9m
IGJ1ZmZlciIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBpZiAoIUFy
cmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBzaXpl
b2YodWludDhfdCkpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5dGUgb2Zmc2V0IGlzIG5vdCBh
bGlnbmVkIikpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIp
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCgKICAgICAgICAgc3RydWN0dXJl
LCBidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRh
dGFWaWV3KTsKICAgICBBU1NFUlQoY29udGV4dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMiwxMiArMTIyLDE1IEBAIFN0cnVjdHVyZSogSlNE
YXRhVmlld1Byb3RvdHlwZTo6Y3JlYXRlU3QKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBF
bmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0
aG9kIG11c3QgYmUgYSBEYXRhVmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9k
IG11c3QgYmUgYSBEYXRhVmlldyIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291
bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJOZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVk
IGF0IGxlYXN0IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOwogICAgIAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDMsNyArMTQ2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUg
PiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFT
aXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE2
NywxMiArMTcwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBq
c0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFk
YXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwogICAg
IAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3Vt
ZW50ICh0aGUgYnl0ZU9mZnNldCBhbmQgdmFsdWUpIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IHR3byBh
cmd1bWVudCAodGhlIGJ5dGVPZmZzZXQgYW5kIHZhbHVlKSIpKTsKICAgICAKICAgICB1bnNpZ25l
ZCBieXRlT2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTk4LDcgKzIwNCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0
ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJP
dXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0y
MjAsMjcgKzIyNiwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVy
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcg
PSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCF2aWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcu
cHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3
LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3Qi
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmlldy0+anNCdWZmZXIoZXhlYykpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcq
IHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0
YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9i
amVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRh
dGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBv
YmplY3QiKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+bGVu
Z3RoKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
R2V0dGVyQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBE
YXRhVmlldyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEg
RGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHZpZXctPmJ5dGVPZmZzZXQoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMs
IGV4ZWMtPmNhbGxlZSgpKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+Y2FsbGVl
KCkpKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Z1bmN0aW9uKSB9
OwpAQCAtMzIxLDYgKzMyMyw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyRnVuY3Rp
b24oRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RG
dW5jdGlvbigpKTsKICAgICBKU1ZhbHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24o
ZXhlYywgdGhpc09iaik7CkBAIC0zMzUsNyArMzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5j
dGlvbjo6Y2FsbGVyR2V0dGVyKAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPihjYWxsZXIpOwogICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxs
ZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkZ1bmN0
aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQogCiBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
QEAgLTQyMyw2ICs0MjgsOSBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOCiAKIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1
ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQpAQCAtNDM3LDI1ICs0NDUsMjggQEAgYm9vbCBK
U0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBNYWtlIHN1cmUg
cHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVy
d3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0y
NjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAg
ICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJv
cGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJl
IGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4KICAgICAgICAg
UHV0UHJvcGVydHlTbG90IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CiAgICAgfQogICAgIGlmICh0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkgJiYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY2FsbGVyKSkgewogICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgcHJv
cGVydHkgdG8gYmUgcmVpZmllZCwgaWYgdGhpcyBpcyBub3QgYWxyZWFkeSB0aGUgY2FzZSEKICAg
ICAgICAgYm9vbCBva2F5ID0gdGhpc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChva2F5LCBva2F5KTsKKyAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRl
ZChleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
fQogCkBAIC00ODAsNiArNDkxLDkgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIAogCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rp
b24oKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFtZUlmTmVlZGVkKGV4ZWMs
IHByb3BlcnR5TmFtZSk7CkBAIC00OTAsNyArNTA0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iagogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBi
ZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAg
ICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5j
dGlvbiIpOwogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKQEAgLTUyMCwy
NyArNTM0LDI3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAg
ICAgCiAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlm
IChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxl
KCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nl
c3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9w
ZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFu
Z2VBY2Nlc3NNZWNoYW5pc21FcnJvcikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFi
bGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICghdmFsdWVDaGVjaykgewogICAg
ICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkg
cHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9w
ZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdfaAogCiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5j
bHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xNjgsMTIg
KzE2OSwxNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBzZXRJbmRleChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKICAgICB7CisgICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlID0gdG9OYXRpdmVGcm9t
VmFsdWU8QWRhcHRvcj4oZXhlYywganNWYWx1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoaXNOZXV0
ZXJlZCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDggKzgwLDEx
IEBAIFN0cnVjdHVyZSogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHIKIHRlbXBsYXRlPHR5
cGVuYW1lIFZpZXdDbGFzcz4KIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3RnJvbUl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTVmFsdWUgaXRlcmF0b3IpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWl0ZXJhdG9y
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlN5bWJvbC5JdGVyYXRvciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IGRpZCBub3QgcmV0
dXJuIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVu
dCBkaWQgbm90IHJldHVybiBhbiBvYmplY3QuIikpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgc3RvcmFnZTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTE4LDggKzEyMSwxMCBAQCBpbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aWV3Q2xhc3M+CiBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5j
b2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNp
Z25lZD4gbGVuZ3RoT3B0KQogewotICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShmaXJzdEFyZ3VtZW50KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgZmlyc3RWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShmaXJzdEFyZ3VtZW50KTsKIAogICAgIGlmIChKU0FycmF5QnVm
ZmVyKiBqc0J1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGZpcnN0VmFsdWUp
KSB7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0ganNCdWZmZXItPmltcGwo
KTsKQEAgLTEyOSw3ICsxMzQsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFyCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAl
IFZpZXdDbGFzczo6ZWxlbWVudFNpemUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93UmFu
Z2VFcnJvcihleGVjLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlz
IG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1p
bnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUi
KTsKICAgICAgICAgICAgIGxlbmd0aCA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkg
LyBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplOwogCiAgICAgICAgIH0KQEAgLTEzOSw3ICsxNDQsNyBA
QCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgQVNTRVJUKCFv
ZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCiAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgQXJyYXlCdWZmZXIgZm9yIHRoZSBmaXJz
dCBhcmd1bWVudC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3Vt
ZW50LiIpKTsKICAgICAKICAgICAvLyBGb3IgZXZlcnl0aGluZyBidXQgRGF0YVZpZXcsIHdlIGFs
bG93IGNvbnN0cnVjdGlvbiB3aXRoIGFueSBvZjoKICAgICAvLyAtIEFub3RoZXIgYXJyYXkuIFRo
aXMgY3JlYXRlcyBhIGNvcHkgb2YgdGhlIG9mIHRoYXQgYXJyYXkuCkBAIC0xNzQsNyArMTc5LDcg
QEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICAgICAg
ICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpdGVyYXRvckZ1bmMsIGNhbGxEYXRhKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3lt
Ym9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxlZC4iKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQg
Y2Fubm90IGJlIGNhbGxlZC4iKSk7CiAKICAgICAgICAgICAgICAgICAgICAgQXJnTGlzdCBhcmd1
bWVudHM7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsKGV4ZWMs
IGl0ZXJhdG9yRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ3VtZW50cyk7CkBA
IC0yMDYsMTUgKzIxMSwxNSBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFyCiAgICAgaWYgKGZpcnN0VmFsdWUuaXNJbnQzMigpKQogICAgICAgICBsZW5ndGggPSBmaXJz
dFZhbHVlLmFzSW50MzIoKTsKICAgICBlbHNlIGlmICghZmlyc3RWYWx1ZS5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGFycmF5IGxlbmd0aCBhcmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50
IikpOwogICAgIGVsc2UgewogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KGZpcnN0
VmFsdWUuYXNOdW1iZXIoKSk7CiAgICAgICAgIGlmIChsZW5ndGggIT0gZmlyc3RWYWx1ZS5hc051
bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBu
b3QgYWxsb3dlZCkiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0
aW9uYWwgbGVuZ3RocyBub3QgYWxsb3dlZCkiKSk7CiAgICAgfQogCiAgICAgaWYgKGxlbmd0aCA8
IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBsZW5n
dGggaXMgbmVnYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihleGVjLCBz
Y29wZSwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKTsKICAgICByZXR1cm4gVmlld0Ns
YXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBsZW5ndGgpOwogfQogCkBAIC0yMjQsNiArMjI5
LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZQogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBhc0ludGVybmFsRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpOwogICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0gZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBwYXJl
bnRTdHJ1Y3R1cmUpOwpAQCAtMjM0LDcgKzI0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0R2UKIAogICAgIGlmICghYXJnQ291bnQpIHsKICAgICAgICAgaWYgKFZp
ZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcg
Y29uc3RydWN0b3IgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkRh
dGFWaWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKSk7CiAK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBz
dHJ1Y3R1cmUsIDApKTsKICAgICB9CkBAIC0yNjgsNyArMjc2LDkgQEAgQ29uc3RydWN0VHlwZSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbgogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5
VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIFZpZXdD
bGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNSAr
NDgsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAog
ICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKLSAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoZXhlYy0+dm0oKSwgc3RydWN0
dXJlLCBsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKLSAg
ICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PihleGVjLT52bSgpLmhlYXAp
KQotICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyhleGVjLT52bSgpLCBjb250ZXh0KTsK
LSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgICAgICBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCisg
ICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKKyAgICByZXN1bHQt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC02NCwxNyAr
NjYsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5p
bml0aWFsaXplZCgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1
bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBj
b250ZXh0KAotICAgICAgICBleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpLAorICAgICAgICB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4
dDo6RG9udEluaXRpYWxpemUpOwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTgzLDIyICs4NywyNCBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lCiAgICAgRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVm
ZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAg
ICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgsIHNpemUpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIi
KSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zm
c2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemUpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQnl0ZSBvZmZzZXQgaXMg
bm90IGFsaWduZWQiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4
dChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAg
ICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyOCwxMCArMTM0LDEyIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp2YWxpZGF0ZVJhbmdlKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKGNhbkFjY2Vzc1Jhbmdl
UXVpY2tseShvZmZzZXQsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAg
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAi
UmFuZ2UgY29uc2lzdGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5kcyIp
KTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCAiUmFuZ2UgY29uc2lzdGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5k
cyIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTI5MCw4ICsyOTgsMTAgQEAgQXJyYXlC
dWZmZXIqIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYQogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIEVuY29kZWRKU1ZhbHVlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIG9iamVjdCwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVF9V
TlVTRUQob2JqZWN0LCBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihKU1ZhbHVlOjpk
ZWNvZGUob2JqZWN0KSktPmlzTmV1dGVyZWQoKSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnVjdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBleGVtcGxhciwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3Ms
IGNvbnN0IEZ1bmN0b3ImIGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgY29uc3RydWN0b3IgPSBleGVtcGxhci0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3Rvcik7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU3LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZm
ZXJWaWV3KiBzcGVjaWVzQ29uc3RydQogICAgIGlmIChjb25zdHJ1Y3Rvci5pc1VuZGVmaW5lZCgp
KQogICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9yKCk7CiAgICAgaWYgKCFjb25zdHJ1
Y3Rvci5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiY29uc3RydWN0b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQ
cm9wZXJ0eSBzaG91bGQgbm90IGJlIG51bGwiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtNzMsMTEgKzc2LDExIEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3Bl
Y2llc0NvbnN0cnUKICAgICAgICAgaWYgKCF2aWV3LT5pc05ldXRlcmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdmlldzsKIAotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4g
YSBUeXBlZEFycmF5IFZpZXciKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgic3BlY2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJy
YXkgVmlldyIpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtOTYsNDMgKzk5LDQ1IEBA
IGlubGluZSB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb20KIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIyCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGlmICghZXhlYy0+
YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgaWYgKG9mZnNldE51bWJlciA8IDApCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoZXhlYywgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CisgICAgICAg
IGlmIChVTkxJS0VMWShvZmZzZXROdW1iZXIgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihleGVjLCBzY29wZSwgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZl
Iik7CiAgICAgICAgIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbihvZmZz
ZXROdW1iZXIsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKSkpOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwogCi0gICAgaWYg
KHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Cisg
ICAgaWYgKFVOTElLRUxZKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIEpTT2JqZWN0KiBzb3VyY2VBcnJheSA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYg
KCFzb3VyY2VBcnJheSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgIGlm
IChVTkxJS0VMWSghc291cmNlQXJyYXkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4g
b2JqZWN0IikpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIGlmIChpc1R5cGVkVmlldyhz
b3VyY2VBcnJheS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKICAgICAg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZVZpZXcgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZp
ZXcqPihzb3VyY2VBcnJheSk7Ci0gICAgICAgIGlmIChzb3VyY2VWaWV3LT5pc05ldXRlcmVkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNv
dXJjZVZpZXctPmlzTmV1dGVyZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CiAKICAgICAgICAgbGVuZ3RoID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oc291
cmNlQXJyYXkpLT5sZW5ndGgoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gc291cmNl
QXJyYXktPmdldChleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkudG9VSW50
MzIoZXhlYyk7CisgICAgICAgIGxlbmd0aCA9IHNvdXJjZUFycmF5LT5nZXQoZXhlYywgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKIAotICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdGhpc09iamVj
dC0+c2V0KGV4ZWMsIG9mZnNldCwgc291cmNlQXJyYXksIDAsIGxlbmd0aCwgQ29weVR5cGU6OlVu
b2JzZXJ2YWJsZSk7CkBAIC0xNDAsMTMgKzE0NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy41Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0Ns
YXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVk
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9y
TWVzc2FnZSk7CiAKICAgICBsb25nIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogICAg
IGxvbmcgdG8gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIGxl
bmd0aCk7CkBAIC0xNjUsNyArMTcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
ZW5lcmljVHlwZQogICAgIGxvbmcgY291bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0
bywgZnJvbSksIGZpbmFsIC0gZnJvbSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJl
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlwZSogYXJyYXkg
PSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIG1lbW1vdmUoYXJyYXkgKyB0bywgYXJy
YXkgKyBmcm9tLCBjb3VudCAqIHRoaXNPYmplY3QtPmVsZW1lbnRTaXplKTsKQEAgLTE3NCwxMiAr
MTgxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpz
Q2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3Qt
Pmxlbmd0aCgpOwogCkBAIC0xOTMsNyArMjAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAg
IHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlw
ZWRWZWN0b3IoKTsKICAgICBhdXRvIHRhcmdldE9wdGlvbiA9IFZpZXdDbGFzczo6dG9BZGFwdG9y
TmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKHZhbHVlVG9GaW5kKTsKQEAgLTIxOSwxNiAr
MjI4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5kZXhPZihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgLy8gMjIuMi4zLjEzCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3Mq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVk
IGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmplY3QtPmxlbmd0aCgpOwogCkBAIC0yMzgsNyArMjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
IAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1l
c3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFt
ZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9y
KCk7CiAgICAgYXV0byB0YXJnZXRPcHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZy
b21WYWx1ZVdpdGhvdXRDb2VyY2lvbih2YWx1ZVRvRmluZCk7CkBAIC0yNTYsMTEgKzI2NywxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4oVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyog
dGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIDIyLjIuMy4xNAog
ICAgIGF1dG8gam9pbldpdGhTZXBhcmF0b3IgPSBbJl0gKFN0cmluZ1ZpZXcgc2VwYXJhdG9yKSAt
PiBFbmNvZGVkSlNWYWx1ZSB7CkBAIC0yODksMjEgKzMwMywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OwogICAgIHJldHVybiBqb2luV2l0aFNlcGFyYXRvcihzZXBhcmF0b3JTdHJpbmctPnZpZXcoZXhl
YykuZ2V0KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRl
eE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy4xNgotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25l
IGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtMzI2LDcgKzM0
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGF1dG8gdGFyZ2V0T3B0aW9uID0gVmlld0NsYXNz
Ojp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24odmFsdWVUb0ZpbmQpOwog
ICAgIGlmICghdGFyZ2V0T3B0aW9uKQpAQCAtMzQ1LDcgKzM2MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0Ns
YXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0dldHRlckZ1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoVk0m
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjMKICAgICBWaWV3Q2xhc3MqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzU0
LDcgKzM3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoVk0mLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8g
MjIuMi4zLjE3CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKQEAgLTM2Myw3ICszNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5n
dGgoVk0mLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjIKICAgICBWaWV3Q2xh
c3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpA
QCAtMzcyLDcgKzM4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChWTSYsIEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICAvLyAyMi4yLjMuMwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zODEsMTIgKzM5NywxNSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2Uo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIu
My4yMQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVj
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5E
ZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsK
IAogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVj
dC0+dHlwZWRWZWN0b3IoKTsKICAgICBzdGQ6OnJldmVyc2UoYXJyYXksIGFycmF5ICsgdGhpc09i
amVjdC0+bGVuZ3RoKCkpOwpAQCAtMzk1LDEyICs0MTQsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjI1CiAgICAgVmlld0NsYXNz
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJy
YXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdGhpc09iamVjdC0+
c29ydCgpOwogCkBAIC00MDgsMTUgKzQzMCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xp
Y2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsK
Ky8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjI2Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNh
bGxlZSgpKTsKIAogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIHVuc2lnbmVkIHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsK
IApAQCAtNDI4LDcgKzQ1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGUKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gQ2xhbXAgZW5kIHRvIGJlZ2luLgog
ICAgIGVuZCA9IHN0ZDo6bWF4KGJlZ2luLCBlbmQpOwpAQCAtNDQ4LDcgKzQ3Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIAogICAgIEFTU0VSVCghcmVzdWx0
LT5pc05ldXRlcmVkKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVu
RGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CiAKICAgICAvLyBXZSByZXR1cm4gZWFybHkgaGVyZSBzaW5jZSB3ZSBkb24ndCBhbGxvY2F0ZSBh
IGJhY2tpbmcgc3RvcmUgaWYgbGVuZ3RoIGlzIDAgYW5kIG1lbW1vdmUgZG9lcyBub3QgbGlrZSBu
dWxscHRycwogICAgIGlmICghbGVuZ3RoKQpAQCAtNDkyLDE1ICs1MTYsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5
Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFy
cmF5Q3JlYXRlKFZNJnZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IC8vIDIyLjIuMy4yMwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBWaWV3
Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1l
c3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBHZXQg
dGhlIGxlbmd0aCBoZXJlOyBsYXRlciBhc3NlcnQgdGhhdCB0aGUgbGVuZ3RoIGRpZG4ndCBjaGFu
Z2UuCiAgICAgdW5zaWduZWQgdGhpc0xlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwpAQCAt
NTUyLDcgKzU3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUK
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHJlc3VsdCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAotICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBW
aWV3Iik7CisgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJzcGVjaWVzIGNvbnN0cnVj
dG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Iik7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMDIsMTkgKzEyMDIsMjIgQEAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBK
U0dsb2JhbE9iamVjdAogCiBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFop
CiB7CisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJz
ZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAg
ICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gaGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpID8g
RGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUgPSBleGVjdXRhYmxlLT5leGVjdXRhYmxlSW5mbygpLmV2YWxDb250ZXh0VHlwZSgpOwog
ICAgIAotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgp
LmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJsb2NrKAotICAgICAgICB2bSgpLCBleGVjdXRhYmxl
LCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwg
c3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJs
ZXNVbmRlclREWik7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IHZtLmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJsb2NrKAorICAgICAgICB2bSwgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sIHN0cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFy
aWFibGVzVW5kZXJURFopOwogCiAgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCiAgICAgICAgIGRlYnVn
Z2VyKCktPnNvdXJjZVBhcnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3Zp
ZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgZXJyb3IudG9FcnJv
ck9iamVjdCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRhYmxl
LT5zb3VyY2UoKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEyMjMs
MTYgKzEyMjYsMTkgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Ywog
CiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFBhcnNlckVycm9y
IGVycm9yOwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNJbnRlcmFjdGl2ZURl
YnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7Ci0gICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdl
dE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCi0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dl
ck1vZGUsIGVycm9yKTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gdm0uY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
CisgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgZGVidWdnZXJNb2RlLCBlcnJvcik7CiAKICAgICBpZiAo
aGFzRGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFt
ZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5t
ZXNzYWdlKCkpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZN
RXJyb3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBlcnJvci50
b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MDksIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHly
aWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqCkBAIC03NiwxMSArNzYsMTQg
QEAgc3RhdGljIEJpdG1hcDwyNTY+IG1ha2VDaGFyYWN0ZXJCaXRtYXAoYwogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEJpdG1hcDwyNTY+JiBkb05vdEVzY2FwZSwgY29uc3QgQ2hhcmFjdGVyVHlwZSog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTgu
Mi42LjEuMSBSdW50aW1lIFNlbWFudGljczogRW5jb2RlICggc3RyaW5nLCB1bmVzY2FwZWRTZXQg
KQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVuY29kZQogCi0g
ICAgYXV0byB0aHJvd0V4Y2VwdGlvbiA9IFtleGVjXSB7Ci0gICAgICAgIHJldHVybiBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiU3RyaW5nIGNvbnRhaW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOworICAg
IGF1dG8gdGhyb3dFeGNlcHRpb24gPSBbJnNjb3BlLCBleGVjXSB7CisgICAgICAgIHJldHVybiBK
U0M6OnRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikp
KTsKICAgICB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpAQCAtMTYzLDYgKzE2Niw5
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIEFMV0FZU19JTkxJTkUKIHN0YXRpYyBK
U1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJz
LCBpbnQgbGVuZ3RoLCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJp
Y3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBp
bnQgayA9IDA7CiAgICAgVUNoYXIgdSA9IDA7CkBAIC0yMDMsNyArMjA5LDcgQEAgc3RhdGljIEpT
VmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgYwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGNoYXJMZW4gPT0gMCkgewogICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVycm9yIikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVSSSBlcnJvciIpKSk7CiAgICAgICAgICAgICAgICAg
Ly8gVGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBpcyB0aGUg
InVuZXNjYXBlIiBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwgaXQncyBn
b29kIHRvIHN1cHBvcnQgdGhlIHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmlsaXR5IHdp
dGggV2luSUUuCiAgICAgICAgICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBwWzFdID09
ICd1JwpAQCAtNjQwLDEzICs2NDYsMTYgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KFN0cmlu
Z1ZpZXcgcykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHggPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh4KTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFi
bGVkKCkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
dmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkp
OworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4
ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTg0NSwx
MiArODU0LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1UKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KICAg
ICAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
QXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCAiJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxl
cicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiJ2FyZ3VtZW50cycsICdjYWxs
ZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOwog
fQogCiBjbGFzcyBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yIHsKQEAgLTg4Nyw4ICs5MDAs
MTEgQEAgcHJpdmF0ZToKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
UHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlzVmFsdWUo
KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9i
amVjdCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVj
dCIpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7CiAKQEAg
LTk0NCw4ICs5NjAsMTEgQEAgYm9vbCBjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChFeGVj
UwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIAotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkNhbid0IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkNhbid0IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOwogCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogCkBAIC05NjIsNyArOTgxLDYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSAmJiAhdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJv
b2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVlOwogICAgIHRoaXNPYmplY3QtPnNldFByb3Rv
dHlwZSh2bSwgZXhlYywgdmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMCwxMSArMTEwLDE0IEBAIHZvaWQgSlNNb2R1bGVF
bnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXgKIAogYm9vbCBKU01vZHVsZUVudmlyb25tZW50Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVF
bnZpcm9ubWVudCo+KGNlbGwpOwogICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1t
dXRhYmxlLgogICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlz
T2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpm
cm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5
cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAw
LDkgQEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZAogCiBib29sIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVj
dHMtZ2V0b3ducHJvcGVydHktcAogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKQEAgLTEyOSw3
ICsxMzIsNyBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAgICAg
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9kdWxl
LT5tb2R1bGVFbnZpcm9ubWVudCgpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCB0cmFtcG9saW5l
U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldCk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSB0YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhl
YywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKKyAgICAgICAgYm9vbCBm
b3VuZCA9IHRhcmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1w
b2xpbmVTbG90KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogCiAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpOwpAQCAtMTM3LDcgKzE0MCw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3AKIAogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGggVERa
IHZhbHVlLCB0aHJvdyBhIHJlZmVyZW5jZSBlcnJvci4KICAgICAgICAgaWYgKCF2YWx1ZSkgewot
ICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTE2MiwxNiArMTY1
LDIyIEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3AKIAogYm9vbCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCiAg
ICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MTkzLDE3ICsyMDIsMjMgQEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJv
cAogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1l
c3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCiAgICAgaWYgKHNo
b3VsZFRocm93KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNp
YmxlLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4
dGVuc2libGUuIikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGEgbW9kdWxlIG5hbWVzcGFj
ZSBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoInx0aGlzfCBzaG91bGQgYmUgYSBtb2R1bGUgbmFtZXNwYWNlIG9iamVj
dCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0
ZXJhdG9yU3RydWN0dXJlKCksIG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4MSw2ICs2ODEsOSBAQCBzdGF0aWMgdm9pZCBnZXRFeHBvcnRlZE5h
bWVzKEV4ZWNTdGF0ZSogCiAKIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29y
ZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3Nl
Yy1nZXRtb2R1bGVuYW1lc3BhY2UKICAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCiAg
ICAgICAgIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKQEAgLTY5NCwxMSAr
Njk3LDExIEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDoKICAgICAg
ICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVF
eHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1lLmdldCgpKSk7CiAgICAg
ICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6Tm90Rm91bmQ6Ci0gICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VT
dHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBp
cyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29w
ZSwgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcobmFtZS5nZXQo
KSksICInIGlzIG5vdCBmb3VuZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgotICAgICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJFeHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1
bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAg
ICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkV4cG9ydGVk
IGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0
IGVudHJpZXMuIikpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgY2Fz
ZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CkBAIC03MTAsMjkgKzcxMywzMyBAQCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVSZWNvcmQ6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1b3VzTmFt
ZXMpKTsKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91c05hbWVz
KSk7CiAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOwogfQogCiB2b2lk
IEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2VDb2RlKCkpOwogICAgIGlmICghZXhlY3V0YWJs
ZSkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N5bnRh
eEVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKKyAg
ICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CiAg
ICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSk7CiB9CiAKIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogCiAgICAgU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPm1vZHVsZUVudmly
b25tZW50U3ltYm9sVGFibGUoKTsKLSAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZp
cm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9s
VGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZp
cm9ubWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CiAK
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCiAgICAgLy8gc2VjdGlvbiAxNS4yLjEu
MTYuNCBzdGVwIDkuCkBAIC03NDUsMTUgKzc1MiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpp
bnN0YW50aWF0ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBy
ZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpOwogICAgICAgICAgICAg
c3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6Tm90Rm91bmQ6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBt
YWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbmRp
cmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9y
dE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgotICAg
ICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3Rs
eSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1l
LmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxl
IGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNj
b3BlLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVk
IGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAg
ICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0
bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkg
c3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5h
bWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlv
bjo6VHlwZTo6UmVzb2x2ZWQ6CkBAIC03NzksMTUgKzc4NiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVj
b3JkOjppbnN0YW50aWF0ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRp
b24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBv
cnROYW1lKTsKICAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgotICAgICAgICAgICAgICAgIHRo
cm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAn
IiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5k
LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtl
U3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1w
b3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6Ci0g
ICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRp
bmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkp
LCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5n
cy4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgbWFr
ZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5Lmlt
cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMg
bXVsdGlwbGUgYmluZGluZ3MuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAgICAgICAgICAgICB0aHJv
d1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2Rl
ZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAg
ICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJ
bXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3Rh
ciBleHBvcnQgZW50cmllcy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTcsNiArMjk3LDggQEAgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OSW1wbChK
U1ZhbHVlIAogU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5k
U3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBK
U09iamVjdCogaG9sZGVyLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1bmN0
aW9uLgogICAgIHZhbHVlID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICh2
bS5leGNlcHRpb24oKSkKQEAgLTM2OCw3ICszNzAsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyCiAgICAgLy8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1
dCB0aGUgaG9sZGVyIG9uIHRoZSBzdGFjay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9ob2xkZXJTdGFjay5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tp
XS5vYmplY3QoKSA9PSBvYmplY3QpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
YywgQVNDSUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBz
dHJ1Y3R1cmVzLiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3Ry
dWN0dXJlcy4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNTg5LDEwICs1OTEsMTMgQEAgZW51bSBXYWxrZXJTdGF0ZSB7IFN0YXRl
VW5rbm93biwgQXJyYXlTdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0
U3RhcnRTdGF0ZSwgT2JqZWN0U3RhcnRWaXNpdE1lbWJlciwgT2JqZWN0RW5kVmlzaXRNZW1iZXIg
fTsKIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQp
CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTYsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiBwcm9wZXJ0eVN0YWNrOwogICAgIFZlY3Rvcjx1aW50MzJfdCwg
MTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBpbmRleFN0YWNrOwotICAgIExvY2FsU3RhY2s8SlNP
YmplY3QsIDE2PiBvYmplY3RTdGFjayhtX2V4ZWMtPnZtKCkpOwotICAgIExvY2FsU3RhY2s8SlNB
cnJheSwgMTY+IGFycmF5U3RhY2sobV9leGVjLT52bSgpKTsKKyAgICBMb2NhbFN0YWNrPEpTT2Jq
ZWN0LCAxNj4gb2JqZWN0U3RhY2sodm0pOworICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFy
cmF5U3RhY2sodm0pOwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTYsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBhcnJheUxlbmd0aFN0YWNrOwogICAgIAogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTYs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBzdGF0ZVN0YWNrOwpAQCAtNjA3LDcgKzYxMiw3IEBAIE5F
VkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBB
U1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0Fy
cmF5KGFzT2JqZWN0KGluVmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoSlNB
cnJheTo6aW5mbygpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSAr
IGFycmF5U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMsIHNjb3Bl
KTsKIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShpblZhbHVlKTsK
ICAgICAgICAgICAgICAgICBhcnJheVN0YWNrLnB1c2goYXJyYXkpOwpAQCAtNjYzLDcgKzY2OCw3
IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAg
ICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
IWlzSlNBcnJheShhc09iamVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5pbmhl
cml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2su
c2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhl
Yywgc2NvcGUpOwogCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKQEAg
LTczNiwzMSArNzQxLDM0IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1Zh
bHUKICAgICB9CiAgICAgSlNPYmplY3QqIGZpbmFsSG9sZGVyID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QobV9leGVjKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmaW5hbEhvbGRlcik7Ci0gICAg
ZmluYWxIb2xkZXItPm1ldGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVjLCBtX2V4
ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7
CisgICAgZmluYWxIb2xkZXItPm1ldGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKICAg
ICByZXR1cm4gY2FsbFJldml2ZXIoZmluYWxIb2xkZXIsIGpzRW1wdHlTdHJpbmcobV9leGVjKSwg
b3V0VmFsdWUpOwogfQogCiAvLyBFQ01BLTI2MiB2NSAxNS4xMi4yCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04u
cGFyc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpKTsKICAgICBK
U1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIEpTVmFsdWUg
dW5maWx0ZXJlZDsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkpOworICAgIExvY2Fs
U2NvcGUgbG9jYWxTY29wZSh2bSk7CiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewogICAgICAg
ICBMaXRlcmFsUGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzb3VyY2UubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0g
anNvblBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICAgICAgaWYgKCF1bmZpbHRlcmVkKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihl
eGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFy
c2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGl0ZXJhbFBh
cnNlcjxVQ2hhcj4ganNvblBhcnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVyczE2KCksIHNvdXJj
ZS5sZW5ndGgoKSwgU3RyaWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2Vy
LnRyeUxpdGVyYWxQYXJzZSgpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25Q
YXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNl
ci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMikKQEAgLTc3MSwxOCArNzc5LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnUKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2JqZWN0PihleGVjLT52bSgp
LCBhc09iamVjdChmdW5jdGlvbikpLCBjYWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJl
ZCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2Jq
ZWN0Pih2bSwgYXNPYmplY3QoZnVuY3Rpb24pKSwgY2FsbFR5cGUsIGNhbGxEYXRhKS53YWxrKHVu
ZmlsdGVyZWQpKTsKIH0KIAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
Tm8gaW5wdXQgdG8gc3RyaW5naWZ5IikpKTsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZt
KCkpOwotICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKLSAgICBMb2NhbDxVbmtub3duPiByZXBsYWNlcihleGVjLT52bSgpLCBl
eGVjLT5hcmd1bWVudCgxKSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gc3BhY2UoZXhlYy0+dm0oKSwg
ZXhlYy0+YXJndW1lbnQoMikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGlucHV0IHRvIHN0cmluZ2lm
eSIpKSk7CisgICAgTG9jYWxTY29wZSBsb2NhbFNjb3BlKHZtKTsKKyAgICBMb2NhbDxVbmtub3du
PiB2YWx1ZSh2bSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIExvY2FsPFVua25v
d24+IHJlcGxhY2VyKHZtLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgTG9jYWw8VW5rbm93bj4g
c3BhY2Uodm0sIGV4ZWMtPmFyZ3VtZW50KDIpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmlu
Z2lmaWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgsIDIwMDksIDIw
MTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0
Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTM1NCw2ICsxMzU0LDcgQEAgdm9pZCBKU09iamVjdDo6
c2V0UHJvdG90eXBlRGlyZWN0KFZNJiB2bQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVX
aXRoQ3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUs
IGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlz
LCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90
b3R5cGVEaXJlY3QoKSA9PSBwcm90b3R5cGUpCkBAIC0xMzY1LDcgKzEzNjYsNyBAQCBib29sIEpT
T2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAKICAgICBpZiAoIWlzRXh0ZW5zaWJs
ZSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTEzNzQsNyArMTM3NSw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWMKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZSAmJiBuZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkp
IHsKICAgICAgICAgaWYgKG5leHRQcm90b3R5cGUgPT0gdGhpcykgewogICAgICAgICAgICAgaWYg
KHNob3VsZFRocm93SWZDYW50U2V0KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19w
cm90b19fIHZhbHVlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJvdG90eXBlKS0+bWV0aG9kVGFibGUo
dm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCkBAIC0xNjE2LDI4ICsx
NjE3LDMyIEBAIGVudW0gY2xhc3MgVHlwZUhpbnRNb2RlIHsgVGFrZXNIaW50LCBEb2UKIHRlbXBs
YXRlPFR5cGVIaW50TW9kZSBtb2RlID0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQ+CiBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9u
KCk7CisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2NvcGUuZXhj
ZXB0aW9uKCk7CiAgICAgaWYgKGZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkgJiYgbW9kZSA9PSBUeXBl
SGludE1vZGU6OlRha2VzSGludCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKGNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBz
Y29wZS5leGNlcHRpb24oKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGNhbGxBcmdzOwog
ICAgIGlmIChtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KSB7CiAgICAgICAgIEpTU3Ry
aW5nKiBoaW50U3RyaW5nID0gbnVsbHB0cjsKICAgICAgICAgc3dpdGNoIChoaW50KSB7CiAgICAg
ICAgIGNhc2UgTm9QcmVmZXJlbmNlOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZt
KCkuc21hbGxTdHJpbmdzLmRlZmF1bHRTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJpbmcg
PSB2bS5zbWFsbFN0cmluZ3MuZGVmYXVsdFN0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUHJlZmVyTnVtYmVyOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMt
PnZtKCkuc21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpOworICAgICAgICAgICAgaGludFN0cmlu
ZyA9IHZtLnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFByZWZlclN0cmluZzoKLSAgICAgICAgICAgIGhpbnRTdHJpbmcgPSBleGVj
LT52bSgpLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJp
bmcgPSB2bS5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYWxsQXJncy5hcHBlbmQoaGludFN0cmluZyk7CkBAIC0xNjQ1
LDQwICsxNjUwLDQ3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbFRvUHJpbWkK
IAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBjb25zdF9jYXN0PEpTT2JqZWN0Kj4ob2JqZWN0KSwgY2FsbEFyZ3MpOwogICAgIEFT
U0VSVCghcmVzdWx0LmlzR2V0dGVyU2V0dGVyKCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOworICAgIGlmIChzY29wZS5l
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIGlmIChy
ZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpE
b2VzTm90VGFrZUhpbnQgPyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlN5bWJvbC50b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiKSk7CisgICAgICAg
IHJldHVybiBtb2RlID09IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50ID8gSlNWYWx1ZSgp
IDogdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJp
bWl0aXZlIHJldHVybmVkIGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAv
LyBFQ01BIDcuMS4xCiBKU1ZhbHVlIEpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KSBjb25zdAogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgZGVmYXVsdCB2YWx1ZSBtZXRo
b2RzIHRoZXJlIGFyZSBvbiBvYmplY3QncyBwcm90b3R5cGUgY2hhaW4gYXJlCiAgICAgLy8gYmVp
bmcgd2F0Y2hlZC4KLSAgICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ0ludGVybmFs
UHJvcGVydGllc0lmTmVjZXNzYXJ5Rm9yRW50aXJlQ2hhaW4oZXhlYy0+dm0oKSk7CisgICAgdGhp
cy0+c3RydWN0dXJlKCktPnN0YXJ0V2F0Y2hpbmdJbnRlcm5hbFByb3BlcnRpZXNJZk5lY2Vzc2Fy
eUZvckVudGlyZUNoYWluKHZtKTsKIAogICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgaWYgKGhpbnQg
PT0gUHJlZmVyU3RyaW5nKSB7CiAgICAgICAgIHZhbHVlID0gY2FsbFRvUHJpbWl0aXZlRnVuY3Rp
b24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBoaW50KTsKKyAg
ICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9PSB2
YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB2
YWx1ZTsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlz
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkp
OwogICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlz
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkp
OwogICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAg
IHZhbHVlID0gY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvU3RyaW5nLCBoaW50KTsKKyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlm
ICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBBU1NFUlQo
IWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSk7CisgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSk7CiB9
CiAKIEpTVmFsdWUgSlNPYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKQEAgLTE3Mjcs
MTIgKzE3MzksMTQgQEAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIEpTT2JqZWN0OjpmaW5kUHJvcAog
Ym9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgCiAKICAgICBp
ZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJbnN0YW5jZVZh
bHVlICE9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb24oKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGhhc0luc3RhbmNlVmFsdWUs
IGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0g
ICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2Vv
ZlBhcmFtZXRlckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsK
KyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRo
aXMpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xNzQ3LDcg
KzE3NjEsNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAgICAg
ICAgIHJldHVybiBkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIGdldChleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSk7CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0hh
c0luc3RhbmNlKCkpCiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0lu
c3RhbmNlKHRoaXMsIGV4ZWMsIHZhbHVlKTsKLSAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oZXhlYywgdGhp
cykpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFu
Y2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oZXhlYywgdGhpcykpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtMTc2MCwxNSArMTc3NCwxNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0
YW5jZShFeGVjU3RhdGUqIGV4CiAKIGJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFu
IGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0
IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEpT
VmFsdWUgb2JqZWN0VmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CkBAIC0y
MjM4LDYgKzIyNTQsOSBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUlu
CiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIGJvb2wgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NF
UlQoKGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUp
OwogICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKIApAQCAtMjI0Nyw4ICsy
MjY2LDYgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8v
IG9yIGVxdWFsIHRvIHRoZSB2ZWN0b3IgbGVuZ3RoLgogICAgIEFTU0VSVChpID49IGJ1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
CiAgICAgaWYgKGkgPiBNQVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgKICAgICAgICAgfHwgKGkgPj0g
TUlOX1NQQVJTRV9BUlJBWV9JTkRFWCAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihpLCBjb3Vu
dEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQogICAgICAgICB8fCBpbmRleElz
U3VmZmljaWVudGx5QmV5b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIGJ1dHRlcmZseS0+dmVjdG9y
TGVuZ3RoKCkpKSB7CkBAIC0yMjYyLDcgKzIyNzksNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgfQogCiAgICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIGkg
KyAxKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CkBAIC0yMzAwLDYgKzIz
MTcsNyBAQCB0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kCiBib29sIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cs
IEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIGkgc2hvdWxk
IGJlIGEgdmFsaWQgYXJyYXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHZl
Y3Rvci4KICAgICBBU1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAtMjMyNyw3ICsyMzQ1
LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0bywg
b3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRlIGEg
c3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCi0gICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNl
SW5kZXhNYXAoZXhlYy0+dm0oKSk7CisgICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhN
YXAodm0pOwogICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIApAQCAtMjMzNyw3ICsyMzU1LDcgQEAgYm9vbCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAvLyBQcm9oaWJpdCBncm93
aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICBpZiAobWFw
LT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBsZW5ndGggPSBpICsgMTsKQEAgLTIzNDcsNyArMjM2NSw3IEBAIGJvb2wgSlNPYmplY3Q6
OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICAvLyBXZSBhcmUgY3VycmVudGx5IHVzaW5n
IGEgbWFwIC0gY2hlY2sgd2hldGhlciB3ZSBzdGlsbCB3YW50IHRvIGJlIGRvaW5nIHNvLgogICAg
IC8vIFdlIHdpbGwgY29udGludWUgIHRvIHVzZSBhIHNwYXJzZSBtYXAgaWYgU3BhcnNlTW9kZSBp
cyBzZXQsIGEgdmVjdG9yIHdvdWxkIGJlIHRvbyBzcGFyc2UsIG9yIGlmIGFsbG9jYXRpb24gZmFp
bHMuCiAgICAgdW5zaWduZWQgbnVtVmFsdWVzSW5BcnJheSA9IHN0b3JhZ2UtPm1fbnVtVmFsdWVz
SW5WZWN0b3IgKyBtYXAtPnNpemUoKTsKLSAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlz
RGVuc2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVh
c2VWZWN0b3JMZW5ndGgoZXhlYy0+dm0oKSwgbGVuZ3RoKSkKKyAgICBpZiAobWFwLT5zcGFyc2VN
b2RlKCkgfHwgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5
KSB8fCAhaW5jcmVhc2VWZWN0b3JMZW5ndGgodm0sIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBt
YXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAKICAgICAv
LyBSZXJlYWQgbV9zdG9yYWdlIGFmdGVyIGluY3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUgbV9u
dW1WYWx1ZXNJblZlY3Rvci4KQEAgLTI5NDQsNiArMjk2Miw5IEBAIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdE1heUJlSW5kZXgoRXhlY1MKIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIGJvb2wgaXNFeHRlbnNpYmxlLAogICAgIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGN1cnJlbnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICAvLyBJZiB3ZSBoYXZlIGEgbmV3IHByb3BlcnR5IHdlIGNhbiBqdXN0IHB1dCBpdCBvbiBu
b3JtYWxseQogICAgIC8vIFN0ZXAgMi4KICAgICBpZiAoIWlzQ3VycmVudERlZmluZWQpIHsKQEAg
LTI5NTEsNyArMjk3Miw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cigKICAgICAgICAgLy8gU3RlcCAyLmEKICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsKICAg
ICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9u
IG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmlu
ZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvYmplY3QpCkBAIC0y
OTc0LDEyICsyOTk1LDEyIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cigKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1
dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50
KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkgIT0gY3VycmVudC5lbnVtZXJhYmxlKCkpIHsK
ICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFi
bGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0y
OTg4LDcgKzMwMDksNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3Io
CiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNoYW5naW5nIHRoZSBhdHRy
aWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5l
cmljRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwo
ZGVzY3JpcHRvcikgJiYgb2JqZWN0KSB7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0
b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0
cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5OTksMTQgKzMwMjAsMTQgQEAgYm9vbCB2YWxpZGF0
ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURl
c2NyaXB0b3IoKSAhPSBjdXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAo
IWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5j
b25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChVbmNvbmZp
Z3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3Qs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGlu
Z0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMzAxNiwxMyArMzAzNywx
MyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIGlm
ICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50Lndy
aXRhYmxlKCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBv
ZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFjdXJyZW50LndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52
YWx1ZSgpICYmICFzYW1lVmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZh
bHVlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIp
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTMwMzEsNyArMzA1Miw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBs
eVByb3BlcnR5RGVzY3JpcHRvcigKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlw
dG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBA
IC0zMDQxLDE3ICszMDYyLDE3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRl
c2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50KCkgJiYg
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3JpcHRvci5z
ZXR0ZXIoKSkpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRl
bXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5
LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAm
JiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9y
LmdldHRlcigpKSkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVy
dHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChjdXJyZW50LmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKSB7CiAgICAgICAgICAgICBp
ZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21F
cnJvcikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9y
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDU5
LDMzICszMDgwLDMzIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigK
ICAgICAvLyBTdGVwIDEwLzExLgogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBKU1ZhbHVlIGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwg
cHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyOwogICAgIGJvb2wgZ2V0dGVyU2V0
dGVyQ2hhbmdlZCA9IGZhbHNlOwogICAgIGlmIChhY2Nlc3Nvci5pc0N1c3RvbUdldHRlclNldHRl
cigpKSB7Ci0gICAgICAgIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMt
PnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGdldHRlclNldHRl
ciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OwogICAgICAgICBhdXRvKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oYWNjZXNzb3IpOwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5zZXR0
ZXIoKSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPnZtKCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25G
b3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OlNldHRlcikpOworICAgICAgICAgICAg
Z2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
Z2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVy
dHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246
OlR5cGU6OlNldHRlcikpOwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIo
KSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JH
ZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OkdldHRlcikpOworICAgICAgICAgICAgZ2V0
dGVyU2V0dGVyLT5zZXRHZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlO
YW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5
cGU6OkdldHRlcikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChhY2Nlc3Nvci5pc0dl
dHRlclNldHRlcigpKTsKICAgICAgICAgZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNj
ZXNzb3IpOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpIHsKLSAg
ICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoU2V0dGVyKGV4ZWMtPnZtKCks
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7
CisgICAgICAgIGdldHRlclNldHRlciA9IGdldHRlclNldHRlci0+d2l0aFNldHRlcih2bSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKICAg
ICAgICAgZ2V0dGVyU2V0dGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChkZXNjcmlw
dG9yLmdldHRlclByZXNlbnQoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0
ZXItPndpdGhHZXR0ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBk
ZXNjcmlwdG9yLmdldHRlck9iamVjdCgpKTsKKyAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVy
U2V0dGVyLT53aXRoR2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2Ny
aXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1
ZTsKICAgICB9CiAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYm
ICFnZXR0ZXJTZXR0ZXJDaGFuZ2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRlc2Ny
aXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9iamVjdC0+
cHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJz
IHwgQWNjZXNzb3IpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzIzMyw2ICszMjU0LDkgQEAgdm9p
ZCBKU09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSgogLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nZXRtZXRob2QK
IEpTVmFsdWUgSlNPYmplY3Q6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIENhbGxEYXRhJiBj
YWxsRGF0YSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIG1l
dGhvZCA9IGdldChleGVjLCBpZGVudCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMyNDEsMTMgKzMyNjUsMTMgQEAgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZQogICAgICAgICBpZiAobWV0aG9k
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAogICAgIGNhbGxUeXBlID0gbWV0aG9kLmFzQ2Vs
bCgpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtZXRob2QuYXNDZWxsKCksIGNhbGxEYXRh
KTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlB1dERp
cmVjdEluZGV4TW9kZS5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVUeXBlLmgiCi0KICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJWTS5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC02NiwxMCArNjUsMTEgQEAgY2xhc3MgTWFya2Vk
QmxvY2s7CiBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJh
eTsKIGNsYXNzIFN0cnVjdHVyZTsKK2NsYXNzIFRocm93U2NvcGU7CiBzdHJ1Y3QgSGFzaFRhYmxl
Owogc3RydWN0IEhhc2hUYWJsZVZhbHVlOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYpOwogZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3Qg
Y2hhciogVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yOwog
CkBAIC0xNjY1LDM3ICsxNjY1LDYgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVu
dGlmaWVyKAogICAgIHJldHVybiBuYW1lOwogfQogCi0vLyBTZWN0aW9uIDcuMy4xNyBvZiB0aGUg
c3BlYy4gCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBmdW5jdGlvbiBz
aG91bGQgaGF2ZSBhIHR5cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sCi12
b2lkIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcnJh
eUxpa2VWYWx1ZSwgUnVudGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKLXsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwotICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1bHQ7Ci0gICAgSlNWYWx1ZSBs
ZW5ndGhQcm9wZXJ0eSA9IGFycmF5TGlrZVZhbHVlLmdldChleGVjLCBleGVjLT52bSgpLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCk7Ci0gICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm47Ci0gICAgZG91YmxlIGxlbmd0aEFzRG91YmxlID0gbGVuZ3RoUHJvcGVydHkudG9MZW5ndGgo
ZXhlYyk7Ci0gICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgUkVM
RUFTRV9BU1NFUlQobGVuZ3RoQXNEb3VibGUgPj0gMC4wICYmIGxlbmd0aEFzRG91YmxlID09IHN0
ZDo6dHJ1bmMobGVuZ3RoQXNEb3VibGUpKTsKLSAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4obGVuZ3RoQXNEb3VibGUpOwotICAgIGZvciAodWludDY0X3QgaW5kZXgg
PSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykgewotICAgICAgICBKU1ZhbHVlICBuZXh0ID0g
YXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMsIGluZGV4KTsKLSAgICAgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBy
dW50aW1lVHlwZUZvclZhbHVlKG5leHQpOwotICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBl
c0ZpbHRlcikpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2Fn
ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGV4aXRF
YXJseSA9IGFkZEZ1bmN0aW9uKG5leHQsIHR5cGUpOwotICAgICAgICBpZiAoZXhpdEVhcmx5KQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQogYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBib29s
IGlzRXh0ZW5zaWJsZSwKICAgICBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgaXNDdXJyZW50RGVmaW5lZCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBjdXJyZW50
LCBib29sIHRocm93RXhjZXB0aW9uKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCwzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gU2VjdGlvbiA3LjMu
MTcgb2YgdGhlIHNwZWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBm
dW5jdGlvbiBzaG91bGQgaGF2ZSBhIHR5cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAt
PiBib29sCit2b2lkIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBhcnJheUxpa2VWYWx1ZSwgUnVudGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKK3sKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICAKKyAgICBWZWN0b3I8SlNWYWx1ZT4gcmVzdWx0OworICAgIEpTVmFsdWUg
bGVuZ3RoUHJvcGVydHkgPSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBkb3VibGUgbGVuZ3RoQXNEb3VibGUgPSBsZW5ndGhQcm9wZXJ0eS50b0xlbmd0aChleGVjKTsK
KyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FT
U0VSVChsZW5ndGhBc0RvdWJsZSA+PSAwLjAgJiYgbGVuZ3RoQXNEb3VibGUgPT0gc3RkOjp0cnVu
YyhsZW5ndGhBc0RvdWJsZSkpOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihsZW5ndGhBc0RvdWJsZSk7CisgICAgZm9yICh1aW50NjRfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICAgIEpTVmFsdWUgbmV4dCA9IGFycmF5TGlr
ZVZhbHVlLmdldChleGVjLCBpbmRleCk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBy
dW50aW1lVHlwZUZvclZhbHVlKG5leHQpOworICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBl
c0ZpbHRlcikpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBib29sIGV4aXRFYXJseSA9IGFkZEZ1bmN0aW9uKG5leHQsIHR5cGUpOworICAgICAgICBp
ZiAoZXhpdEVhcmx5KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoVU5MSUtF
TFkocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8p
KQpAQCAtNTUsMTAgKzg4LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVy
Zm9ybUYKIC8vIEVDTUEgOC42LjIuMgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJ
bmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3Qs
IHRoaXNPYmplY3QpKSkKICAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3Ry
aWN0TW9kZSgpKTsKQEAgLTY5LDEwICsxMDQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpwdXRJbmxpbmUoSgogICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICBp
ZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoZXhlYywgdm0sIHByb3BlcnR5
TmFtZSkpIHsKLSAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90
b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSk7
CisgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hh
aW5NYXlJbnRlcmNlcHRTdG9yZVRvKHZtLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgMCwgc2xvdCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05NiwxMiArOTYsMTMgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1
Y3Rvcjo6YWRkT3duSW50ZXJuYQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1Rhcmdl
dCgpOwogICAgIGlmIChuZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgp
LCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQpAQCAtMTE0LDcgKzExNSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnMKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAi
UHJvbWlzZSIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJQcm9taXNlIikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Myw5ICsxNDMsMTIgQEAgYm9vbCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpuZXh0KEV4
ZWNTdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3BlcnR5TmFtZUl0ZXJhdG9y
RnVuY05leHQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjYWxsIFByb3BlcnR5TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0
eU5hbWVJdGVyYXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFBy
b3BlcnR5TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBv
YmplY3QiKSkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0
KGV4ZWMsIHJlc3VsdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0z
ODAsMTEgKzM4MCwxNCBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShV
CiAKIHZvaWQgSlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBjbGVhckZpYmVycygpOwogICAgIEFTU0VSVChpc1JvcGUo
KSk7CiAgICAgQVNTRVJUKG1fdmFsdWUuaXNOdWxsKCkpOwogICAgIGlmIChleGVjKQotICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjLCBzY29wZSk7CiB9CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTcxLDE3ICs3MSwxOSBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGJ1
aWxkKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAg
aWYgKCFtX29rYXkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIGlmIChtX2lzOEJpdCkgewogICAgICAgICAgICAgYnVmZmVyOC5zaHJpbmtU
b0ZpdCgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXI4LmRhdGEoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOwogICAgICAgICB9CiAg
ICAgICAgIGJ1ZmZlcjE2LnNocmlua1RvRml0KCk7CiAgICAgICAgIGlmICghYnVmZmVyMTYuZGF0
YSgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikpOwogICAg
IH0KIApAQCAtMTI3LDkgKzEyOSwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFs
U3RyaW5nKEV4CiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZS4uLiBTdHJp
bmdUeXBlcz4KIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmdUeXBlJiBzdHJpbmcsIGNvbnN0IFN0cmluZ1R5cGVzJi4uLiBz
dHJpbmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cmluZyByZXN1bHQgPSBXVEY6OnRyeU1ha2VT
dHJpbmcoc3RyaW5nLCBzdHJpbmdzLi4uKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04MSw2ICs4MSw5IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGpvaW5TdHJp
bmdzKGNvbnN0IFYKIAogaW5saW5lIHVuc2lnbmVkIEpTU3RyaW5nSm9pbmVyOjpqb2luZWRMZW5n
dGgoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVk
IG51bWJlck9mU3RyaW5ncyA9IG1fc3RyaW5ncy5zaXplKCk7CiAgICAgaWYgKCFudW1iZXJPZlN0
cmluZ3MpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTEsNyArOTQsNyBAQCBpbmxpbmUgdW5zaWdu
ZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAgICAg
aWYgKHRvdGFsTGVuZ3RoLnNhZmVHZXQocmVzdWx0KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJm
bG93KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTksNiArMTAyLDkgQEAgaW5saW5lIHVuc2ln
bmVkIEpTU3RyaW5nSm9pbmVyOjpqb2luZWRMZQogCiBKU1ZhbHVlIEpTU3RyaW5nSm9pbmVyOjpq
b2luKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlQobV9zdHJp
bmdzLnNpemUoKSA8PSBtX3N0cmluZ3MuY2FwYWNpdHkoKSk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBqb2luZWRMZW5ndGgoc3RhdGUpOwpAQCAtMTE1LDcgKzEyMSw3IEBAIEpTVmFsdWUgSlNT
dHJpbmdKb2luZXI6OmpvaW4oRXhlY1N0YXRlJiAKICAgICAgICAgcmVzdWx0ID0gam9pblN0cmlu
Z3M8VUNoYXI+KG1fc3RyaW5ncywgbV9zZXBhcmF0b3IsIGxlbmd0aCk7CiAKICAgICBpZiAocmVz
dWx0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7
CiAKICAgICByZXR1cm4ganNTdHJpbmcoJnN0YXRlLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCShy
ZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0pvaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsMTYgKzYwLDIwIEBAIGlubGluZSBKU1N0
cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoRXgKICAgICA6IG1fc2VwYXJhdG9yKHNlcGFyYXRv
cikKICAgICAsIG1faXNBbGw4Qml0KG1fc2VwYXJhdG9yLmlzOEJpdCgpKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIGlmIChVTkxJS0VMWSghbV9zdHJpbmdzLnRyeVJlc2VydmVDYXBhY2l0eShzdHJpbmdD
b3VudCkpKQotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogfQogCiBpbmxpbmUgSlNTdHJp
bmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKEV4ZWNTdGF0ZSYgc3RhdGUsIExDaGFyIHNlcGFyYXRv
ciwgdW5zaWduZWQgc3RyaW5nQ291bnQpCiAgICAgOiBtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRv
cihzZXBhcmF0b3IpCiAgICAgLCBtX3NlcGFyYXRvciB7ICZtX3NpbmdsZUNoYXJhY3RlclNlcGFy
YXRvciwgMSB9CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5
UmVzZXJ2ZUNhcGFjaXR5KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29w
ZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKFN0cmlu
Z1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyYmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2lu
Y2x1ZGUgIlN5bWJvbFRhYmxlLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUg
IlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTY2LDYg
KzE2Nyw3IEBAIHRlbXBsYXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBzeW1ib2xUYWJsZVAKIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBi
b29sJiBwdXRSZXN1bHQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBXYXRjaHBvaW50U2V0KiBzZXQg
PSBudWxscHRyOwogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKQEAgLTE4Miw3
ICsxODQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dChTeW1ib2xUYWJsZU9iCiAgICAg
ICAgIEFTU0VSVCghZmFzdEVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgaWYgKGZhc3RFbnRyeS5p
c1JlYWRPbmx5KCkgJiYgIWlnbm9yZVJlYWRPbmx5RXJyb3JzKSB7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkVGhyb3dSZWFkT25seUVycm9yKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMDAsOSArMjAyLDkgQEAgaW5saW5lIGJv
b2wgc3ltYm9sVGFibGVQdXQoU3ltYm9sVGFibGVPYgogICAgIC8vIHRoZSByaWdodCBmb3IgYmFy
cmllcnMgdG8gYmUgYWJsZSB0byB0cmlnZ2VyIEdDLiBBbmQgSSBkb24ndCB3YW50IHRvIGhvbGQg
Vk0KICAgICAvLyBsb2NrcyB3aGlsZSBHQydpbmcuCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0TW9k
ZSA9PSBTeW1ib2xUYWJsZVB1dE1vZGU6OkludmFsaWRhdGUpCi0gICAgICAgIHN5bWJvbFRhYmxl
UHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoZXhlYy0+dm0oKSwgb2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCByZWcsIHNldCk7CisgICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdh
dGNocG9pbnRTZXQodm0sIG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOwog
ICAgIGVsc2UKLSAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoZXhlYy0+
dm0oKSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CisgICAgICAgIHN5
bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHZtLCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHJlZywgc2V0KTsKICAgICBwdXRSZXN1bHQgPSB0cnVlOwogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDcgKzY2LDkgQEAgU3RydWN0dXJlKiBKU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3I6OgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCIlVHlwZWRBcnJheSUgc2hvdWxk
IG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiJVR5cGVkQXJyYXklIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNiArMzksMjYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZGVmaW5lIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihmdW5jdGlvbk5hbWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
c3dpdGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGUpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDhD
bGFtcGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50
OENsYW1wZWRBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1wZWRBcnJheT4o
dm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2Fz
ZSBUeXBlSW50MzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNJbnQzMkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQzMkFy
cmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgY2FzZSBUeXBlVWludDMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MzJBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50MzJBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQ2NDogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQzMjogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+
KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+KHZtLCBleGVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50
ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJ
bnQ4QXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJyYXk+KHZtLCBl
eGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
Y2FzZSBUeXBlVWludDg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5j
dGlvbk5hbWU8SlNVaW50OEFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50
OEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgY2FzZSBUeXBlSW50MTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQxNkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNJbnQxNkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDE2OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4oZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBOb3RUeXBlZEFycmF5OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwoIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03MiwxNCArNzIsMTYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5VgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIWFyZ3VtZW50LmlzQ2VsbCgpIHx8ICFpc1R5cGVkVmlldyhh
cmd1bWVudC5hc0NlbGwoKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyIpKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAgICAgaWYgKHRo
aXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4g
ZGV0YWNoZWQgZnJvbSB0aGUgdmlldyIpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIodGhpc09iamVjdC0+bGVuZ3RoKCkpKTsKIH0KQEAgLTk0LDExMSArOTYsMTM5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVYKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04o
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKIH0KIAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5F
UklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY1NldCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jQ29weVdpdGhpbik7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENB
TExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hv
dWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAg
Q0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAg
IENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExf
R0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNKb2luKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9H
RU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAg
IENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZz
ZXQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMg
bm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2Up
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTdWJhcnJheUNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3
IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9Q
Uk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJh
eUNyZWF0ZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNl
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSArNTAs
MTYgQEAgdm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIk1hcCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rp
b25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJNYXAiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1
bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiBt
YXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShl
eGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNzEsMTEgKzc2LDExIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0
aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRk
ZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaElu
SXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGFJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw5IEBAIGlubGluZSB2b2lkIE1h
cERhdGFJbXBsPEVudHJ5LCBKU0l0ZXJhdG8KIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5LCB0eXBl
bmFtZSBKU0l0ZXJhdG9yPgogaW5saW5lIENoZWNrZWRCb29sZWFuIE1hcERhdGFJbXBsPEVudHJ5
LCBKU0l0ZXJhdG9yPjo6ZW5zdXJlU3BhY2VGb3JBcHBlbmQoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIG93bmVyKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKG1fY2FwYWNpdHkgPiBtX3NpemUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0yMTEsNyArMjE0LDcgQEAgaW5saW5lIENoZWNr
ZWRCb29sZWFuIE1hcERhdGFJbXBsPEVudHJ5LAogICAgIHZvaWQqIG5ld1N0b3JhZ2UgPSBudWxs
cHRyOwogICAgIERlZmVyR0MgZGVmZXIoKmV4ZWMtPmhlYXAoKSk7CiAgICAgaWYgKCFleGVjLT5o
ZWFwKCktPnRyeUFsbG9jYXRlU3RvcmFnZShvd25lciwgcmVxdWlyZWRTaXplICogc2l6ZW9mKEVu
dHJ5KSwgJm5ld1N0b3JhZ2UpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0
PEVudHJ5Kj4obmV3U3RvcmFnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsOSArNTAsMTIgQEAgdm9pZCBNYXBJdGVyYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpbwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE1hcEl0
ZXJhdG9yUHJvdG90eXBlRnVuY05leHQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0m
IHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxK
U01hcEl0ZXJhdG9yKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRv
cikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgTWFwSXRlcmF0b3IubmV4dCgpIG9uIGEgbm9u
LU1hcEl0ZXJhdG9yIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2Fs
bCBNYXBJdGVyYXRvci5uZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0IikpKTsKIAog
ICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChpdGVyYXRvci0+bmV4dChjYWxsRnJhbWUsIHJl
c3VsdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwxNiBAQCB2
b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAKIEFMV0FZU19JTkxJTkUg
c3RhdGljIEpTTWFwKiBnZXRNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1Zh
bHVlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJy
b3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTTWFwKiBtYXAgPSBqc0R5bmFt
aWNDYXN0PEpTTWFwKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIW1hcCkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQg
b24gbm9uLU1hcCBvYmplY3QiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmpl
Y3QiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbWFwOwpA
QCAtMTU1LDI2ICsxNTgsMzUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90
b0Z1bgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1ZhbHVlcyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXAqIHRo
aXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVl
IGl0ZXJhdG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09i
aiwgSXRlcmF0ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEg
TWFwIHZhbHVlIGl0ZXJhdG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJ
dGVyYXRlVmFsdWUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90
b0Z1bmNFbnRyaWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxG
cmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU01hcCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVh
dGUgYSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZt
KCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVj
dHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0tleXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTWFwKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU01h
cCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBrZXkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmpl
Y3QuIikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0
ZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5t
YXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBmb3IgYSBub24tTWFw
IG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6
Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0
b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByaXZhdGVGdW5jSXNNYXAoRXhlY1N0YXRlKiBleGVjKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwOSw2ICsx
MDksOCBAQCBNb2R1bGVMb2FkZXJQcm90b3R5cGU6Ok1vZHVsZUxvYWRlclByb3RvCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVBhcnNlTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbW9k
dWxlS2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0xMjcsNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZQogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQ
YXJzZXJDb21tZW50TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVN
b2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVj
dChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgdGhy
b3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0
dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4
ICs3MiwxMSBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmljdChFeGVjU3RhdGUqIGV4CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGNhbGxlcklzU3RyaWN0KGV4
ZWMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEg
Z2V0dGVyIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxNSArMzY0
LDE4IEBAIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCAKIC8vIHRvIGFy
Z3VtZW50LXBsdXMtb25lIHNpZ25pZmljYW50IGZpZ3VyZXMpLgogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSB4OwogICAgIGlmICghdG9UaGlzTnVtYmVyKGV4
ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IC8vIEdldCB0aGUgYXJndW1lbnQuIAogICAgIGludCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudDsK
ICAgICBib29sIGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5n
ZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQsIGlzVW5kZWZpbmVkKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFu
ZCAyMCIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQg
bXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIElu
ZmluaXR5LgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkKQEAgLTM5NSwxNSArMzk4LDE4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIG1ldGhvZCB3aWxs
IGluc3RlYWQgZmFsbGJhY2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+
dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8g
R2V0IHRoZSBhcmd1bWVudC4gCiAgICAgaW50IGRlY2ltYWxQbGFjZXM7CiAgICAgYm9vbCBpc1Vu
ZGVmaW5lZDsgLy8gVGhpcyBpcyBpZ25vcmVkOyB1bmRlZmluZWQgdHJlYXRlZCBhcyAwLgogICAg
IGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNl
cywgaXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQoKSBh
cmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUuNy40LjUu
NyBzdGF0ZXMgIklmIHggPj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAv
LyBUaGlzIGFsc28gY292ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRo
YXQgTmFOCkBAIC00MjgsMTUgKzQzNCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlclByb3RvCiAvLyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBleHBvbmVu
dGlhbCByZXByZXNlbnRhdGlvbi4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVy
UHJvdG9GdW5jVG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVu
dC4gCiAgICAgaW50IHNpZ25pZmljYW50RmlndXJlczsKICAgICBib29sIGlzVW5kZWZpbmVkOwog
ICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAxLCAyMSwgc2lnbmlmaWNh
bnRGaWd1cmVzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkgYXJn
dW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
InRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAog
ICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFz
IFRvU3RyaW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ4NSwyMiArNDk0LDIzIEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgaW50ZWdlclZhbHUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgZG91YmxlVmFsdWU7CiAgICAgaWYgKCF0b1RoaXNO
dW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhl
eGVjKTsKICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRv
U3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDIgYW5kIDM2IikpKTsKIAogICAgIGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oZG91YmxlVmFsdWUpOwogICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91Ymxl
VmFsdWUpCiAgICAgICAgIHJldHVybiBpbnRlZ2VyVmFsdWVUb1N0cmluZyhleGVjLCByYWRpeCwg
aW50ZWdlclZhbHVlKTsKIAotICAgIGlmIChyYWRpeCA9PSAxMCkgewotICAgICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2
bSwgdm0tPm51bWVyaWNTdHJpbmdzLmFkZChkb3VibGVWYWx1ZSkpKTsKLSAgICB9CisgICAgaWYg
KHJhZGl4ID09IDEwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKCZ2
bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkpOwogCiAgICAgaWYgKCFzdGQ6
OmlzZmluaXRlKGRvdWJsZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQo
ZG91YmxlVmFsdWUpKSk7CkBAIC01MTEsMTkgKzUyMSwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG51bWJlclByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVl
KCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih4KS50b1N0cmluZyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVyKHRoaXNWYWx1ZSwgeCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFdURjo6bWFrZVN0cmluZygi
dGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwganNDYXN0PEpTU3RyaW5n
Kj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBXVEY6Om1ha2VT
dHJpbmcoInRoaXNOdW1iZXJWYWx1ZSBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIsIGpzQ2FzdDxK
U1N0cmluZyo+KGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIHRoaXNWYWx1ZSkpLT52YWx1ZShl
eGVjKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMyArMjE3
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAob2JqZWN0VmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUgcHJvdG9W
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG9WYWx1ZS5pc09iamVjdCgp
ICYmICFwcm90b1ZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIzMiw3ICsyMzUsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVy
QWNjZXNzQWxsb3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG9iamVjdFZhbHVlKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBz
aG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBv
YmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNh
bnRTZXQpOwogICAgIEFTU0VSVF9VTlVTRUQoZGlkU2V0UHJvdG90eXBlLCB2bS5leGNlcHRpb24o
KSB8fCBkaWRTZXRQcm90b3R5cGUpOwpAQCAtMzQ0LDggKzM0NiwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG93bkVudW1lcmFiCiBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBh
biBvYmplY3QuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNPYmplY3QqIGRlc2NyaXB0aW9uID0gYXNP
YmplY3QoaW4pOwpAQCAtMzkwLDcgKzM5NCw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAg
ICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0
LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikp
OworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDA1LDcgKzQwOSw3IEBAIGJv
b2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFzZXQu
aXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAg
ICAgICBpZiAoZ2V0Q2FsbERhdGEoc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRl
ciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNDE3LDEyICs0MjEsMTIgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChkZXNjLnZhbHVlKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3Bl
cnR5LiAgJ3ZhbHVlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4i
KSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIklu
dmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIg
b3Igc2V0dGVyLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChk
ZXNjLndyaXRhYmxlUHJlc2VudCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9w
ZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxlJyBw
cmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC00MzAsMTkgKzQzNCwyNSBA
QCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwotICAg
IEpTT2JqZWN0KiBPID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVz
IGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7CisgICAgSlNPYmplY3QqIG9iaiA9
IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoIXRvUHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKSkKKyAgICBhdXRvIHN1
Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihleGVjLCBleGVjLT5hcmd1bWVudCgyKSwgZGVz
Y3JpcHRvcik7CisgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsKKyAg
ICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
OwogICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFk
ZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKLSAgICBPLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3du
UHJvcGVydHkoTywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE8pOworICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZp
bmVPd25Qcm9wZXJ0eShvYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsK
IH0KIAogc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQpAQCAtNDg1LDggKzQ5NSwxMSBA
QCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCku
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKICAgICBKU09i
amVjdCogdGFyZ2V0T2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIEpTT2Jq
ZWN0KiBwcm9wcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmICgh
cHJvcHMpCkBAIC00OTYsMTYgKzUwOSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAm
JiAhcHJvdG8uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3Ig
bnVsbC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51
bGwuIikpOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpCiAgICAg
ICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQogICAgICAg
ICA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnQoMSkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdP
YmplY3QpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNj
cmlwdG9yIGxpc3QgbXVzdCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdG9y
IGxpc3QgbXVzdCBiZSBhbiBPYmplY3QuIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZGVmaW5lUHJvcGVydGllcyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50
KDEpKSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MTI3LDYgKzEyNyw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0LDcgKzEzNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBKU1ZhbHVlIGdldCA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxs
RGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpAQCAtMTQ2LDEzICsxNDksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUp
OwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xNjAsNyArMTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90bwogICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBl
OjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImludmFsaWQgc2V0dGVyIHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKTsK
IAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNzIsNyArMTc4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0
b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7
Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhy
b3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHko
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMjY5
LDYgKzI3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0
cmluZygpIDogdm0uc21hbGxTdHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7CkBAIC0zMDMsNyAr
MzExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgU3RyaW5nIG5ld1N0cmluZyA9IFdURjo6
dHJ5TWFrZVN0cmluZygiW29iamVjdCAiLCBXVEZNb3ZlKHRhZyksICJdIik7CiAgICAgICAgIGlm
ICghbmV3U3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgbmV3
U3RyaW5nKTsKICAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9T
dHJpbmdWYWx1ZShleGVjLCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMiwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LTIwMDksIDIwMTMtMjAx
NCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNDAsNiArNDAsNyBAQCBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2Fs
bEZyYW1lCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBK
U1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3Qg
bGVuZ3RoMSA9IHMxLT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aDEpCkBAIC00OCw3ICs0OSw3
IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUKICAgICBpZiAoIWxl
bmd0aDIpCiAgICAgICAgIHJldHVybiBzMTsKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+
KGxlbmd0aDEsIGxlbmd0aDIpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KTsKIAogICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgczEsIHMyKTsKIH0KQEAg
LTU2LDEzICs1NywxNCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRl
CiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIHUxLCBjb25zdCBTdHJpbmcmIHUyLCBjb25zdCBTdHJpbmcmIHUzKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CiAKICAgICBpbnQzMl90IGxlbmd0aDEgPSB1MS5sZW5ndGgoKTsKICAgICBpbnQzMl90
IGxlbmd0aDIgPSB1Mi5sZW5ndGgoKTsKICAgICBpbnQzMl90IGxlbmd0aDMgPSB1My5sZW5ndGgo
KTsKICAgICAKICAgICBpZiAobGVuZ3RoMSA8IDAgfHwgbGVuZ3RoMiA8IDAgfHwgbGVuZ3RoMyA8
IDApCi0gICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIGlm
ICghbGVuZ3RoMSkKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1
MiksIGpzU3RyaW5nKHZtLCB1MykpOwpAQCAtNzIsNyArNzQsNyBAQCBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBq
c1N0cmluZyh2bSwgdTEpLCBqc1N0cmluZyh2bSwgdTIpKTsKIAogICAgIGlmIChzdW1PdmVyZmxv
d3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMiwgbGVuZ3RoMykpCi0gICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5n
KHZtLCB1MykpOwogfQpAQCAtODAsMTIgKzgyLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N0cmluZyhFeGVjU3RhdGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdp
c3RlckFycmF5KEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNSb3BlU3RyaW5nOjpSb3BlQnVpbGRlciByb3Bl
QnVpbGRlcigqdm0pOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKICAgICAgICAgSlNWYWx1ZSB2ID0gc3RyaW5nc1stc3RhdGljX2Nhc3Q8aW50PihpKV0uanNW
YWx1ZSgpOwogICAgICAgICBpZiAoIXJvcGVCdWlsZGVyLmFwcGVuZCh2LnRvU3RyaW5nKGV4ZWMp
KSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9
CiAKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpAQCAtOTQsMTMgKzk3LDE0IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3QKIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBqc1N0cmluZ0Zyb21Bcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRo
aXNWYWx1ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIg
cm9wZUJ1aWxkZXIoKnZtKTsKICAgICByb3BlQnVpbGRlci5hcHBlbmQodGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVu
dENvdW50KCk7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudChpKTsK
ICAgICAgICAgaWYgKCFyb3BlQnVpbGRlci5hcHBlbmQodi50b1N0cmluZyhleGVjKSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOSBAQCBQcm94eUNvbnN0cnVjdG9yOjpQcm94eUNv
bnN0cnVjdG9yKFZNJiB2CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
a2VSZXZvY2FibGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkucmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVu
dHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgbmVl
ZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhh
bmRsZXIiKSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFyZ0xpc3QgYXJncyhl
eGVjKTsKQEAgLTgxLDcgKzgyLDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFrZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9j
YWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgY2Fu
bm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiKSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkucmV2b2NhYmxlIGNh
bm5vdCBiZSBjb25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIikpOwogfQogCiB2b2lk
IFByb3h5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFt
ZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTk0LDggKzk2LDkgQEAgdm9pZCBQ
cm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm94eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAg
aWYgKGV4ZWMtPm5ld1RhcmdldCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQcm94eSBjb25z
dHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgb2YgUHJveHkg
Y29uc3RydWN0IHNob3VsZCBub3QgYmUgdW5kZWZpbmVkIikpOwogCiAgICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gYXJncy5hdCgwKTsKQEAgLTExMSw3ICsxMTQs
OCBAQCBDb25zdHJ1Y3RUeXBlIFByb3h5Q29uc3RydWN0b3I6OmdldENvbnN0CiAKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJQcm94eSIpKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJQcm94eSIpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKQEAgLTc5LDE5ICs4MCwyMCBAQCBTdHJ1Y3R1cmUqIFByb3h5T2JqZWN0
OjpzdHJ1Y3R1cmVGb3JUYXJnCiAKIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQog
eworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBz
aG91bGQgYmUgYW4gT2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoUHJveHlPYmplY3QqIHRhcmdldEFz
UHJveHkgPSBqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4odGFyZ2V0KSkgewogICAgICAgICBp
ZiAodGFyZ2V0QXNQcm94eS0+aGFuZGxlcigpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFu
b3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIgUHJveHkgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
cmV2b2tlZCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0
aGUgb3RoZXIgUHJveHkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gcmV2b2tlZCIpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWhhbmRsZXIuaXNPYmplY3Qo
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkn
cyAnaGFuZGxlcicgc2hvdWxkIGJlIGFuIE9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQg
YmUgYW4gT2JqZWN0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTYsOCArMTE4
LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHNfcHJveHlBbHJlYWR5UmV2b2tlZAogc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5
T2JqZWN0LCBKU1ZhbHVlIHJlY2VpdmVyLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgIH0KIApAQCAtMTM1LDcgKzEzOCw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94
eUdldChFeGVjU3RhdGUKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHlPYmplY3Qt
PmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAog
ICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsK
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTE1OSwxMCArMTYyLDEwIEBAIHN0YXRpYyBKU1Zh
bHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUKICAgICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkgewogICAgICAg
ICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmln
dXJhYmxlKCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFz
YW1lVmFsdWUoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCB0cmFwUmVzdWx0KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBo
YW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRh
YmxlIHByb3BlcnR5IHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJv
cGVydHkiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24t
Y29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1l
IHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSIpKTsKICAgICAgICAgfSBlbHNlIGlmIChk
ZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJh
YmxlKCkgJiYgZGVzY3JpcHRvci5nZXR0ZXIoKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAg
ICBpZiAoIXRyYXBSZXN1bHQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldCcg
cmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEg
Z2V0dGVyIHNob3VsZCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAn
Z2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhv
dXQgYSBnZXR0ZXIgc2hvdWxkIGJlIHVuZGVmaW5lZCIpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTg1LDggKzE4OCw5IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXQoRXhlY1N0YXRl
KiAKIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1
cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAg
ICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsK
QEAgLTIwMCw3ICsyMDQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRo
b2RHCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBp
ZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFs
cmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTIyMSw3ICsyMjUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1Vu
ZGVmaW5lZCgpICYmICF0cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBjYWxsIHNob3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJyZXN1
bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FsbCBzaG91bGQgZWl0aGVyIGJlIGFu
IE9iamVjdCBvciB1bmRlZmluZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTIzNCw3ICsyMzgsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRo
b2RHCiAgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIXRhcmdldFByb3BlcnR5RGVzY3Jp
cHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIldoZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yJyBpcyB1bmRlZmluZWQgdGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJsZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2hl
biB0aGUgcmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0
aGUgdGFyZ2V0IG11c3QgYmUgY29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXNuJ3Qgd29yayBpZiAn
dGFyZ2V0JyBpcyBhbm90aGVyIFByb3h5LiBXZSBkb24ndCBoYXZlIGlzRXh0ZW5zaWJsZSBpbXBs
ZW1lbnRlZCBpbiBhIHdheSB0aGF0IGZpdHMgdy8gUHJveHlzLgpAQCAtMjQ2LDcgKzI1MCw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgICAgIC8v
IEZJWE1FOiBDb21lIHVwIHdpdGggYSB0ZXN0IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUg
aG93IHRvIGJlY2F1c2UKICAgICAgICAgICAgIC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBh
bGwgZmllbGRzIFtbQ29uZmlndXJhYmxlXV0gZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mzc2Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxk
IGJlIGV4dGVuc2libGUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJu
cyB1bmRlZmluZWQsIHRoZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxl
IikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTI2NCwxMyAr
MjY4LDEzIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICBi
b29sIHZhbGlkID0gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxs
cHRyLCBwcm9wZXJ0eU5hbWUsIGlzRXh0ZW5zaWJsZSwKICAgICAgICAgdHJhcFJlc3VsdEFzRGVz
Y3JpcHRvciwgaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkLCB0YXJnZXRQcm9wZXJ0
eURlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKICAgICBpZiAoIXZhbGlkKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNjcmlw
dG9yIHRlc3QiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgZmFpbHMgdGhl
IElzQ29tcGF0aWJsZVByb3BlcnR5RGVzY3JpcHRvciB0ZXN0IikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCF0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSgpKSB7CiAgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVk
IHx8IHRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUg
J3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBh
IGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CisgICAgICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0
aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBp
cyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTEsOCArMjk1LDkgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VM
WSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0YXJnZXQg
PSB0aGlzLT50YXJnZXQoKTsKQEAgLTMwNyw3ICszMTIsNyBAQCBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtSGFzUHJvcGVydHkoRXhlCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMt
PmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVy
cm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKGlzUHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAgaWYg
KCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVl
JyBmb3Igbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzIikpOworICAgICAgICAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVz
dCByZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9v
bCBpc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAn
dHJ1ZScgZm9yIGEgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1
cmFibGUgcHJvcGVydHkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9y
IGEgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJv
cGVydHkiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0zNTYsOCArMzYxLDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1I
YXNQcm9wZXJ0eShFeGUKIAogYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29t
bW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIGlmIChVTkxJS0VMWSghZXhlYy0+dm0oKS5pc1NhZmVUb1JlY3Vy
c2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewor
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwpAQCAtMzk0LDgg
KzQwMSw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmMKIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVl
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURl
ZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDA0LDcg
KzQxMiw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiAKIAogICAg
IEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVy
VmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9r
ZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM2
LDExICs0NDQsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIAog
ICAgIGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0
b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVl
KCksIHB1dFZhbHVlKSkgewotICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxl
IGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1
cm4gZmFsc2Ugb3IgYmUgdGhlIHNhbWUgdmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24t
d3JpdGFibGUgcHJvcGVydHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ug
b3IgYmUgdGhlIHNhbWUgdmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1
cmFibGUoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3Mg
J3NldCcgbWV0aG9kIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRo
b3V0IGEgc2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0
JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQg
YSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4NiwxNCArNDk0LDE1IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7CiAgICAgfQogICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVj
dCo+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5o
YW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwog
CiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtNTM1LDE0ICs1NDQsMTUgQEAgQ2FsbFR5cGUg
UHJveHlPYmplY3Q6OmdldENhbGxEYXRhKEpTQ2VsbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsK
LSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOwogICAgIH0KICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8
UHJveHlPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxy
ZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFu
ZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTU2OSw3ICs1NzksNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidz
ICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJv
bSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3Qi
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC01OTAsOCAr
NjAwLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbgogYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlZmF1bHREZWxldGVGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdERlbGV0ZSkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQo
KSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtNjAwLDcgKzYxMSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1E
ZWxldGUoRXhlY1N0YXQKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtNjMxLDcgKzY0Miw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1EZWxldGUoRXhlY1N0YXQKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAg
ICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkp
IHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94
eSBoYW5kbGVyJ3MgJ2RlbGV0ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3
aGVuIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOworICAgICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBo
YW5kbGVyJ3MgJ2RlbGV0ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVu
IHRoZSB0YXJnZXQncyBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjY2LDE0ICs2NzcsMTUgQEAg
Ym9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5k
bGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJl
dm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NzAyLDcgKzcxNCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW8K
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAodGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAncHJldmVudEV4dGVuc2lv
bnMnIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3VnaCBpdHMgdGFyZ2V0IGlzIGV4dGVuc2li
bGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIGZhbHNlIikpOworICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdwcmV2ZW50RXh0
ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0YXJnZXQgaXMgZXh0
ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03MTgsMTQgKzczMCwxNSBAQCBib29s
IFByb3h5T2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhKU09iCiBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFs
dWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
c19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzU3LDExICs3
NzAsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZShFeAogICAgIGlm
ICh0cmFwUmVzdWx0QXNCb29sICE9IGlzVGFyZ2V0RXh0ZW5zaWJsZSkgewogICAgICAgICBpZiAo
aXNUYXJnZXRFeHRlbnNpYmxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXRyYXBSZXN1bHRBc0Jv
b2wpOwotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUg
dGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7Cisg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUg
dGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzVGFyZ2V0RXh0ZW5zaWJsZSk7
CiAgICAgICAgICAgICBBU1NFUlQodHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5z
aWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJs
ZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdpc0V4
dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVu
c2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIGZhbHNlIikpOwogICAgICAgICB9CiAgICAg
fQogICAgIApAQCAtNzc2LDggKzc4OSw5IEBAIGJvb2wgUHJveHlPYmplY3Q6OmlzRXh0ZW5zaWJs
ZShKU09iamVjdCoKIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NzkxLDcgKzgwNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIK
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmICho
YW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFk
eVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtODM2LDExICs4NTAsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blBy
b3BlcgogCiAgICAgaWYgKCFpc1RhcmdldERlc2NyaXB0b3JEZWZpbmVkKSB7CiAgICAgICAgIGlm
ICghdGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQg
dHJ1ZSBldmVuIHRob3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3Mg
dGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCBhbmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJs
ZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRo
b3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVy
bmVkIHVuZGVmaW5lZCBhbmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2V0dGluZ0NvbmZp
Z3VyYWJsZVRvRmFsc2UpIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZv
ciBhIG5vbi1jb25maWd1cmFibGUgZmllbGQgZXZlbiB0aG91Z2ggZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yIG9mIHRoZSBQcm94eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmluZWQiKSk7CisgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5
J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJldHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3Vy
YWJsZSBmaWVsZCBldmVuIHRob3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFBy
b3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCIpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCkBAIC04NTMsMTEgKzg2NywxMSBAQCBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVyCiAgICAgYm9vbCB0aHJvd0V4Y2VwdGlvbiA9IGZhbHNl
OwogICAgIGJvb2wgaXNDb21wYXRpYmxlRGVzY3JpcHRvciA9IHZhbGlkYXRlQW5kQXBwbHlQcm9w
ZXJ0eURlc2NyaXB0b3IoZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0YXJnZXRJc0V4dGVu
c2libGUsIGRlc2NyaXB0b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0
aW9uKTsKICAgICBpZiAoIWlzQ29tcGF0aWJsZURlc2NyaXB0b3IpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0
cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlzIGNvbXBh
dGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IHRoYXQg
aXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFs
c2UgJiYgdGFyZ2V0RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRy
YXAgZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9uIGl0cyB0YXJn
ZXQgZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAgc2FpZCBpdCBt
dXN0IGRvIHNvIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEg
bm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRoZSBp
bnB1dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyIpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTg3MywxMyArODg3LDE0IEBAIGJvb2wg
UHJveHlPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2IKIHZvaWQgUHJveHlPYmplY3Q6OnBl
cmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHRyYXBSZXN1bHQsIEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0g
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
SlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJW
YWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NjksNyArOTg0
LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9y
IChVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA6IHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMpIHsK
ICAgICAgICAgaWYgKHJlbW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwp
ID09IElzTm90Q29udGFpbmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29uZmln
dXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0aGUg
cmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcg
aGFzIHRoZSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRo
YXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtOTc5LDEzICs5OTQsMTMgQEAg
dm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9yIChVbmlx
dWVkU3RyaW5nSW1wbCogaW1wbCA6IHRhcmdldENvbmZpZ3VyYWJsZUtleXMpIHsKICAgICAgICAg
aWYgKHJlbW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpID09IElzTm90
Q29udGFpbmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZVN0
cmluZygiUHJveHkgb2JqZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0eSAnIiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJl
c3VsdCBmcm9tIHRoZSAnb3duS2V5cycgdHJhcCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIlByb3h5IG9iamVjdCdzIG5vbi1leHRlbnNp
YmxlICd0YXJnZXQnIGhhcyBjb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBsKSwg
IicgdGhhdCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAiKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodW5jaGVj
a2VkUmVzdWx0S2V5cy5zaXplKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIHJldHVybmVkIGEg
a2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0ZW5zaWJsZSB0YXJnZXQiKSk7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90
IHByZXNlbnQgaW4gaXRzIG5vbi1leHRlbnNpYmxlIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIH0KQEAgLTEwMjIsMTQgKzEwMzcsMTUgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybVNldFByb3RvdHlwZShFeAogICAgIEFTU0VSVChwcm90b3R5cGUuaXNPYmplY3QoKSB8fCBw
cm90b3R5cGUuaXNOdWxsKCkpOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5p
c1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9
IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2
b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwNTcsNyArMTA3Myw3IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgKICAgICAKICAgICBpZiAoIXRyYXBSZXN1
bHRBc0Jvb2wpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93SWZDYW50U2V0KQotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5
cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90
b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiKSk7Cisg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBu
b3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRv
IHN1Y2NlZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwNzEsNyAr
MTA4Nyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgKICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNhbWVW
YWx1ZShleGVjLCBwcm90b3R5cGUsIHRhcmdldFByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJh
cCByZXR1cm5lZCB0cnVlIHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhl
IG5ldyBwcm90b3R5cGUgdmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3Rv
dHlwZSB2YWx1ZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3Rv
dHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1leHRlbnNp
YmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1
cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA4NiwxNCArMTEwMiwxNSBAQCBi
b29sIFByb3h5T2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqCiBKU1ZhbHVlIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAK
ICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFu
ZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlS
ZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQog
CkBAIC0xMTE1LDcgKzExMzIsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJv
dG90eXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQu
aXNPYmplY3QoKSAmJiAhdHJhcFJlc3VsdC5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXRQcm90b3R5cGVP
ZicgdHJhcCBzaG91bGQgZWl0aGVyIHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCIpKTsKKyAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5k
bGVyJ3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVj
dCBvciBudWxsIikpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTEy
OSw3ICsxMTQ2LDcgQEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQog
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBp
ZiAoIXNhbWVWYWx1ZShleGVjLCB0YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdnZXRQcm90
b3R5cGVPZicgdHJhcCBmb3IgYSBub24tZXh0ZW5zaWJsZSB0YXJnZXQgc2hvdWxkIHJldHVybiB0
aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvdG90eXBlIikpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2dldFByb3Rv
dHlwZU9mJyB0cmFwIGZvciBhIG5vbi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRo
ZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm90b3R5cGUiKSk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDI2ICs5NSwyOSBAQCB2b2lkIFJlZmxlY3RPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
CiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmNvbnN0cnVj
dAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhl
Yy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJl
ZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVj
dG9yIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlOwogICAgIGlm
ICghdGFyZ2V0LmlzQ29uc3RydWN0b3IoY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YSBjb25zdHJ1Y3RvciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOwogCiAgICAgSlNW
YWx1ZSBuZXdUYXJnZXQgPSB0YXJnZXQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
PSAzKSB7CiAgICAgICAgIG5ld1RhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDIpOwogICAgICAgICBp
ZiAoIW5ld1RhcmdldC5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25z
dHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJl
c2VudCIpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVz
IHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiKSkpOwogICAg
IH0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBKU09iamVjdCog
YXJndW1lbnRzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmFyZ3VtZW50
KDEpKTsKICAgICBpZiAoIWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3Ry
dWN0IHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7CiAKICAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShleGVjLCBh
cmd1bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCBBU0NJSUxpdGVyYWwoIlRo
aXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIiksIFsmXSAoSlNWYWx1ZSB2YWx1ZSwgUnVudGlt
ZVR5cGUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKQEAgLTEy
OSw5ICsxMzIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQog
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVwcm9w
ZXJ0eQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDUsMjUgKzE1MSwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAgICAgLy8gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSBz
aG91bGQgbm90IHRocm93IGFuIGVycm9yIHdoZW4gdGhlIGRlZmluZU93blByb3BlcnR5IG9wZXJh
dGlvbiBmYWlscy4KICAgICBib29sIHNob3VsZFRocm93ID0gZmFsc2U7CiAgICAgSlNPYmplY3Qq
IHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVm
aW5lT3duUHJvcGVydHkodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSk7CiB9
CiAKIC8vIEZJWE1FOiBSZWZsZWN0LmVudW1lcmF0ZSBpcyByZW1vdmVkIGluIEVDTUEgMjAxNiBk
cmFmdC4KIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1yZWZsZWN0LmVudW1lcmF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZWN0RW51bWVyYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVy
YXRlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1
cmUoKSwgYXNPYmplY3QodGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0R2V0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBi
ZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgY29uc3QgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MCw5ICsxOTIsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdl
dCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0IikpKTsKIAogICAgIGF1dG8ga2V5ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xOTQsMTggKzIwOSwy
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldHByb3RvdHlwZW9mCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZs
ZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKGV4ZWMsIGFzT2JqZWN0KHRh
cmdldCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVm
bGVjdC5pc2V4dGVuc2libGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdElzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmlzRXh0
ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAog
ICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIxNiwyMCArMjM3LDI2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qub3dua2V5cwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lm93bktleXMgcmVxdWly
ZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVmbGVjdC5vd25LZXlzIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3Qi
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIGpz
Q2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1i
b2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lvbnMKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25z
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJl
IGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9u
cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBib29sIHJlc3VsdCA9IG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgZXhl
Yyk7CisgICAgYm9vbCByZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4
dGVuc2lvbnMob2JqZWN0LCBleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKQEAgLTIzOCw5ICsyNjUsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5zZXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09iamVjdCog
dGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKQEAgLTI1NCwyNSArMjg0
LDI3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICAvLyBE
byBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9k
ZS4KICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QocmVjZWl2ZXIsIHNob3VsZFRocm93SWZDYW50U2V0KTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3Vt
ZW50KDIpLCBzbG90KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRh
cmdldE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpOwogfQogCiAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFy
Z3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3Qi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNv
bmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQg
YmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxs
b3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIHNob3Vs
ZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmpl
Y3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG8sIHNob3VsZFRocm93SWZDYW50U2V0KTsK
ICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOSBAQCBpbmxpbmUgU3RydWN0dXJlKiBnZXRSZWdF
eHBTdHJ1Y3R1cmUoRXhlCiAKIGlubGluZSBSZWdFeHBGbGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBmbGFncykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChmbGFncy5pc1Vu
ZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gTm9GbGFnczsKICAgICBKU1N0cmluZyogZmxhZ3NT
dHJpbmcgPSBmbGFncy50b1N0cmluZyhleGVjKTsKQEAgLTIyMiwxMyArMjI1LDE1IEBAIGlubGlu
ZSBSZWdFeHBGbGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSogZXgKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBJbnZhbGlkRmxhZ3M7CiAgICAgaWYgKHJlc3VsdCA9
PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7Cisg
ICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogcmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQsIEpTVmFs
dWUgcGF0dGVybkFyZywgSlNWYWx1ZSBmbGFnc0FyZykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0
cmluZyBwYXR0ZXJuID0gcGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6
IHBhdHRlcm5BcmcudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMzksNyArMjQ0LDcg
QEAgc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKgogCiAgICAgUmVnRXhw
KiByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MpOwogICAgIGlmICgh
cmVnRXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBnZXRSZWdFeHBTdHJ1Y3R1cmUoZXhlYywgZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQpOwog
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcxLDYgKzE3MSw4IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhlY1N0YXQK
IHRlbXBsYXRlPHR5cGVuYW1lIEZpeEVuZEZ1bmM+CiBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBTdHJpbmcmIHMs
IFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciwgUmVnRXhwKiByZWdFeHAsIGNvbnN0IEZp
eEVuZEZ1bmMmIGZpeEVuZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSBjb25zdHJ1Y3Rvci0+cGVyZm9ybU1h
dGNoKHZtLCByZWdFeHAsIHN0cmluZywgcywgMCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBqc051bGwoKTsKQEAgLTE5Nyw3ICsxOTksNyBAQCBKU1ZhbHVlIGNvbGxlY3RNYXRj
aGVzKFZNJiB2bSwgRXhlY1N0YXRlCiAgICAgICAgICAgICBNYXRjaFJlc3VsdCBzYXZlZFJlc3Vs
dCA9IHJlc3VsdDsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXkt
Pmxlbmd0aCgpICsgbWF0Y2hDb3VudCA+PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgorI2luY2x1ZGUgIlRo
cm93U2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkBAIC00MywyMiArNDQsMjggQEAg
cHVibGljOgogCiAgICAgYm9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3Qg
bGFzdEluZGV4KQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIGlmIChMSUtF
TFkobV9sYXN0SW5kZXhJc1dyaXRhYmxlKSkgewogICAgICAgICAgICAgbV9sYXN0SW5kZXguc2V0
V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihsYXN0SW5kZXgpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGJvb2wgc2V0TGFzdEluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBsYXN0SW5kZXgsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgeworICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFi
bGUpKSB7CiAgICAgICAgICAgICBtX2xhc3RJbmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFz
dEluZGV4KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTVmFsdWUgZ2V0TGFzdEluZGV4KCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsOSArOTgs
MTIgQEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OnZpc2l0Q2hpbGRyZW4oSlNDZQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcg
PSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmlu
ZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEw
OSw5ICsxMTIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJCdWlsdGlu
IFJlZ0V4cCBleGVjIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJCdWlsdGluIFJlZ0V4
cCBleGVjIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKICAgICBKU1N0
cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAg
ICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC0xMjAsOSArMTI2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1
bmNNYXRjaEZhc3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxs
KGV4ZWMpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMTMzLDkgKzE0MiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIFJlZ0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwpAQCAtMTQzLDcgKzE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG8KICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cyhSZWdFeHBPYmpl
Y3Q6OmluZm8oKSkpIHsKICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBz
dXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhw
IGZyb20gYW5vdGhlci4iKSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzAp
LT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVj
LT5hcmd1bWVudENvdW50KCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CkBAIC0xNTYsMTUgKzE2OCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICAgICAgICAgIGlmIChmbGFncyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRv
IFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgICAgICB9Ci0gICAgICAgIHJlZ0V4cCA9IFJl
Z0V4cDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHBhdHRlcm4sIGZsYWdzKTsKKyAgICAgICAgcmVnRXhw
ID0gUmVnRXhwOjpjcmVhdGUodm0sIHBhdHRlcm4sIGZsYWdzKTsKICAgICB9CiAKICAgICBpZiAo
IXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
cmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogCi0gICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVl
KS0+c2V0UmVnRXhwKGV4ZWMtPnZtKCksIHJlZ0V4cCk7CisgICAgYXNSZWdFeHBPYmplY3QodGhp
c1ZhbHVlKS0+c2V0UmVnRXhwKHZtLCByZWdFeHApOwogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNW
YWx1ZSktPnNldExhc3RJbmRleChleGVjLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNWYWx1ZSk7CiB9CkBAIC0yMTIsOSArMjI0LDEyIEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NT
dHJpbmcgZmxhZ3NTdHJpbmcoRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAKQEAgLTIyMiw3ICsyMzcs
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgaWYgKEpT
VmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCi0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNvdXJjZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
MjQyLDExICsyNTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFs
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJp
dHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnBy
b3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNS
ZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+cmVnRXhwKCktPmdsb2JhbCgpKSk7CkBAIC0yNTQsMTEg
KzI3MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMo
UmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRz
KFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CkBA
IC0yNjYsMTEgKzI4NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0
aWxpbmUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5p
bmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBS
ZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEg
UmVnRXhwIG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkp
KTsKQEAgLTI3OCwxMSArMzAxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRl
clN0aWNreShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVl
LmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1
ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBn
ZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJl
Z0V4cC5wcm90b3R5cGUuc3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdF
eHAgb2JqZWN0IikpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+c3RpY2t5KCkpKTsK
QEAgLTI5MCwxMSArMzE2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVu
aWNvZGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5p
bmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdl
dHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVn
RXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdF
eHAgb2JqZWN0IikpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7
CkBAIC0zMDIsOSArMzMxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZs
YWdzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0IikpOwogCiAgICAgYXV0byBmbGFncyA9IGZs
YWdzU3RyaW5nKGV4ZWMsIGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTQyMSwxMSArNDUzLDE0IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBy
ZWdFeHBQcm90b0dldHRlclMKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlclNvdXJjZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86
KSIpKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQg
b24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0
dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogCiAg
ICAgU3RyaW5nIHBhdHRlcm4gPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+
cGF0dGVybigpOwpAQCAtNTM5LDYgKzU3NCw3IEBAIHZvaWQgZ2VuZXJpY1NwbGl0KAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRp
bl0gTGV0IHJ4IGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIFtoYW5kbGVkIGJ5IEpTIGJ1
aWx0aW5dIElmIFR5cGUocngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KQEAgLTY0NCw3ICs2ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvCiAgICAgICAgIH0pOwogICAgIAogICAgIGlmIChyZXN1bHRMZW5ndGggKyBkcnlS
dW5Db3VudCA+PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDggKzMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxp
bmUgYm9vbCByZWplY3QoRXhlY1N0YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9uLCBjb25z
dCBjaGFyKiBtZXNzYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbikK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBtZXNzYWdlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDE2IEBAIHZvaWQg
U2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiAKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsICJTZXQiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiU2V0IikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVj
LT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+
bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKQEAgLTcyLDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1
bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVj
LCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRWYWx1ZSkg
ewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxMyBA
QCB2b2lkIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAg
ICAgSlNTZXRJdGVyYXRvciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTU2V0SXRlcmF0b3Iq
PihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRl
cmFsKCJDYW5ub3QgY2FsbCBTZXRJdGVyYXRvci5uZXh0KCkgb24gYSBub24tU2V0SXRlcmF0b3Ig
b2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9y
Lm5leHQoKSBvbiBhIG5vbi1TZXRJdGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAgaWYgKGl0ZXJh
dG9yLT5uZXh0KGNhbGxGcmFtZSwgcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChjYWxsRnJhbWUsIHJlc3VsdCwgZmFsc2Up
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDE2IEBAIHZvaWQg
U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0KIAogQUxXQVlTX0lOTElORSBzdGF0
aWMgSlNTZXQqIGdldFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUp
CiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihj
YWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNTZXQqIHNldCA9IGpzRHluYW1pY0Nh
c3Q8SlNTZXQqPih0aGlzVmFsdWUpOwogICAgIGlmICghc2V0KSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBu
b24tU2V0IG9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdCIp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBzZXQ7CkBAIC0x
NDEsMTggKzE0NCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1ZhbHVlcyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNTZXQqIHRo
aXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgU2V0IHZhbHVl
IGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09i
aiwgSXRlcmF0ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEg
U2V0IHZhbHVlIGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJ
dGVyYXRlVmFsdWUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90
b0Z1bmNFbnRyaWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxG
cmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1NldCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVh
dGUgYSBTZXQgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZt
KCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0cnVj
dHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBTZXQgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHByaXZhdGVGdW5jSXNTZXQoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTkwLDYgKzkwLDggQEAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycgog
CiBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCiAgICAgQWRkUmVzdWx0
IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CkBAIC0xMDEsNyArMTAzLDcgQEAgYm9vbCBTcGFyc2VB
cnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjUwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAm
JiAhYXJyYXktPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgIHJlbW92ZShyZXN1
bHQuaXRlcmF0b3IpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
CkBAIC0xNDgsMTQgKzE1MCwxNyBAQCB2b2lkIFNwYXJzZUFycmF5RW50cnk6OmdldChQcm9wZXJ0
eURlc2NyCiAKIGJvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghKGF0dHJpYnV0ZXMg
JiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAg
ICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAot
ICAgICAgICBzZXQoZXhlYy0+dm0oKSwgbWFwLCB2YWx1ZSk7CisgICAgICAgIHNldCh2bSwgbWFw
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTAsNiAr
OTAsOSBAQCBKU0NlbGwqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlCiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+
YXJndW1lbnRDb3VudCgpOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVy
LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwpAQCAtMTAyLDcgKzEwNSw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmkKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBp
ZiAoY29kZVBvaW50ICE9IGNvZGVQb2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01B
WF9WQUxVRSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhh
dCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiKSkpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFuZ2Ugb2Yg
Y29kZSBwb2ludHMiKSkpOwogCiAgICAgICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKQogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjMsNiAr
NjMsOSBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAKIGJvb2wg
U3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxT
dHJpbmdPYmplY3QqPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVy
ZWQoc2xvdCwgdGhpc09iamVjdCkpKQpAQCAtNzAsNyArNzMsNyBAQCBib29sIFN0cmluZ09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkKQEAgLTgwLDEwICs4MywxMyBAQCBib29sIFN0cmluZ09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJp
bmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAg
aWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDYg
KzI4OSw5IEBAIHN0cnVjdCBTdHJpbmdSYW5nZSB7CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJj
ZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJpbmdS
YW5nZXMsIGludCByYW5nZUNvdW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHJhbmdlQ291
bnQgPT0gMSkgewogICAgICAgICBpbnQgc291cmNlU2l6ZSA9IHNvdXJjZS5sZW5ndGgoKTsKICAg
ICAgICAgaW50IHBvc2l0aW9uID0gc3Vic3RyaW5nUmFuZ2VzWzBdLnBvc2l0aW9uOwpAQCAtMzEx
LDcgKzMxNCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKICAg
ICAgICAgY29uc3QgTENoYXIqIHNvdXJjZURhdGEgPSBzb3VyY2UuY2hhcmFjdGVyczgoKTsKICAg
ICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3Rh
bExlbmd0aCwgYnVmZmVyKTsKICAgICAgICAgaWYgKCFpbXBsKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgICAgIGludCBidWZmZXJQb3MgPSAw
OwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewpAQCAtMzI5
LDcgKzMzMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKIAog
ICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxM
ZW5ndGgsIGJ1ZmZlcik7CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7CkBAIC0zNDQsNiArMzQ3LDkgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywg
SlNTdHJpbmcqIHNvdXJjZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1Jh
bmdlKiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBTdHJpbmcqIHNlcGFy
YXRvcnMsIGludCBzZXBhcmF0b3JDb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChyYW5n
ZUNvdW50ID09IDEgJiYgc2VwYXJhdG9yQ291bnQgPT0gMCkgewogICAgICAgICBpbnQgc291cmNl
U2l6ZSA9IHNvdXJjZS5sZW5ndGgoKTsKICAgICAgICAgaW50IHBvc2l0aW9uID0gc3Vic3RyaW5n
UmFuZ2VzWzBdLnBvc2l0aW9uOwpAQCAtMzY0LDcgKzM3MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNTcGxpY2VTdWIKICAgICAgICAgICAgIGFsbFNlcGFyYXRvcnM4Qml0ID0g
ZmFsc2U7CiAgICAgfQogICAgIGlmICh0b3RhbExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaWYgKCF0b3RhbExlbmd0
aCkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CkBAIC0zNzUsNyArMzgxLDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiAgICAgICAgIGF1
dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgu
dW5zYWZlR2V0KCksIGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgICAgICBpbnQgbWF4Q291bnQg
PSBzdGQ6Om1heChyYW5nZUNvdW50LCBzZXBhcmF0b3JDb3VudCk7CiAgICAgICAgIGludCBidWZm
ZXJQb3MgPSAwOwpAQCAtNDAwLDcgKzQwNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTcGxpY2VTdWIKICAgICBVQ2hhciogYnVmZmVyOwogICAgIGF1dG8gaW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1
ZmZlcik7CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNj
b3BlKTsKIAogICAgIGludCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQsIHNlcGFyYXRv
ckNvdW50KTsKICAgICBpbnQgYnVmZmVyUG9zID0gMDsKQEAgLTc1MiwxMCArNzU4LDEzIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBjaGVja09iamVjdENvZXJjaWJsZSgKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGluZSBKU1N0cmluZyogcmVwZWF0Q2hhcmFjdGVy
KEV4ZWNTdGF0ZSYgZXhlYywgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIsIHVuc2lnbmVkIHJlcGVh
dENvdW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXIgPSBudWxs
cHRyOwogICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVwZWF0Q291bnQsIGJ1ZmZlcik7CiAgICAgaWYgKCFpbXBsKSB7Ci0gICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcigmZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc5Nyw4ICs4
MDYsMTAgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlKAogQUxXQVlTX0lO
TElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlKAogICAgIFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBzZWFyY2hWYWx1ZSwgSlNWYWx1ZSByZXBsYWNl
VmFsdWUpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtODQxLDYgKzg1Miw5IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IC8vIEFsc28gdXNlZCBmb3IgdmFsdWVPZi4KIApAQCAtODUwLDE0ICs4NjQsMTcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlmICh0aGlzVmFsdWUuaW5o
ZXJpdHMoU3RyaW5nT2JqZWN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGFzU3RyaW5nT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSk7CiAKLSAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
IEpTU3RyaW5nOjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZp
ZXcoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChh
MC5pc1VJbnQzMigpKSB7CkBAIC04NzQsOSArODkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgIEpTU3RyaW5nOjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZpZXcoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmIChhMC5pc1VJbnQzMigpKSB7CkBAIC05MDMsOSArOTIzLDEyIEBAIHN0YXRpYyBpbmxpbmUg
VUNoYXIzMiBjb2RlUG9pbnRBdChjb25zdCAKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtOTI5LDIwICs5
NTIsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvbmNhdChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiBleGVjLT5hcmd1bWVu
dENvdW50KCkgPT0gMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBhc1N0cmluZyh0aGlzVmFsdWUpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKSkpOwogCiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmdGcm9tQXJndW1lbnRzKGV4ZWMsIHRoaXNWYWx1ZSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtOTc3LDkgKzEw
MDYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTEw
MTQsOSArMTA0NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTEyMDEsOSArMTIzNiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3Ry
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHVuc2lnbmVkIGxlbjsK
ICAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5nOwpAQCAtMTI1
Nyw5ICsxMjk1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmkK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU1N0cmluZyoganNT
dHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQpAQCAtMTI5Nyw5ICsxMzM4LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmpl
Y3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAg
ICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBT
dHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmlu
ZyA9IHMuY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwpAQCAtMTMxMCw5ICsxMzU0
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShl
eGVjKTsKICAgICBTdHJpbmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNl
V2l0aG91dExvY2FsZSgpOwpAQCAtMTMyMyw5ICsxMzcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzQwLDEwICsxMzkwLDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICNpZiBFTkFCTEUoSU5UTCkKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1N0YXRlKiBzdGF0ZSwgaW50MzJf
dCAoKmNvbnZlcnRDYXNlKShVQ2hhciosIGludDMyX3QsIGNvbnN0IFVDaGFyKiwgaW50MzJfdCwg
Y29uc3QgY2hhciosIFVFcnJvckNvZGUqKSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxLiBM
ZXQgTyBiZSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogCiAgICAg
Ly8gMi4gTGV0IFMgYmUgVG9TdHJpbmcoTykuCiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFs
dWUudG9TdHJpbmcoc3RhdGUpOwpAQCAtMTQxMSwxMCArMTQ2NCwxMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTCiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVy
KHJlc3VsdExlbmd0aCk7CiAgICAgICAgIGNvbnZlcnRDYXNlKGJ1ZmZlci5kYXRhKCksIHJlc3Vs
dExlbmd0aCwgdmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdmlld0xlbmd0aCwgdXRmOExv
Y2FsZUJ1ZmZlci5kYXRhKCksICZlcnJvcik7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoZXJyb3Ip
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHVfZXJyb3JOYW1l
KGVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CiAgICAgICAgIGxvd2VyID0gU3RyaW5nKGJ1ZmZlci5k
YXRhKCksIHJlc3VsdExlbmd0aCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB1X2Vycm9yTmFtZShlcnJvcikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CiAKICAgICAv
LyAxOC4gUmV0dXJuIEwuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhzdGF0
ZSwgbG93ZXIpKTsKQEAgLTE0MzgsOSArMTQ5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQmlnKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0xNDQ5LDkgKzE1MDUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NtYWxsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0xNDYwLDkgKzE1MTksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0JsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDcxLDkgKzE1MzMsMTIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0JvbGQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0ODIsOSArMTU0NywxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0OTMsOSArMTU2MSwxMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRhbGljcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUwNCw5ICsxNTc1LDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdHJpa2UoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1MTUsOSArMTU4OSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3ViKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTI2LDkgKzE2MDMsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1cChFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUzNyw5ICsxNjE3LDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1NTMsOSArMTYz
NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2MDUs
OSArMTY5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NjIxLDkgKzE3MTAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xpbmsoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTE2NjcsOCArMTc1OSwxMSBAQCBlbnVtIHsKIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIHRyaW1T
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IHRyaW1LaW5kKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE3MjAsMjEgKzE4MTUsMjMgQEAg
c3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcEFuZFRydW5jYXRlVAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4
ZWMsIGEwKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90
b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBl
LnN0YXJ0c1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3Ry
aW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTE3NTYsMjEgKzE4NTMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
CiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNS
ZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBi
ZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2Fubm90IGJlIGEgUmVn
RXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MDgsMjEgKzE5
MDcsMjMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNo
SW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhw
KHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24p
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJp
bmcucHJvdG90eXBlLmluY2x1ZGVzIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90
b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNo
U3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKQEAgLTE4NTUsNDIgKzE5NTYsNTEgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBidWlsdGluU3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhl
Yy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBz
dHJpbmcpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgbm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgVUNoYXIqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgVU5vcm1hbGl6YXRpb25N
b2RlIGZvcm0pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICBpbnQzMl90IG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGggPSB1bm9ybV9ub3Jt
YWxpemUoc291cmNlLCBzb3VyY2VMZW5ndGgsIGZvcm0sIDAsIG51bGxwdHIsIDAsICZzdGF0dXMp
OwogCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgewogICAgICAgICAvLyBUaGUgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCB3
aGVuIG5vcm1hbGl6ZSBmYWlscy4KICAgICAgICAgLy8gTm93IHdlIHRocm93IGEgdHlwZSBlcm9y
ciBzaW5jZSBpdCBzZWVtcyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGFyZSBpbnZh
bGlkLgotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZl
ciA9IG51bGxwdHI7CiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChub3JtYWxpemVkU3RyaW5nTGVuZ3RoLCBidWZmZXIpOwogICAgIGlmICghaW1wbCkK
LSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CiAgICAgdW5vcm1fbm9ybWFsaXplKHNvdXJjZSwgc291cmNlTGVuZ3RoLCBm
b3JtLCAwLCBidWZmZXIsIG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsICZzdGF0dXMpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1wbCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTE5MTEsNyArMjAyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KICAgICAgICAgZWxzZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAgICAgICBm
b3JtID0gVU5PUk1fTkZLRDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiYXJndW1l
bnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiYXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24g
Zm9ybSIpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUo
ZXhlYywgc291cmNlLmdldCgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3Ro
KCksIGZvcm0pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0yOCw3ICsyOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBKU1ZhbHVl
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKCkKIHsKLSAg
ICByZXR1cm4gSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgIFZNJiB2
bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgcmV0dXJuIEpTQzo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjLCBzY29w
ZSk7CiB9CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6ZW1wdHlTdHJpbmcoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTg3LDcgKzg3LDkgQEAgSlNPYmplY3QqIFN5bWJvbDo6dG9PYmplY3QoRXhlY1N0YXRl
KiBleAogCiBkb3VibGUgU3ltYm9sOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7
Ci0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBh
IHN5bWJvbCB0byBhIG51bWJlciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIG51
bWJlciIpKTsKICAgICByZXR1cm4gMC4wOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTExMCwxNiArMTEwLDE5IEBAIGNvbnN0IGNoYXIqIFN5bWJvbEtleUZvclR5cGVF
cnJvciA9ICJTeW0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1
Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHN5bWJvbFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5p
c1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIFN5bWJvbEtleUZvclR5cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3Ip
KTsKIAogICAgIFN5bWJvbEltcGwqIHVpZCA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0
ZU5hbWUoKS51aWQoKTsKICAgICBpZiAoIXVpZC0+c3ltYm9sUmVnaXN0cnkoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEFTU0VSVCh1aWQt
PnN5bWJvbFJlZ2lzdHJ5KCkgPT0gJmV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBleGVjLT52bSgpLnN5bWJvbFJl
Z2lzdHJ5KCkua2V5Rm9yU3ltYm9sKCp1aWQpKSk7CisgICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVn
aXN0cnkoKSA9PSAmdm0uc3ltYm9sUmVnaXN0cnkoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyhleGVjLCB2bS5zeW1ib2xSZWdpc3RyeSgpLmtleUZvclN5bWJvbCgqdWlk
KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNzIsMTYgKzcyLDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBTeW1ib2xWYWx1ZU9mVHlwZUVy
cm8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIFN5bWJvbCogc3ltYm9sID0gbnVsbHB0cjsKICAg
ICBpZiAodGhpc1ZhbHVlLmlzU3ltYm9sKCkpCiAgICAgICAgIHN5bWJvbCA9IGFzU3ltYm9sKHRo
aXNWYWx1ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xUb1N0cmlu
Z1R5cGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aW5o
ZXJpdHMoU3ltYm9sT2JqZWN0OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9y
KTsKICAgICAgICAgc3ltYm9sID0gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNP
YmplY3QpLT5pbnRlcm5hbFZhbHVlKCkpOwogICAgIH0KIApAQCAtOTAsMTYgKzkzLDE5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNWYWx1ZSk7CiAKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9y
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFZh
bHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0
aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3ltYm9sT2JqZWN0Ojpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1
ZU9mVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3Bl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUaHJvd1Njb3BlLmgiCisKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAg
ICAKKyNpZiBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCituYW1lc3BhY2Ugewor
CisvLyBMb2dzIGFsbCBUaHJvd1Njb3BlIGFjdGl2aXR5IHRvIGhlbHAgZGVidWcgdGhlIHNvdXJj
ZSBvZiBhIHZlcmlmaWNhdGlvbiBmYWlsdXJlLgorYm9vbCB0cmFjZU9uID0gZmFsc2U7CisKKy8v
IEEgbW9yZSB2ZXJib3NlIGxvZ2dpbmcgb3B0aW9uIHRvIGR1bXAgdGhlIEMrKyBzdGFjayB0cmFj
ZSBhdCBzdHJhdGVnaWMgcG9pbnRzIHRvIGFpZCBkZWJ1Z2dpbmcuCitib29sIHRyYWNlV2l0aFN0
YWNrVHJhY2VzID0gZmFsc2U7CisKKy8vIERpc2FibGVkIHRlbXBvcmFyaWx5IHVudGlsIGFsbCBr
bm93biB2ZXJpZmljYXRpb24gZmFpbHVyZXMgYXJlIGZpeGVkLgorYm9vbCB2ZXJpZmljYXRpb25P
biA9IGZhbHNlOworCit1bnNpZ25lZCB0cmFjZUNvdW50ID0gMDsKK307CisKKy8qCisgICAgVGhy
b3dTY29wZSB2ZXJpZmljYXRpb24gd29ya3MgdG8gc2ltdWxhdGUgZXhjZXB0aW9uIHRocm93cyBh
bmQgY2F0Y2ggY2FzZXMgd2hlcmUKKyAgICBleGNlcHRpb24gY2hlY2tzIGFyZSBtaXNzaW5nLiBU
aGlzIGlzIGhvdyBpdCB3b3JrczoKKworIDEuIFRoZSBWTSBoYXMgYSBtX25lZWRFeGNlcHRpb25D
aGVjayBiaXQgdGhhdCBpbmRpY2F0ZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNoZWNrIGlzCisgICAg
bmVlZGVkLiBZb3UgY2FuIHRoaW5rIG9mIHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQgYmVp
bmcgc2V0IGFzIGEgc2ltdWxhdGVkCisgICAgdGhyb3cuCisKKyAyLiBFdmVyeSB0aHJvdyBzaXRl
IG11c3QgZGVjbGFyZSBhIFRocm93U2NvcGUgaW5zdGFuY2UgdXNpbmcgREVDTEFSRV9USFJPV19T
Q09QRSBhdAorICAgIHRoZSB0b3Agb2YgaXRzIGZ1bmN0aW9uIChhcyBlYXJseSBhcyBwb3NzaWJs
ZSkgZS5nLgorIAorICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCAuLi4pOworICAgICAgICB9CisKKyAgICBOb3RlOiBWTTo6
dGhyb3dFeGNlcHRpb24oKSBtZXRob2RzIGFyZSBwcml2YXRlLCBhbmQgb25seSBjYWxsZWFibGVi
eSB0aGUgVGhyb3dTY29wZQorICAgIGZyaWVuZCBjbGFzcy4gQWxsIHRocm93cyBtdXN0IGdvIHRo
cm91Z2ggYSBUaHJvd1Njb3BlLiBIZW5jZSwgd2UgYXJlIGd1YXJhbnRlZWQgdGhhdAorICAgIGFu
eSBmdW5jdGlvbiB0aGF0IGNhbiB0aHJvdyB3aWxsIGhhdmUgYSBUaHJvd1Njb3BlLgorCisgICAg
Tm90ZTogYnkgY29udmVudGlvbiwgZXZlcnkgdGhyb3cgaGVscGVyIGZ1bmN0aW9uIG11c3QgdGFr
ZSBhIFRocm93U2NvcGUgYXJndW1lbnQKKyAgICBpbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcgaXRz
IG93biBUaHJvd1Njb3BlLiAgVGhpcyBhbGxvd3MgdGhlIHRocm93IHRvIGJlIGF0dHJpYnV0ZWQK
KyAgICB0byB0aGUgY2xpZW50IGNvZGUgcmF0aGVyIHRoYW4gdGhlIHRocm93IGhlbHBlciBpdHNl
bGYuCisKKyAzLiBWZXJpZmljYXRpb24gb2YgbmVlZGVkIGV4Y2VwdGlvbiBjaGVja3MKKworICAg
IGEuIE9uIGNvbnN0cnVjdGlvbiwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06
Om1fbmVlZEV4Y2VwdGlvbkNoZWNrIGlzCisgICAgICAgbm90IHNldC4KKyAKKyAgICAgICBUaGlz
IGVuc3VyZXMgdGhhdCB0aGUgY2FsbGVyIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGhhcyBjaGVj
a2VkIGZvciBleGNlcHRpb25zCisgICAgICAgd2hlcmUgbmVlZGVkIGJlZm9yZSBkb2luZyBtb3Jl
IHdvcmsgd2hpY2ggbGVkIHRvIGNhbGxpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisKKyAgICBi
LiBPbiBkZXN0cnVjdGlvbiwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06Om1f
bmVlZEV4Y2VwdGlvbkNoZWNrIGlzCisgICAgICAgbm90IHNldC4gVGhpcyB2ZXJpZmljYXRpb24g
d2lsbCBiZSBza2lwcGVkIGlmIHRoZSBUaHJvd1Njb3BlIGhhcyBiZWVuIHJlbGVhc2VkCisgICAg
ICAgKHNlZSAoNSkgYmVsb3cpLgorCisgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGZ1bmN0
aW9uIHRoYXQgb3ducyB0aGlzIFRocm93U2NvcGUgaXMgbm90IG1pc3NpbmcgYW55CisgICAgICAg
ZXhjZXB0aW9uIGNoZWNrcyBiZWZvcmUgcmV0dXJuaW5nLgorIAorICAgIGMuIFdoZW4gdGhyb3dp
bmcgYW4gZXhjZXB0aW9uLCB0aGUgVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25l
ZWRFeGNlcHRpb25DaGVjaworICAgICAgIGlzIG5vdCBzZXQsIHVubGVzcyBpdCdzIGJlZW4gYXNr
IHRvIHJldGhyb3cgdGhlIHNhbWUgRXhjZXB0aW9uIG9iamVjdC4KKworIDQuIFNpbXVsYXRlZCB0
aHJvd3MKKworICAgIFRocm93cyBhcmUgc2ltdWxhdGVkIGJ5IHNldHRpbmcgdGhlIG1fbmVlZEV4
Y2VwdGlvbkNoZWNrIGJpdC4KKworICAgIFRoZSBiaXQgd2lsbCBvbmx5IGJlIHNldCBpbiB0aGUg
VGhyb3dTY29wZSBkZXN0cnVjdG9yIGV4Y2VwdCB3aGVuIHRoZSBUaHJvd1Njb3BlCisgICAgZGV0
ZWN0cyB0aGUgY2FsbGVyIGlzIGEgTExJbnQgb3IgSklUIGZ1bmN0aW9uLiBMTEludCBvciBKSVQg
ZnVuY3Rpb25zIHdpbGwgYWx3YXlzCisgICAgY2hlY2sgZm9yIGV4Y2VwdGlvbnMgYWZ0ZXIgYSBo
b3N0IEMrKyBmdW5jdGlvbiByZXR1cm5zIHRvIGl0LiBIb3dldmVyLCB0aGV5IHdpbGwKKyAgICBu
b3QgY2xlYXIgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdC4KKworICAgIEhlbmNlLCBpZiB0
aGUgVGhyb3dTY29wZSBkZXN0cnVjdG9yIGRldGVjdHMgdGhlIGNhbGxlciBpcyBhIExMSW50IG9y
IEpJVCBmdW5jdGlvbiwKKyAgICBpdCB3aWxsIGp1c3Qgc2tpcCB0aGUgc2V0dGluZyBvZiB0aGUg
Yml0LgorCisgICAgTm90ZTogdGhlcmUgaXMgbm8gbmVlZCwgYW5kIGl0IGlzIGluY29ycmVjdCB0
byBzZXQgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdAorICAgIGluIHRoZSB0aHJvd0V4Y2Vw
dGlvbiBtZXRob2RzLiBUaGlzIGlzIGJlY2F1c2UsIGluIHByYWN0aWNlLCB3ZSBhbHdheXMgcmV0
dXJuCisgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiBJdCBkb2Vz
bid0IG1ha2Ugc2Vuc2UgdG8gc2V0IHRoZSBiaXQgaW4KKyAgICB0aGUgdGhyb3cganVzdCB0byBo
YXZlIHRvIGNsZWFyIGl0IGltbWVkaWF0ZWx5IGFmdGVyIGJlZm9yZSB3ZSBkbyB2ZXJpZmljYXRp
b24gaW4KKyAgICB0aGUgVGhyb3dTY29wZSBkZXN0cnVjdG9yLgorCisgNS4gVXNpbmcgVGhyb3dT
Y29wZTo6cmVsZWFzZSgpCisKKyAgICBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG9ubHkg
YmUgdXNlZCBhdCB0aGUgYm90dG9tIG9mIGEgZnVuY3Rpb24gaWY6CisgCisgICAgYS4gVGhpcyBm
dW5jdGlvbiBpcyBnb2luZyB0byBsZXQgaXRzIGNhbGxlciBjaGVjayBhbmQgaGFuZGxlIHRoZSBl
eGNlcHRpb24uCisgCisgICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBnb28oKTsgLy8gbWF5IHRocm93LgorCisgICAgICAgICAgICAuLi4gLy8gQ2xl
YW51cCBjb2RlIHRoYXQgd2lsbCBhcmUgbm90IGFmZmVjdGVkIGJ5IGEgcGVuZGluZyBleGNlcHRp
b25zLgorCisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIHRlbGwgdGhlIFRocm93U2Nv
cGUgdGhhdCB0aGUgY2FsbGVyIHdpbGwgaGFuZGxlIHRoZSBleGNlcHRpb24uCisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgCisgICAgYi4gVGhpcyBmdW5jdGlvbiBpcyBn
b2luZyB0byBkbyBhIHRhaWwgY2FsbCB0aGF0IG1heSB0aHJvdy4KKworICAgICAgICB2b2lkIGZv
byguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgp
OyAvLyB0ZWxsIHRoZSBUaHJvd1Njb3BlIHRoYXQgdGhlIGNhbGxlciB3aWxsIGhhbmRsZSB0aGUg
ZXhjZXB0aW9uLgorICAgICAgICAgICAgcmV0dXJuIGdvbygpOyAvLyBtYXkgdGhyb3cuCisgICAg
ICAgIH0KKyAKKyAgICBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG5vdCBiZSB1c2VkIGlu
IHRoZSBjb2RlIHBhdGhzIHRoYXQgYnJhbmNoLiBGb3IgZXhhbXBsZToKKyAKKyAgICAgICAgdm9p
ZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gZ29vMSgpOyAvLyBt
YXkgdGhyb3cuCisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIDw9PT09PT09PT09PT09
PT09PT09IHRoZSBXUk9ORyB3YXkgISEhCisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5
IHRocm93LgorICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisgCisgICAgVGhlIGFib3ZlIHdpbGwgcmVzdWx0IGluIGEgdmVyaWZpY2F0aW9uIGZh
aWx1cmUgaW4gZ29vMigpJ3MgVGhyb3dTY29wZS4gIFRoZSBwcm9wZXIgd2F5CisgICAgdG8gZml4
IHRoaXMgdmVyaWZpY2F0aW9uIGlzIHRvIGRvIHdpdGhlciAoNikgb3IgKDcpIGJlbG93LgorIAor
ICA2LiBDaGVja2luZyBleGNlcHRpb25zIHdpdGggVGhyb3dTY29wZTo6ZXhjZXB0aW9uKCkKKyAK
KyAgICAgVGhyb3dTY29wZTo6ZXhjZXB0aW9uKCkgcmV0dXJucyB0aGUgdGhyb3duIEV4Y2VwdGlv
biBvYmplY3QgaWYgdGhlcmUgaXMgb25lIHBlbmRpbmcuCisgICAgIEVsc2UgaXQgcmV0dXJucyBu
dWxscHRyLgorIAorICAgICBJdCBhbHNvIGNsZWFycyB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sg
Yml0IHRoZXJlYnkgaW5kaWNhdGluZyB0aGF0IHdlJ3ZlIHNhdGlzaWZlZAorICAgICB0aGUgbmVl
ZGVkIGV4Y2VwdGlvbiBjaGVjay4KKyAKKyAgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6CisgCisg
ICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGdv
bzEoKTsgLy8gbWF5IHRocm93LgorICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAv
LyBtYXkgdGhyb3cuCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKyAKKyAgICBCdXQgc29tZXRpbWVzLCBmb3Igb3B0aW1pemF0aW9uIHJlYXNv
bnMsIHdlIG1heSBjaG9vc2UgdG8gdGVzdCB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsZWUKKyAgICBm
dW5jdGlvbiBpbnN0ZWFkIGRvaW5nIGEgbG9hZCBvZiB0aGUgVk0gZXhjZXB0aW9uIHZhbHVlLiBT
ZWUgKDcpIGJlbG93LgorIAorIDcuIENoZWNraW5nIGV4Y2VwdGlvbiBieSBjaGVja2luZyBjYWxs
ZWUgcmVzdWx0CisgCisgICAgVGhpcyBhcHByb2FjaCBzaG91bGQgb25seSBiZSBhcHBsaWVkIHdo
ZW4gaXQgbWFrZXMgYSBkaWZmZXJlbmNlIHRvIHBlcmZvcm1hbmNlLgorICAgIElmIHdlIG5lZWQg
dG8gZG8gdGhpcywgd2Ugc2hvdWxkIGFkZCBhbiBBU1NFUlQoKSB0aGF0IGludm9rZXMgVGhyb3dT
Y29wZTo6ZXhjZXB0aW9uKCkKKyAgICBhbmQgdmVyaWZ5IHRoZSByZXN1bHQuIFNpbmNlIFRocm93
U2NvcGUgdmVyaWZpY2F0aW9uIGlzIG9ubHkgZG9uZSBvbiBERUJVRyBidWlsZHMsCisgICAgdGhp
cyBBU1NFUlQgd2lsbCBzYXRpc2Z5IHRoZSB2ZXJpZmljYXRpb24gcmVxdWlyZW1lbnRzIHdoaWxl
IG5vdCBpbXBhY3RpbmcgcGVyZm9ybWFuY2UuCisgCisgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6
CisKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgICAgIGJvb2wgZmFpbGVk
ID0gZ29vMSgpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgICAgICBBU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSBmYWlsZWQpCisgICAgICAgICAgICBpZiAoZmFpbGVkKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAvLyBtYXkgdGhyb3cu
CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAKKyA4LiBEZWJ1Z2dpbmcgdmVyaWZpY2F0aW9uIGZhaWx1cmVzLgorCisgICAgYS4gV2hlbiB2
ZXJpZmljYXRpb24gZmFpbHMsIHlvdSB3aWxsIHNlZSBhIGhlbHBmdWwgbWVzc2FnZSBmb2xsb3dl
ZCBieSBhbiBhc3NlcnRpb24gZmFpbHVyZS4KKyAgICAgICBGb3IgZXhhbXBsZToKKyAKKyAgICBG
QUlMRUQgZXhjZXB0aW9uIGNoZWNrIHZlcmlmaWNhdGlvbjoKKyAgICAgICAgRXhjZXB0aW9uIHRo
cm93biBmcm9tIFRocm93U2NvcGUgWzJdIEV4aXQ6IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEv
d3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoxMjQ1CisgICAgICAgIGlzIHVuY2hlY2tlZCBpbiBUaHJvd1Njb3BlIFsxXTogdmFyYXJn
c1NldHVwIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEzOTgKKworICAgICAgIFRoZSBtZXNzYWdlIHRl
bGxzIHlvdSB0aGF0IGZhaWx1cmUgd2FzIGRldGVjdGVkIGF0IGluIHZhcmFyZ3NTZXR1cCgpIEAg
TExJbnRTbG93UGF0aHMuY3BwCisgICAgICAgbGluZSAxMzk4LCBhbmQgdGhhdCB0aGUgbWlzc2lu
ZyBleGNlcHRpb24gY2hlY2sgc2hvdWxkIGhhdmUgaGFwcGVuZWQgc29tZXdoZXJlIGJldHdlZW4K
KyAgICAgICB0aGUgY2FsbCB0byBzZXRVcENhbGwoKSBAIExMSW50U2xvd1BhdGhzLmNwcCBsaW5l
IDEyNDUgYW5kIGl0LgorCisgICAgICAgSWYgdGhhdCBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRp
b24sIHlvdSBjYW4gLi4uCisKKyAgICBiLiBUdXJuIG9uIFRocm93U2NvcGUgdHJhY2luZworIAor
ICAgICAgIEp1c3Qgc2V0IHRyYWNlT249dHJ1ZSBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
LCBhbmQgcmVidWlsZC4gVGhlcmVhZnRlciwgeW91IHNob3VsZAorICAgICAgIHNlZSBhIHRyYWNl
IG9mIFRocm93U2NvcGVzIGJlaW5nIGVudGVyZWQgYW5kIGV4aXRlZCBhcyB3ZWxsIGFzIHRoZWly
IGRlcHRoIGUuZy4KKworICAgIFRocm93U2NvcGUgWzFdIEVudGVyOiBsbGludF9zbG93X3BhdGhf
amZhbHNlIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEwMzIKKyAgICBUaHJvd1Njb3BlIFsxXSBFeGl0
OiBsbGludF9zbG93X3BhdGhfamZhbHNlIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEwMzIKKworICAg
ICAgIFlvdSB3aWxsIGFsc28gc2VlIHRyYWNlcyBvZiBzaW11bGF0ZWQgdGhyb3dzIGUuZy4KKwor
ICAgIFRocm93U2NvcGUgWzJdIFRocm93IGZyb206IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEv
d3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoxMjQ1CisKKyAgICAgICBJZiB0aGF0IGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbiwg
eW91IGNhbiAuLi4KKworICAgIGMuIFR1cm4gb24gVGhyb3dTY29wZSBzdGFjayBkdW1wcworCisg
ICAgICAgSnVzdCBzZXQgdHJhY2VXaXRoU3RhY2tUcmFjZXM9dHJ1ZSBhdCB0aGUgdG9wIG9mIFRo
cm93U2NvcGUuY3BwLCBhbmQgcmVidWlsZC4KKyAgICAgICBUaGVyZWFmdGVyLCB5b3Ugc2hvdWxk
IHNlZSBhIHN0YWNrIHRyYWNlcyBhdCB2YXJpb3VzIHJlbGV2YW50IFRocm93U2NvcGUgZXZlbnRz
LgorCisgICAgZC4gVXNpbmcgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKQorCisgICAgICAg
SWYgeW91IGhhdmUgaXNvbGF0ZWQgdGhlIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrIHRvIGEgZnVu
Y3Rpb24gdGhhdCBpcyBsYXJnZSBidXQKKyAgICAgICBpcyB1bnN1cmUgd2hpY2ggc3RhdGVtZW50
IGNhbiB0aHJvdyBhbmQgaXMgbWlzc2luZyB0aGUgY2hlY2ssIHlvdSBjYW4gc3ByaW5rbGUKKyAg
ICAgICB0aGUgZnVuY3Rpb24gd2l0aCBjYWxscyB0byB0aHJvd1Njb3BlUHJpbnRJZk5lZWRDaGVj
aygpLgorCisgICAgICAgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB3aWxsIGxvZyBhIGxp
bmUgIk5lZWQgZXhjZXB0aW9uIGNoZWNrIGF0IC4uLiIgdGhhdAorICAgICAgIGlubGN1ZGVzIHRo
ZSBmaWxlIGFuZCBsaW5lIG51bWJlciBvbmx5IHdoZW4gaXQgc2VlIHRoZSBtX25lZWRFeGNlcHRp
b25DaGVjayBzZXQuCisgICAgICAgVGhpcyB3aWxsIHRlbGwgeW91IHdoaWNoIHN0YXRlbWVudCBz
aW11bGF0ZWQgdGhlIHRocm93IHRoYXQgaXMgbm90IGJlaW5nIGNoZWNrZWQKKyAgICAgICBpLmUu
IHRoZSBvbmUgdGhhdCBwcmVjZWRlZCB0aGUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB0
aGF0IHByaW50ZWQgYSBsaW5lLgorKi8KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6
OlRocm93U2NvcGUoVk0mIHZtLCBUaHJvd1Njb3BlTG9jYXRpb24gbG9jYXRpb24pCisgICAgOiBt
X3ZtKHZtKQorICAgICwgbV9wcmV2aW91c1Njb3BlKHZtLm1fdG9wVGhyb3dTY29wZSkKKyAgICAs
IG1fbG9jYXRpb24obG9jYXRpb24pCisgICAgLCBtX2RlcHRoKG1fcHJldmlvdXNTY29wZSA/IG1f
cHJldmlvdXNTY29wZS0+bV9kZXB0aCArIDEgOiAwKQoreworICAgIG1fdm0ubV90b3BUaHJvd1Nj
b3BlID0gdGhpczsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0
cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIEVudGVyOiAiLCBsb2Nh
dGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBsb2NhdGlvbi5maWxlLCAiOiIsIGxvY2F0aW9uLmxp
bmUpOworICAgICAgICBpZiAobV92bS5tX25lZWRFeGNlcHRpb25DaGVjaykKKyAgICAgICAgICAg
IGRhdGFMb2coIiwgbmVlZHMgY2hlY2siKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAg
ICAgICBpZiAodHJhY2VXaXRoU3RhY2tUcmFjZXMpCisgICAgICAgICAgICBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsKKyAgICB9CisKKyAgICB2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmll
ZChTaXRlOjpTY29wZUVudHJ5KTsKK30KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6
On5UaHJvd1Njb3BlKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLm1fdG9wVGhyb3dTY29w
ZSk7CisKKyAgICBpZiAoIW1faXNSZWxlYXNlZCkKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hl
Y2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6U2NvcGVFeGl0KTsKKyAgICBlbHNlIHsKKyAgICAgICAg
Ly8gSWYgd2UgcmVsZWFzZWQgdGhlIHNjb3BlLCB0aGF0IG1lYW5zIHdlJ3JlIGxldHRpbmcgb3Vy
IGNhbGxlcnMgZG8gdGhlCisgICAgICAgIC8vIGV4Y2VwdGlvbiBjaGVjay4gSG93ZXZlciwgYmVj
YXVzZSBvdXIgY2FsbGVyIG1heSBiZSBhIExMSW50IG9yIEpJVAorICAgICAgICAvLyBmdW5jdGlv
biAod2hpY2ggYWx3YXlzIGNoZWNrcyBmb3IgZXhjZXB0aW9ucyBidXQgd29uJ3QgY2xlYXIgdGhl
CisgICAgICAgIC8vIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdCksIHdlIHNob3VsZCBjbGVhciBt
X25lZWRFeGNlcHRpb25DaGVjayBoZXJlCisgICAgICAgIC8vIGFuZCBsZXQgY29kZSBiZWxvdyBk
ZWNpZGUgaWYgd2UgbmVlZCB0byBzaW11bGF0ZSBhIHJlLXRocm93LgorICAgICAgICBtX3ZtLm1f
bmVlZEV4Y2VwdGlvbkNoZWNrID0gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCB3aWxsQmVIYW5k
bGVCeUxMSW50T3JKSVQgPSBmYWxzZTsKKyAgICB2b2lkKiBwcmV2aW91c1Njb3BlID0gbV9wcmV2
aW91c1Njb3BlOworICAgIHZvaWQqIHRvcENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOwor
ICAgIAorICAgIC8vIElmIHRoZSB0b3BDYWxsRnJhbWUgd2FzIHB1c2hlZCBvbiB0aGUgc3RhY2sg
YWZ0ZXIgdGhlIHByZXZpb3VzU2NvcGUgd2FzIGluc3RhbnRpYXRlZCwKKyAgICAvLyB0aGVuIHRo
aXMgVk1FbnRyeSB0aHJvd1Njb3BlIHdpbGwgYmUgcmV0dXJuaW5nIHRvIExMSU5UIG9yIEpJVCBj
b2RlIHRoYXQgYWx3YXlzIGRvCisgICAgLy8gYW4gZXhjZXB0aW9uIGNoZWNrLiBJbiB0aGF0IGNh
c2UsIHNraXAgdGhlIHNpbXVsYXRlZCB0aHJvdyBiZWNhdXNlIHRoZSBMTEludCBhbmQgSklUCisg
ICAgLy8gd2lsbCBiZSBjaGVja2luZyBmb3IgdGhlIGV4Y2VwdGlvbiB0aGVpciBvd24gd2F5IGlu
c3RlYWQgb2YgY2FsbGluZyB2bS5leGNlcHRpb24oKS4KKyAgICBpZiAodG9wQ2FsbEZyYW1lICYm
IHByZXZpb3VzU2NvcGUgPiB0b3BDYWxsRnJhbWUpCisgICAgICAgIHdpbGxCZUhhbmRsZUJ5TExJ
bnRPckpJVCA9IHRydWU7CisgICAgCisgICAgaWYgKCF3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQp
CisgICAgICAgIHNpbXVsYXRlVGhyb3coKTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAg
IGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJd
IEV4aXQ6ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxl
LCAiOiIsIG1fbG9jYXRpb24ubGluZSk7CisgICAgICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTElu
dE9ySklUKQorICAgICAgICAgICAgZGF0YUxvZygiLCB3aXRoIHJldGhyb3ciKTsKKyAgICAgICAg
aWYgKG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spCisgICAgICAgICAgICBkYXRhTG9nKCIsIG5l
ZWRzIGNoZWNrIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAgICAgaWYgKHRyYWNl
V2l0aFN0YWNrVHJhY2VzKQorICAgICAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAg
fQorCisgICAgbV92bS5tX3RvcFRocm93U2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7Cit9CisKK3Zv
aWQgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24q
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAobV92bS5leGNlcHRpb24oKSAmJiBtX3ZtLmV4Y2VwdGlv
bigpICE9IGV4Y2VwdGlvbikKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRp
c2ZpZWQoU2l0ZTo6VGhyb3cpOworICAgIAorICAgIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
ZXhjZXB0aW9uKTsKK30KKworSlNWYWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCit7CisgICAgaWYgKCFlcnJvci5hc0NlbGwoKSB8
fCAhanNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPihlcnJvci5hc0NlbGwoKSkpCisgICAgICAgIHZl
cmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAg
ICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9CisKK0pTT2JqZWN0
KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
YmopCit7CisgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG9iaikpCisgICAgICAg
IHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAK
KyAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOworfQorCit2b2lkIFRo
cm93U2NvcGU6OnByaW50SWZOZWVkQ2hlY2soY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQoreworICAgIGlmIChtX3ZtLm1fbmVlZEV4Y2Vw
dGlvbkNoZWNrKQorICAgICAgICBkYXRhTG9nKCI8IiwgdHJhY2VDb3VudCsrLCAiPiBOZWVkIGV4
Y2VwdGlvbiBjaGVjayBhdCAiLCBmdW5jdGlvbk5hbWUsICIgQCAiLCBmaWxlLCAiOiIsIGxpbmUs
ICJcbiIpOworfQorCit2b2lkIFRocm93U2NvcGU6OnNpbXVsYXRlVGhyb3coKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKG1fdm0ubV90b3BUaHJvd1Njb3BlKTsKKyAgICBtX3ZtLm1fc2ltdWxhdGVk
VGhyb3dQb2ludExvY2F0aW9uID0gbV9sb2NhdGlvbjsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhy
b3dQb2ludERlcHRoID0gbV9kZXB0aDsKKyAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrID0g
dHJ1ZTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNv
dW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIFRocm93IGZyb206ICIsIG1fbG9j
YXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRp
b24ubGluZSwgIlxuIik7CisgICAgICAgIGlmICh0cmFjZVdpdGhTdGFja1RyYWNlcykKKyAgICAg
ICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOworICAgIH0KK30KKworSlNfRVhQT1JUX1BSSVZB
VEUKK3ZvaWQgVGhyb3dTY29wZTo6dmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQo
VGhyb3dTY29wZTo6U2l0ZSBzaXRlKQoreworICAgIGlmICghdmVyaWZpY2F0aW9uT24pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChVTkxJS0VMWShtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNr
KSkgeworICAgICAgICBhdXRvIGZhaWxEZXB0aCA9IG1fdm0ubV9zaW11bGF0ZWRUaHJvd1BvaW50
RGVwdGg7CisgICAgICAgIGF1dG8mIGZhaWxMb2NhdGlvbiA9IG1fdm0ubV9zaW11bGF0ZWRUaHJv
d1BvaW50TG9jYXRpb247CisKKyAgICAgICAgYXV0byBzaXRlTmFtZSA9IFtdIChTaXRlIHNpdGUp
IC0+IGNvbnN0IGNoYXIqIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc2l0ZSkgeworICAgICAgICAg
ICAgY2FzZSBTaXRlOjpTY29wZUVudHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiAiRW50cnki
OworICAgICAgICAgICAgY2FzZSBTaXRlOjpTY29wZUV4aXQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuICJFeGl0IjsKKyAgICAgICAgICAgIGNhc2UgU2l0ZTo6VGhyb3c6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICJUaHJvdyI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH07CisKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJGQUlMRUQgZXhjZXB0aW9uIGNo
ZWNrIHZlcmlmaWNhdGlvbjpcbiIKKyAgICAgICAgICAgICIgICAgRXhjZXB0aW9uIHRocm93biBm
cm9tIFRocm93U2NvcGUgWyIsIGZhaWxEZXB0aCwgIl0gIiwgc2l0ZU5hbWUoc2l0ZSksICI6ICIs
IGZhaWxMb2NhdGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBmYWlsTG9jYXRpb24uZmlsZSwgIjoi
LCBmYWlsTG9jYXRpb24ubGluZSwgIlxuIgorICAgICAgICAgICAgIiAgICBpcyB1bmNoZWNrZWQg
aW4gVGhyb3dTY29wZSBbIiwgbV9kZXB0aCwgIl06ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1l
LCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIgorICAg
ICAgICAgICAgIlxuIik7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV9uZWVkRXhj
ZXB0aW9uQ2hlY2spOworICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJPV19TQ09QRV9W
RVJJRklDQVRJT04pCisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJWTS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7
CisKKyNpZiBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCitjbGFzcyBUaHJvd1Nj
b3BlIHsKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBUaHJvd1Njb3BlKFZNJiwgVGhy
b3dTY29wZUxvY2F0aW9uKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+VGhyb3dTY29wZSgpOwor
CisgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFs
dWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqLCBKU09iamVjdCopOworCisgICAgaW5saW5lIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkK
KyAgICB7CisgICAgICAgIG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgcmVs
ZWFzZSgpIHsgbV9pc1JlbGVhc2VkID0gdHJ1ZTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwcmludElmTmVlZENoZWNrKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hh
ciogZmlsZSwgdW5zaWduZWQgbGluZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzaW11bGF0ZVRo
cm93KCk7CisKKyAgICBlbnVtIGNsYXNzIFNpdGUgeworICAgICAgICBTY29wZUVudHJ5LAorICAg
ICAgICBTY29wZUV4aXQsCisgICAgICAgIFRocm93CisgICAgfTsKKyAgICB2b2lkIHZlcmlmeUV4
Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGUpOworCisgICAgVk0mIG1fdm07CisgICAg
VGhyb3dTY29wZSogbV9wcmV2aW91c1Njb3BlOworICAgIFRocm93U2NvcGVMb2NhdGlvbiBtX2xv
Y2F0aW9uOworICAgIHVuc2lnbmVkIG1fZGVwdGg7CisgICAgYm9vbCBtX2lzUmVsZWFzZWQgeyBm
YWxzZSB9OworfTsKKworI2RlZmluZSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtX18pIFwKKyAgICBK
U0M6OlRocm93U2NvcGUodm1fXywgSlNDOjpUaHJvd1Njb3BlTG9jYXRpb24oX19GVU5DVElPTl9f
LCBfX0ZJTEVfXywgX19MSU5FX18pKQorCisjZGVmaW5lIHRocm93U2NvcGVQcmludElmTmVlZENo
ZWNrKHNjb3BlX18pIFwKKyAgICBzY29wZV9fLnByaW50SWZOZWVkQ2hlY2soX19GVU5DVElPTl9f
LCBfX0ZJTEVfXywgX19MSU5FX18pCisKKyNlbHNlIC8vIG5vdCBFTkFCTEUoVEhST1dfU0NPUEVf
VkVSSUZJQ0FUSU9OKQorCitjbGFzcyBUaHJvd1Njb3BlIHsKK3B1YmxpYzoKKyAgICBUaHJvd1Nj
b3BlKFZNJiB2bSkKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgIHsgfQorCisgICAgVk0mIHZtKCkg
Y29uc3QgeyByZXR1cm4gbV92bTsgfQorICAgIAorICAgIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBtX3ZtLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGV4Y2VwdGlvbik7IH0KKyAgICBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVj
LCB2YWx1ZSk7IH0KKyAgICBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7
IH0KKyAgICAKKyAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbigpIHsgcmV0dXJuIG1fdm0uZXhjZXB0
aW9uKCk7IH0KKyAgICB2b2lkIHJlbGVhc2UoKSB7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVk0m
IG1fdm07Cit9OworCisjZGVmaW5lIERFQ0xBUkVfVEhST1dfU0NPUEUodm1fXykgXAorICAgIEpT
Qzo6VGhyb3dTY29wZSh2bV9fKQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklG
SUNBVElPTikKKworQUxXQVlTX0lOTElORSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHNj
b3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisKK0FMV0FZU19JTkxJTkUg
SlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBzY29wZS50aHJvd0V4Y2VwdGlvbihleGVj
LCB2YWx1ZSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEpTT2JqZWN0KiBvYmopCit7CisgICAg
cmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxv
Y2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhy
b3dTY29wZUxvY2F0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFRocm93U2NvcGVMb2NhdGlvbiB7
CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKCkgeyB9CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZmlsZSwgdW5zaWduZWQgbGluZSkK
KyAgICAgICAgOiBmdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICAgICAsIGZpbGUoZmls
ZSkKKyAgICAgICAgLCBsaW5lKGxpbmUpCisgICAgeyB9CisgICAgCisgICAgY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRy
IH07CisgICAgdW5zaWduZWQgbGluZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29k
ZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGVMb2NhdGlvbi5o
IgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiVk1FbnRyeVJlY29yZC5oIgpAQCAtMTA4LDYgKzEwOSw3IEBA
IGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOwor
Y2xhc3MgVGhyb3dTY29wZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC00
NDksMTAgKzQ1MSw2IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb24qIGxhc3RFeGNlcHRpb24oKSBj
b25zdCB7IHJldHVybiBtX2xhc3RFeGNlcHRpb247IH0KICAgICBKU0NlbGwqKiBhZGRyZXNzT2ZM
YXN0RXhjZXB0aW9uKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJm1fbGFz
dEV4Y2VwdGlvbik7IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdGhyb3dFeGNlcHRp
b24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLQog
ICAgIHZvaWQgc2V0RmFpbE5leHROZXdDb2RlQmxvY2soKSB7IG1fZmFpbE5leHROZXdDb2RlQmxv
Y2sgPSB0cnVlOyB9CiAgICAgYm9vbCBnZXRBbmRDbGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkK
ICAgICB7CkBAIC02NDQsNiArNjQyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fbGFzdEV4Y2Vw
dGlvbiA9IGV4Y2VwdGlvbjsKICAgICB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRo
cm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0Kik7CisKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogICAgIGJvb2wgbV9jYW5Vc2VBc3NlbWJs
ZXI7CiAjZW5kaWYKQEAgLTY2OCw2ICs2NzAsMTMgQEAgcHJpdmF0ZToKIAogICAgIEV4Y2VwdGlv
biogbV9leGNlcHRpb24geyBudWxscHRyIH07CiAgICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNlcHRp
b24geyBudWxscHRyIH07CisjaWYgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKyAg
ICBUaHJvd1Njb3BlKiBtX3RvcFRocm93U2NvcGUgeyBudWxscHRyIH07CisgICAgVGhyb3dTY29w
ZUxvY2F0aW9uIG1fc2ltdWxhdGVkVGhyb3dQb2ludExvY2F0aW9uOworICAgIHVuc2lnbmVkIG1f
c2ltdWxhdGVkVGhyb3dQb2ludERlcHRoIHsgMCB9OworICAgIG11dGFibGUgYm9vbCBtX25lZWRF
eGNlcHRpb25DaGVjayB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGJvb2wgbV9mYWlsTmV4dE5l
d0NvZGVCbG9jayB7IGZhbHNlIH07CiAgICAgRGVsZXRlUHJvcGVydHlNb2RlIG1fZGVsZXRlUHJv
cGVydHlNb2RlIHsgRGVsZXRlUHJvcGVydHlNb2RlOjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2ds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93IHsgdHJ1ZSB9OwpAQCAtNjkwLDYgKzY5
OSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93Q2hpY2tl
bj4gbV9zaGFkb3dDaGlja2VuOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5PiBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CisKKyAgICBmcmllbmQgY2xh
c3MgVGhyb3dTY29wZTsKIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgVk1FbnRyeVNjb3BlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSB+Vk1FbnRyeVNjb3BlKCk7CiAKKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBt
X3ZtOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2xvYmFsT2JqZWN0OyB9CiAKICAgICB2b2lkIGFkZERpZFBvcExpc3RlbmVyKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCwxMSArNDgsMTYgQEAgdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vh
a01hcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFr
TWFwIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25z
dHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldl
YWtNYXAiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSktPmdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IElu
dGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1Rh
cmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtNYXBTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtNjksMTEgKzc0LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7
CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJG
dW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhl
YywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRl
bSkgewogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NiwxNSArNTYsMTggQEAgdm9pZCBXZWFrTWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTQogCiBzdGF0aWMgV2Vha01hcERhdGEqIGdldFdlYWtN
YXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2
bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rp
b24gb24gbm9uLW9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1v
YmplY3QiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChKU1dl
YWtNYXAqIHdlYWtNYXAgPSBqc0R5bmFtaWNDYXN0PEpTV2Vha01hcCo+KHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIHdlYWtNYXAtPndlYWtNYXBEYXRhKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihj
YWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBh
IG5vbi1XZWFrTWFwIG9iamVjdCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gYSBub24t
V2Vha01hcCBvYmplY3QiKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk5LDEzICsx
MDIsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBn
ZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2Jq
ZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwg
YXNPYmplY3Qoa2V5KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAi
KSkpOworICAgIG1hcC0+c2V0KHZtLCBhc09iamVjdChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDExICs0OCwxNiBAQCB2b2lkIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIldlYWtTZXQiKSk7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha1NldCIpKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1Nl
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiB3ZWFrU2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGds
b2JhbE9iamVjdC0+d2Vha1NldFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCkBAIC02OSw3ICs3NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5
cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRk
ZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENh
bGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUs
IFsmXShWTSYsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTQsMTUgKzU0LDE4IEBAIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0KIAogc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5v
bi1vYmplY3QiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdU
Rjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBub24tb2JqZWN0Iikp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoSlNXZWFrU2V0KiB3
ZWFrU2V0ID0ganNEeW5hbWljQ2FzdDxKU1dlYWtTZXQqPih2YWx1ZSkpCiAgICAgICAgIHJldHVy
biB3ZWFrU2V0LT53ZWFrTWFwRGF0YSgpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24gb24gYSBub24tV2Vh
a1NldCBvYmplY3QiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RG
OjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQg
b2JqZWN0IikpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC04NiwxMyArODksMTYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFw
RGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFs
dWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0
byBhIFdlYWtTZXQiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qo
a2V5KSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRl
ZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtTZXQiKSkpOworICAgIG1hcC0+c2V0
KHZtLCBhc09iamVjdChrZXkpLCBqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRv
IGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgIC0gSW50cm9kdWNl
ZCB0aGUgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikgZmxhZy4KKwogMjAxNi0wOC0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVSTFBhcnNlciBzaG91bGQgcGFyc2UgcmVsYXRpdmUgVVJMcwpJbmRleDogU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05MTgsNiArOTE4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDAKICNl
bmRpZgogCisjaWZuZGVmIEVOQUJMRV9USFJPV19TQ09QRV9WRVJJRklDQVRJT04KKyNkZWZpbmUg
RU5BQkxFX1RIUk9XX1NDT1BFX1ZFUklGSUNBVElPTiAoIWRlZmluZWQoTkRFQlVHKSkKKyNlbmRp
ZgorCiAvKiBQaWNrIHdoaWNoIGFsbG9jYXRvciB0byB1c2U7IHdlIG9ubHkgbmVlZCBhbiBleGVj
dXRhYmxlIGFsbG9jYXRvciBpZiB0aGUgYXNzZW1ibGVyIGlzIGNvbXBpbGVkIGluLgogICAgT24g
bm9uLVdpbmRvd3MgeDg2LTY0LCBpT1MsIGFuZCBBUk02NCB3ZSB1c2UgYSBzaW5nbGUgZml4ZWQg
bW1hcCwgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG1tYXAgb24gZGVtYW5kLiAqLwogI2lmIEVOQUJM
RShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NTkgQEAKKzIwMTYt
MDgtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVj
ZSB0aGUgVGhyb3dTY29wZSBhbmQgZm9yY2UgZXZlcnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50aWF0
ZSBhIFRocm93U2NvcGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjExNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIG9ubHkgYW4gaW50ZXJuYWwgQVBJ
IGNoYW5nZS4gSWYgaXQgYnVpbGRzLCBpdCBzaG91bGQgYmUgZ29vZC4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNCbG9iKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1J
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFlc0NiY1BhcmFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVBZXNLZXlHZW5QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlSG1hY1BhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIbWFjS2V5UGFyYW1z
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYUtleUdlblBhcmFtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSc2FPYWVwUGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJz
YVNzYVBhcmFtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEpTQXJyYXlGcm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJpbmdG
cm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb29sZWFuRnJvbUpTT04pOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9u
SldLKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVj
b25jaWxlQWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUpXS0tleU9wc1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxl
VXNhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6
a2V5RGF0YU9jdGV0U2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjprZXlEYXRhUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkSldLQWxnb3JpdGhtVG9KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSzo6c2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0
b09wZXJhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvT3BlcmF0aW9uRGF0
YUZyb21KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1
cGdyYWRlRWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVn
aXN0cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q3VzdG9tRWxlbWVudENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRET01FeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5mb3JjZVJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvU21hbGxlckludCk6CisgICAgICAgIChXZWJDb3JlOjp0b1Nt
YWxsZXJVSW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkFjY2Vzc0RvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRocm93VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93Tm90
U3VwcG9ydGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dJbnZhbGlkU3RhdGVFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NlY3VyaXR5RXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6dGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93QXJyYXlFbGVtZW50
VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93QXR0cmlidXRlVHlwZUVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0
VW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NlcXVlbmNlVHlwZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93Tm9uRmluaXRlVHlwZUVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRocm93R2V0dGVyVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93U2V0dGVyVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93VGhpc1R5cGVFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVmUHRyTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9OYXRpdmVBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU6OmNhbGxUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5Db25z
dHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXcmFwcGVyVHlwZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6aXRlcmF0b3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JFYWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyPjo6bmV4
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVQb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b25zdHJ1Y3RKU0RhdGFDdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RvY3VtZW50OjpjcmVhdGVUb3VjaExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1
bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRmlsZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2Fu
dmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERv
Y3VtZW50OjpvcGVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTSFRNTEVsZW1lbnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVt
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9u
UmFuZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
ZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVh
bVRyYWNrOjpnZXRTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJh
Y2s6OmdldENhcGFiaWxpdGllcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVzc2FnZVBvcnRBcnJheSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOgorICAgICAgICAoV2Vi
Q29yZTo6aGFuZGxlUG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9EZWNpc2lvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjppbnNlcnRCZWZv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6
OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xl
bmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFG
dW5jdGlvbmkpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0
bzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6aW1wb3J0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmV4cG9ydEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29y
a2VyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aW52b2tl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVCYXNlOjp0aHJvd1N0YWNrT3ZlcmZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnRocm93VmFsaWRhdGlvbkVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklm
U2VyaWFsaXphdGlvbkZhaWxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpz
ZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6
CisgICAgICAgIChHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAg
ICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhc3Rl
ZFRoaXMpOgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKToKKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZh
Y2VOYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4
Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmN0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0
cnVjdG9yQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0
dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEV4Y2VwdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJp
dmF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHbG9iYWxPYmplY3RQ
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVt
ZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50c1N0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0
cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNS
ZWFkT25seUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3Rh
dGljQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
U3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
Myk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1l
bnRhbFN0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxl
bWVudHNNZXRob2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRo
b2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRob2Q0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2Rl
Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdG
dW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPik6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6Ok9wdGlvbmFsPik6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0PEFsdGVybmF0ZUVudW1OYW1lPik6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0PFRlc3RPYmo6OkVudW1BPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6
OkVudW1CPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OkVudW1DPik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OktpbmQ+KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnQ8VGVzdE9iajo6U2l6ZT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydDxU
ZXN0T2JqOjpDb25maWRlbmNlPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFy
eTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlv
bmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRT
aG91bGRUb2xlcmF0ZU51bGw+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5
PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRP
bmx5TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVhZE9ubHlTdHJpbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5n
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmop
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpFbnVtQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpCeXRlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpPY3RldEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqU2hvcnRBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxvbmdMb25nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialVzdnN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVzdE9i
akF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqVW5mb3JnZWFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVk
U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZTdHJp
bmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFs
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVTVlVSTEF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqQ3VzdG9tQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPbmZv
byk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPbndlYmtpdGZvbyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29udGVudERvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpT
dHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmlu
Z0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpFbnVt
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpCeXRlQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPY3RldEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNsYW1w
ZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdl
U2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxvbmdBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakxvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVzdnN0
cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSW1wbGVtZW50
YXRpb25FbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpYTUxPYmpBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqUmVmbGVjdGVkVVNWVVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDdXN0b21BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iak9uZm9vKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iak9ud2Via2l0Zm9vKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iak11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iaklkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0
YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhS
ZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndh
cmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5n
aWZpZXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25CeXRlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJs
ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVt
QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWly
ZXNBbGxBcmdzQW5kVGhyb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZT
dHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhj
ZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DdXN0b21NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0U3RhdGVWb2lkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxs
ZXJEb2N1bWVudEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJn
QW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRUd29PcHRpb25hbEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBdG9taWNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc1VuZGVmaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bWljU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJ
c05hTik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNp
Z25lZExvbmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVl
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xl
YW5Jc0ZhbHNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVySXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRo
b2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMTApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBh
cmFtZXRlcjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0Fy
cmF5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Eb21TdHJpbmdMaXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
Mik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9p
bnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkltbXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PcmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblBy
b21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50UHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmN0aW9uMVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVy
bG9hZGVkRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9u
V2l0aEV4Y2VwdGlvblByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3Zl
cmxvYWQxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxPdmVybG9hZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJs
b2FkMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UxKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVh
ZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRW
YWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0
cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3JUZXN0U3ViT2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBl
ZGVmc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzVW5z
aWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNJ
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
RnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXApOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBv
aW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVl
bmNlVGhhdFJlcXVpcmVzSW5jbHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
YXR0cmlidXRlUmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6anNhdHRyaWJ1dGVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc3JlYWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNyZWFkb25seUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlv
blRvRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tl
TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVs
dE1ldGhvZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZUNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpj
SW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgIChPYmpj
SW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQXJyYXk6OnNldFZhbHVlQXQpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0FycmF5Ojp2YWx1ZUF0KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfdXRpbGl0eS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5t
bToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnRocm93RXJyb3IpOgorICAgICAgICAqIGJyaWRn
ZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpsZW5ndGhH
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6
OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6Y2FsbFJ1bnRpbWVNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmYWxs
YmFja09iamVjdEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0
OjpmaWVsZEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0Ojpt
ZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6
OnB1dCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpkZWZhdWx0VmFs
dWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0Ojp0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisK
IDIwMTYtMDgtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWdyZXNzaW9uKHIyMDQ5MjMpOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc2V0ICdMb2NhdGlv
bi5ocmVmJyBjcm9zcyBvcmlnaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uIikpOwogCiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHVpbnQxNl90IHN0YXR1cyA9IGNvbnZlcnQ8dWludDE2
X3Q+KHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC03MCwx
NSArNzMsMTggQEAgSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcAogCiBK
U1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
dGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2Rl
KHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQXBwbGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRo
cm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBz
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdWludDE2X3Qgc3RhdHVzID0gY29udmVydDx1aW50MTZf
dD4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTEwNCwx
NSArMTEwLDE4IEBAIEpTVmFsdWUgSlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHAKIAog
SlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVQYXlt
ZW50TWV0aG9kU2VsZWN0aW9uIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRo
cm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uIikpOwogCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZN
RXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIERpY3Rpb25hcnkgbmV3VG90YWwgPSB7ICZzdGF0ZSwgc3RhdGUu
YXJndW1lbnQoMCkgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9i
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCbG9iQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02MywxMiArNjQsMTUgQEAgSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTQmxvYihFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNv
bnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3RydWN0
b3IpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0
b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxl
RXJyb3IoZXhlYywgIkJsb2IiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3Jp
cHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkJsb2IiKTsK
IAogICAgIGlmICghZXhlYy5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoanNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0
KCksIEJsb2IsIEJsb2I6OmNyZWF0ZSgpKSk7CkBAIC04Nyw3ICs5MSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMKICAgICAgICAgSlNWYWx1ZSBibG9iUHJvcGVy
dHlCYWdWYWx1ZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMSk7CiAKICAgICAgICAgaWYgKCFi
bG9iUHJvcGVydHlCYWdWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoJmV4ZWMsICJTZWNvbmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IG5vdCBvZiB0eXBlIE9iamVjdCIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoJmV4ZWMsIHNjb3BlLCAiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBu
b3Qgb2YgdHlwZSBPYmplY3QiKTsKIAogICAgICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwg
dGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAgICAgICAgIEpTT2JqZWN0KiBibG9i
UHJvcGVydHlCYWdPYmplY3QgPSBibG9iUHJvcGVydHlCYWdWYWx1ZS50b09iamVjdCgmZXhlYyk7
CkBAIC0xMDIsNyArMTA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKUwogCiAgICAgICAgIGlmIChjb250YWluc0VuZGluZ3MpIHsKICAgICAgICAgICAgIGlmIChl
bmRpbmdzICE9ICJ0cmFuc3BhcmVudCIgJiYgZW5kaW5ncyAhPSAibmF0aXZlIikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgIlRoZSBlbmRpbmdzIHByb3Bl
cnR5IG11c3QgYmUgZWl0aGVyIFwidHJhbnNwYXJlbnRcIiBvciBcIm5hdGl2ZVwiIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAiVGhlIGVu
ZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwiIG9yIFwibmF0aXZl
XCIiKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IHRoZSB0eXBlIHBy
b3BlcnR5LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0OCw4ICszNDgs
MTEgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKAogCiBKU1ZhbHVl
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDkgQEAgZW51bSBjbGFzcyBIYXNoUmVxdWlyZW1l
bnQgewogCiBib29sIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRl
bnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXImIGFsZ29yaXRobUlkZW50aWZpZXIpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyB0
eXBlZGVmIChBbGdvcml0aG0gb3IgRE9NU3RyaW5nKSBBbGdvcml0aG1JZGVudGlmaWVyOwogCiAg
ICAgU3RyaW5nIGFsZ29yaXRobU5hbWU7CkBAIC04MSw3ICs4NCw3IEBAIGJvb2wgSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFhbGdvcml0aG1OYW1lLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKLSAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyMiw4ICsxMjUsMTEgQEAgc3Rh
dGljIGJvb2wgZ2V0SGFzaEFsZ29yaXRobShKU0RpY3Rpb25hcgogCiBzdGF0aWMgUmVmUHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUFlc0NiY1BhcmFtcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xNDAsNyArMTQ2LDcgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogICAgIH0KIAogICAgIGlmIChpdkRhdGEuc2Vjb25kICE9IDE2KSB7Ci0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkFFUy1DQkMgaW5p
dGlhbGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVzIikpOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkFFUy1DQkMgaW5pdGlhbGl6YXRp
b24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVzIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTE1MSw4ICsxNTcsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNy
ZWF0ZUFlc0tleUdlblBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE2OSw4ICsxNzgsMTEgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNQYXJhbXMoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNP
YmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC0xODcsOCArMTk5LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVh
dGVIbWFjS2V5UGFyYW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMjA5LDggKzIyNCwxMSBAQCBzdGF0
aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUnNhS2V5R2VuUGFyYW1zKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlz
T2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtMjMyLDcgKzI1MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4KIAogICAgIFJlZlB0cjxVaW50OEFycmF5PiBwdWJsaWNFeHBvbmVudEFycmF5ID0g
dG9VaW50OEFycmF5KHB1YmxpY0V4cG9uZW50VmFsdWUpOwogICAgIGlmICghcHVibGljRXhwb25l
bnRBcnJheSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsICJFeHBlY3RlZCBhIFVp
bnQ4QXJyYXkgaW4gcHVibGljRXhwb25lbnQiKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBzY29wZSwgIkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBvbmVudCIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmVzdWx0LT5wdWJsaWNFeHBvbmVu
dC5hcHBlbmQocHVibGljRXhwb25lbnRBcnJheS0+ZGF0YSgpLCBwdWJsaWNFeHBvbmVudEFycmF5
LT5ieXRlTGVuZ3RoKCkpOwpAQCAtMjUwLDggKzI2OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4gY3JlYXRlUnNhT2FlcFBhcmFtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yODQsOCArMzA1LDEx
IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJl
ZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FTc2FQYXJhbXMoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9D
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMyArMzgsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkg
PCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKICAgICBKU1ZhbHVlIGJ1ZmZlciA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAg
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJW
aWV3KGJ1ZmZlcik7CiAgICAgaWYgKCFhcnJheUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBzY29wZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCku
Z2V0UmFuZG9tVmFsdWVzKGFycmF5QnVmZmVyVmlldy5nZXQoKSwgZWMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6
YXRpb25KV0suY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Miw2
ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZy
b21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwg
SlNBcnJheSomIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChqc29uLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIApA
QCAtNjEsNyArNjQsNyBAQCBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRl
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmllcik7CiAg
ICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFpc0pTQXJyYXkodmFs
dWUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCBhbiBhcnJheSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5
IGZvciBcIiVzXCIgSlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTcyLDYgKzc1LDkgQEAgc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4
ZWNTdGF0ZQogCiBzdGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVzdWx0KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC04NCw3ICs5MCw3IEBAIHN0YXRpYyBi
b29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSoKICAgICAgICAgLy8gQ2FuIGdldCBhbiBv
dXQgb2YgbWVtb3J5IGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgYSBzdHJpbmcgdmFsdWUgZm9yIFwiJXNcIiBKU09O
IGtleSIsICBrZXkpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmlu
Zzo6Zm9ybWF0KCJFeHBlY3RlZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5Iiwg
IGtleSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC05Myw2ICs5OSw5IEBA
IHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSoKIAogc3RhdGljIGJvb2wg
Z2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0
IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFBy
b3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwogCkBAIC0xMDIsNyArMTExLDcgQEAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09O
KEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUganNWYWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRl
bnRpZmllcik7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFq
c1ZhbHVlLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlu
Zzo6Zm9ybWF0KCJFeHBlY3RlZCBhIGJvb2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIs
ICBrZXkpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmluZzo6Zm9y
bWF0KCJFeHBlY3RlZCBhIGJvb2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTEyLDE3ICsxMjEsMjAgQEAg
c3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZQogCiBzdGF0aWMgYm9vbCBn
ZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNv
biwgY29uc3QgY2hhcioga2V5LCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIFN0cmluZyBiYXNlNjR1cmxFbmNvZGVkTnVtYmVyOwogICAgIGlmICghZ2V0U3Ry
aW5nRnJvbUpTT04oZXhlYywganNvbiwga2V5LCBiYXNlNjR1cmxFbmNvZGVkTnVtYmVyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoYmFzZTY0dXJs
RW5jb2RlZE51bWJlciwgcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBkYXRhIGluIEpXSyIpKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdFswXSA9PSAwKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIEJpZ0ludGVnZXIgbXVzdCB1dGlsaXplIHRo
ZSBtaW5pbXVtIG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVzZW50IHRoZSB2YWx1ZSIpKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldLIEJpZ0lu
dGVnZXIgbXVzdCB1dGlsaXplIHRoZSBtaW5pbXVtIG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVz
ZW50IHRoZSB2YWx1ZSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTMy
LDE2ICsxNDQsMTkgQEAgc3RhdGljIGJvb2wgZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKAog
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0so
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGpzb25TdHJpbmcpCiAgICAgOiBtX2V4ZWMo
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUganNvblZhbHVlID0gSlNPTlBhcnNl
KGV4ZWMsIGpzb25TdHJpbmcpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFqc29uVmFsdWUgfHwgIWpzb25WYWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBK
V0sgc2VyaWFsaXphdGlvbiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBKV0sgc2VyaWFsaXphdGlvbiIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fanNvbi5zZXQobV9leGVjLT52bSgpLCBhc09iamVjdChqc29u
VmFsdWUpKTsKKyAgICBtX2pzb24uc2V0KHZtLCBhc09iamVjdChqc29uVmFsdWUpKTsKIH0KIAog
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjp+SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldL
KCkKQEAgLTE2NSw2ICsxODAsOSBAQCBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+IGNyCiAKIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSogc3VnZ2VzdGVk
QWxnb3JpdGhtLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKiBzdWdnZXN0ZWRQYXJhbWV0ZXJz
KSBjb25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1f
ZXhlYywgbV9qc29uLmdldCgpLCAiYWxnIiwgbV9qd2tBbGdvcml0aG1OYW1lKSkgewogICAgICAg
ICAvLyBBbGdvcml0aG0gaXMgb3B0aW9uYWwgaW4gSldLLgogICAgICAgICByZXR1cm4gQ3J5cHRv
QWxnb3JpdGhtUGFpciB7IHN1Z2dlc3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1ldGVycyB9
OwpAQCAtMjE2LDcgKzIzNCw3IEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5
cHRvS2UKICAgICAgICAgYWxnb3JpdGhtID0gYWxnb3JpdGhtUmVnaXN0eS5jcmVhdGUoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXKTsKICAgICAgICAgcGFyYW1ldGVycyA9IGFkb3B0
UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiVW5zdXBwb3J0ZWQgSldLIGFsZ29yaXRobSAiICsg
bV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29w
ZSwgIlVuc3VwcG9ydGVkIEpXSyBhbGdvcml0aG0gIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAg
ICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0KIApAQCAtMjU0LDkgKzI3MiwxMiBAQCBPcHRp
b25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBKU0NyeXB0b0tlCiAKIHN0YXRpYyBib29sIHRyeUpX
S0tleU9wc1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgQ3J5cHRvS2V5VXNhZ2UmIHVzYWdlcywgY29u
c3QgU3RyaW5nJiBvcGVyYXRpb24sIGNvbnN0IFN0cmluZyYgdHJ5T3BlcmF0aW9uLCBDcnlwdG9L
ZXlVc2FnZSB0cnlVc2FnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChvcGVyYXRpb24gPT0g
dHJ5T3BlcmF0aW9uKSB7CiAgICAgICAgIGlmICh1c2FnZXMgJiB0cnlVc2FnZSkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250
YWlucyBhIGR1cGxpY2F0ZSBvcGVyYXRpb24iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250YWlucyBhIGR1cGxp
Y2F0ZSBvcGVyYXRpb24iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgdXNhZ2VzIHw9IHRyeVVzYWdlOwpAQCAtMjY2LDYgKzI4Nyw5IEBAIHN0YXRpYyBi
b29sIHRyeUpXS0tleU9wc1ZhbHVlKEV4ZWNTdGF0ZSoKIAogdm9pZCBKU0NyeXB0b0tleVNlcmlh
bGl6YXRpb25KV0s6OnJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZSYgc3VnZ2VzdGVkVXNh
Z2VzKSBjb25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDcnlwdG9LZXlVc2FnZSBqd2tVc2Fn
ZXMgPSAwOwogCiAgICAgSlNBcnJheSoga2V5T3BzOwpAQCAtMjc1LDcgKzI5OSw3IEBAIHZvaWQg
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmMKICAgICAgICAgICAgIFN0cmluZyBv
cGVyYXRpb247CiAgICAgICAgICAgICBpZiAoIWpzVmFsdWUuZ2V0U3RyaW5nKG1fZXhlYywgb3Bl
cmF0aW9uKSkgewogICAgICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwo
IkpXSyBrZXlfb3BzIGF0dHJpYnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOworICAgICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkpXSyBrZXlfb3BzIGF0dHJpYnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghdHJ5SldL
S2V5T3BzVmFsdWUobV9leGVjLCBqd2tVc2FnZXMsIG9wZXJhdGlvbiwgQVNDSUlMaXRlcmFsKCJz
aWduIiksIENyeXB0b0tleVVzYWdlU2lnbikpCkBAIC0zMTAsNyArMzM0LDcgQEAgdm9pZCBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uYwogICAgICAgICBlbHNlIGlmIChqd2tVc2VT
dHJpbmcgPT0gInNpZyIpCiAgICAgICAgICAgICBqd2tVc2FnZXMgfD0gKENyeXB0b0tleVVzYWdl
U2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBc
IiIgKyBqd2tVc2VTdHJpbmcgKyAiXCIiKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgc2NvcGUsICJVbnN1cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBcIiIgKyBqd2tVc2VT
dHJpbmcgKyAiXCIiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTM2MiwyMSArMzg2LDI0IEBAIGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlT
aXoKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6a2V5RGF0YU9jdGV0U2VxdWVuY2UoKSBjb25zdAogeworICAgIFZNJiB2bSA9IG1f
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBTdHJpbmcga2V5QmFzZTY0VVJMOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9l
eGVjLCBtX2pzb24uZ2V0KCksICJrIiwga2V5QmFzZTY0VVJMKSkgewogICAgICAgICBpZiAoIW1f
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiU2VjcmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
U2VjcmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9jdGV0U2VxdWVuY2U7CiAg
ICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoa2V5QmFzZTY0VVJMLCBvY3RldFNlcXVlbmNlKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29k
ZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBk
YXRhIGluIEpXSyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYg
KCFrZXlTaXplSXNWYWxpZChvY3RldFNlcXVlbmNlLnNpemUoKSAqIDgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKG1fZXhlYywgIktleSBzaXplIGlzIG5vdCB2YWxpZCBmb3IgIiArIG1fandr
QWxnb3JpdGhtTmFtZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsICJL
ZXkgc2l6ZSBpcyBub3QgdmFsaWQgZm9yICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTM4NSwyNCArNDEyLDI3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YVJTQUNvbXBvbmVu
dHMoKSBjb25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBWZWN0b3I8dWludDhfdD4gbW9kdWx1
czsKICAgICBWZWN0b3I8dWludDhfdD4gZXhwb25lbnQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBy
aXZhdGVFeHBvbmVudDsKIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1f
ZXhlYywgbV9qc29uLmdldCgpLCAibiIsIG1vZHVsdXMpKSB7CiAgICAgICAgIGlmICghbV9leGVj
LT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVND
SUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJuXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlcXVp
cmVkIEpXSyBcIm5cIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCiAgICAgaWYgKCFrZXlTaXplSXNWYWxpZChtb2R1bHVzLnNpemUoKSAqIDgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgIktleSBzaXplIGlzIG5vdCB2YWxp
ZCBmb3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgc2NvcGUsICJLZXkgc2l6ZSBpcyBub3QgdmFsaWQgZm9yICIgKyBtX2p3a0FsZ29yaXRo
bU5hbWUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWdldEJp
Z0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImUiLCBleHBvbmVu
dCkpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpXSyBcImVcIiBt
ZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5n
IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ1OCwyMiArNDg4LDIy
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sKICAgICAgICAgaWYg
KG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgaWYgKCFlbGVtZW50LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgXCJvdGhcIiBhcnJheSBtZW1iZXIgaXMgbm90
IGFuIG9iamVjdCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSldLIFwib3RoXCIgYXJyYXkgbWVtYmVyIGlzIG5vdCBhbiBvYmplY3Qi
KSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAo
IWdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAi
ciIsIGluZm8ucHJpbWVGYWN0b3IpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBnZXQgcHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwib3RoXCIgZGlj
dGlvbmFyeSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgcHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwi
b3RoXCIgZGljdGlvbmFyeSIpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgYXNP
YmplY3QoZWxlbWVudCksICJkIiwgaW5mby5mYWN0b3JDUlRFeHBvbmVudCkpIHsKICAgICAgICAg
ICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9u
ZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQg
ZmFjdG9yIENSVCBleHBvbmVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdl
dEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAidCIs
IGluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmlt
ZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgY29l
ZmZpY2llbnQgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgb3RoZXJQcmltZUluZm9zLmFw
cGVuZChpbmZvKTsKQEAgLTQ4NCwxMCArNTE0LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9L
ZXlEYXRhPiBKU0NyeXB0b0sKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YSgpIGNvbnN0CiB7CisgICAgVk0mIHZtID0g
bV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIFN0cmluZyBqd2tLZXlUeXBlOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9l
eGVjLCBtX2pzb24uZ2V0KCksICJrdHkiLCBqd2tLZXlUeXBlKSkgewogICAgICAgICBpZiAoIW1f
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwia3R5XCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlJlcXVpcmVkIEpXSyBcImt0eVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ5Nyw3ICs1MzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LCiAgICAgaWYgKGp3a0tleVR5cGUgPT0gIlJTQSIpCiAg
ICAgICAgIHJldHVybiBrZXlEYXRhUlNBQ29tcG9uZW50cygpOwogCi0gICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCAiVW5zdXBwb3J0ZWQgSldLIGtleSB0eXBlICIgKyBqd2tLZXlUeXBlKTsKKyAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGtleSB0eXBl
ICIgKyBqd2tLZXlUeXBlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNTYwLDYgKzU5
Myw5IEBAIHN0YXRpYyB2b2lkIGFkZEJvb2xUb0pTT04oRXhlY1N0YXRlKiBleGUKIAogc3RhdGlj
IHZvaWQgYWRkSldLQWxnb3JpdGhtVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpz
b24sIGNvbnN0IENyeXB0b0tleSYga2V5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGp3
a0FsZ29yaXRobTsKICAgICBzd2l0Y2ggKGtleS5hbGdvcml0aG1JZGVudGlmaWVyKCkpIHsKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CkBAIC02NTIsNyArNjg4LDcg
QEAgc3RhdGljIHZvaWQgYWRkSldLQWxnb3JpdGhtVG9KU09OKEV4ZWNTdAogCiAgICAgaWYgKGp3
a0FsZ29yaXRobS5pc051bGwoKSkgewogICAgICAgICAvLyBUaGUgc3BlYyBkb2Vzbid0IGN1cnJl
bnRseSB0ZWxsIHdoZXRoZXIgZXhwb3J0IHNob3VsZCBmYWlsLCBvciBqdXN0IHNraXAgImFsZyIg
KHdoaWNoIGlzIGFuIG9wdGlvbmFsIGtleSBpbiBKV0spLgotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIktleSBhbGdvcml0aG0gYW5kIHNpemUgZG8gbm90IG1hcCB0
byBhbnkgSldLIGFsZ29yaXRobSBpZGVudGlmaWVyIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJLZXkgYWxnb3JpdGhtIGFuZCBzaXplIGRvIG5v
dCBtYXAgdG8gYW55IEpXSyBhbGdvcml0aG0gaWRlbnRpZmllciIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjg5LDEwICs3MjUsMTMgQEAgc3RhdGljIHZvaWQgYWRkVXNhZ2VzVG9K
U09OKEV4ZWNTdGF0ZSogZQogCiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpz
ZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBrZXlEYXRhID0ga2V5
LmV4cG9ydERhdGEoKTsKICAgICBpZiAoIWtleURhdGEpIHsKICAgICAgICAgLy8gVGhpcyBnZW5l
cmFsbHkgc2hvdWxkbid0IGhhcHBlbiBhcyBsb25nIGFzIGFsbCBrZXkgdHlwZXMgaW1wbGVtZW50
IGV4cG9ydERhdGEoKSwgYnV0IGFzIHVuZGVybHlpbmcgbGlicmFyaWVzIHJldHVybiBlcnJvcnMs
IHRoZXJlIG1heSBiZSBzb21lIHJhcmUgZmFpbHVyZSBjb25kaXRpb25zLgotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkbid0IGV4cG9ydCBrZXkgbWF0ZXJp
YWwiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNvdWxkbid0IGV4cG9ydCBrZXkgbWF0ZXJpYWwiKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICB9CiAKQEAgLTcxMyw3ICs3NTIsNyBAQCBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLOjpzZXJpCiAgICAgZWxzZSBpZiAoaXM8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVu
dHM+KCprZXlEYXRhKSkKICAgICAgICAgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhleGVjLCBk
b3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpLCByZXN1bHQpOwog
ICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIktl
eSBkb2Vzbid0IHN1cHBvcnQgZXhwb3J0S2V5IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJLZXkgZG9lc24ndCBzdXBwb3J0IGV4cG9ydEtleSIp
KTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJh
dGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM2LDEyICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgY3J5cHRvT3BlcmF0
aW9uRGF0YUZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKEFycmF5QnVm
ZmVyKiBidWZmZXIgPSB0b0FycmF5QnVmZmVyKHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOwogICAgIGVsc2UgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGJ1
ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyh2YWx1ZSkpCiAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVz
cygpKSwgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJh
eUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEi
KSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9u
bHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQg
YXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEwOSw3ICsxMDksOSBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZTo6dXBncmFkZUVsCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisgICAgVk0mIHZtID0gbV9pc29sYXRlZFdvcmxkLT52
bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIW1fY29uc3RydWN0b3IpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6
dXBncmFkZUVsCiAKICAgICBFbGVtZW50KiB3cmFwcGVkRWxlbWVudCA9IEpTRWxlbWVudDo6dG9X
cmFwcGVkKHJldHVybmVkRWxlbWVudCk7CiAgICAgaWYgKCF3cmFwcGVkRWxlbWVudCB8fCB3cmFw
cGVkRWxlbWVudCAhPSAmZWxlbWVudCkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9y
KCpzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGZhaWxlZCB0byB1cGdyYWRlIGFu
IGVsZW1lbnQiKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcigqc3RhdGUsIHNjb3Bl
LCAiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVu
dCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHdyYXBwZWRFbGVtZW50LT5zZXRDdXN0
b21FbGVtZW50SXNSZXNvbHZlZCgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxl
bWVudENhbGxiYWNrKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0JiBwcm90b3R5cGUsIGNvbnN0
IElkZW50aWZpZXImIGlkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBjYWxsYmFjayA9
IHByb3RvdHlwZS5nZXQoJnN0YXRlLCBpZCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoY2FsbGJhY2suaXNVbmRlZmluZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFjYWxsYmFjay5pc0Z1bmN0aW9u
KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkEgY3Vz
dG9tIGVsZW1lbnQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkEgY3VzdG9tIGVsZW1lbnQg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAgICAgcmV0dXJuIGNhbGxiYWNrLmdldE9iamVjdCgpOwpAQCAtNTYsOCArNTksMTEg
QEAgc3RhdGljIEpTT2JqZWN0KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhYwogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy8jZG9tLWN1c3RvbWVsZW1lbnRyZWdpc3RyeS1kZWZpbmUKIEpT
VmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmluZShFeGVjU3RhdGUmIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lKHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCkBAIC02NSw3ICs3MSw3IEBAIEpT
VmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmluZSgKIAogICAgIEpTVmFsdWUgY29u
c3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGlmICghY29u
c3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEg
Y29uc3RydWN0b3IiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVj
dG9yIikpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0
T2JqZWN0KCk7CiAKICAgICAvLyBGSVhNRTogVGhyb3cgYSBUeXBlRXJyb3IgaWYgY29uc3RydWN0
b3IgZG9lc24ndCBpbmhlcml0IGZyb20gSFRNTEVsZW1lbnQuCkBAIC03NSwxMSArODEsMTEgQEAg
SlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogICAgIGNhc2UgQ3VzdG9t
RWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWls
dGluTmFtZXM6Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBzYW1lIGFzIG9uZSBvZiB0aGUg
YnVpbHRpbiBlbGVtZW50cyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0
YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBz
YW1lIGFzIG9uZSBvZiB0aGUgYnVpbHRpbiBlbGVtZW50cyIpKTsKICAgICBjYXNlIEN1c3RvbUVs
ZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Tm9IeXBoZW46Ci0gICAgICAgIHJldHVybiB0aHJv
d1N5bnRheEVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIG11
c3QgY29udGFpbiBhIGh5cGhlbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIG11c3QgY29u
dGFpbiBhIGh5cGhlbiIpKTsKICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0
YXR1czo6Q29udGFpbnNVcHBlckNhc2U6Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9y
KCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBjb250YWlu
IGFuIHVwcGVyIGNhc2UgbGV0dGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJv
cigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90
IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIiKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IENoZWNrIHJlLWVudHJhbmN5IGhlcmUuCkBAIC04NywyMSArOTMsMjAgQEAgSlNWYWx1ZSBKU0N1
c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogCiAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
JiByZWdpc3RyeSA9IHdyYXBwZWQoKTsKICAgICBpZiAocmVnaXN0cnkuZmluZEludGVyZmFjZShs
b2NhbE5hbWUpKSB7Ci0gICAgICAgIHRocm93Tm90U3VwcG9ydGVkRXJyb3Ioc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUg
c2FtZSB0YWcgbmFtZSIpKTsKKyAgICAgICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVu
dHMgd2l0aCB0aGUgc2FtZSB0YWcgbmFtZSIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQogCiAgICAgaWYgKHJlZ2lzdHJ5LmNvbnRhaW5zQ29uc3RydWN0b3IoY29uc3Ry
dWN0b3IpKSB7Ci0gICAgICAgIHRocm93Tm90U3VwcG9ydGVkRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUgc2Ft
ZSBjbGFzcyIpKTsKKyAgICAgICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0
aCB0aGUgc2FtZSBjbGFzcyIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
fQogCi0gICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QoKS0+dm0oKTsKICAgICBKU1ZhbHVlIHBy
b3RvdHlwZVZhbHVlID0gY29uc3RydWN0b3ItPmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IncyBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3QiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0
IikpOwogICAgIEpTT2JqZWN0JiBwcm90b3R5cGVPYmplY3QgPSAqYXNPYmplY3QocHJvdG90eXBl
VmFsdWUpOwogCiAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIEhU
TUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgs
MTggKzMzOCwyNCBAQCBKU1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4CiAK
IHZvaWQgc2V0RE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlRE9NRXhjZXB0aW9uKGV4ZWMsIGVjKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYykpOwogfQogCiB2b2lkIHNldERPTUV4Y2Vw
dGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JiBlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZWMuY29kZSB8fCBleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMuY29kZSwgZWMubWVzc2FnZSkpOwor
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywg
ZWMuY29kZSwgZWMubWVzc2FnZSkpOwogfQogCiAjdW5kZWYgVFJZX1RPX0NSRUFURV9FWENFUFRJ
T04KQEAgLTQzMCwxMyArNDM2LDE2IEBAIHN0YXRpYyBTdHJpbmcgcmFuZ2VFcnJvclN0cmluZyhk
b3VibGUgdmEKIAogc3RhdGljIGRvdWJsZSBlbmZvcmNlUmFuZ2UoRXhlY1N0YXRlJiBzdGF0ZSwg
ZG91YmxlIHgsIGRvdWJsZSBtaW5pbXVtLCBkb3VibGUgbWF4aW11bSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0p
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgcmFuZ2VFcnJvclN0cmlu
Zyh4LCBtaW5pbXVtLCBtYXhpbXVtKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICB4
ID0gdHJ1bmMoeCk7CiAgICAgaWYgKHggPCBtaW5pbXVtIHx8IHggPiBtYXhpbXVtKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBt
YXhpbXVtKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIHJhbmdlRXJy
b3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgcmV0dXJuIHg7CkBAIC00NzUsNiArNDg0LDkgQEAgc3RydWN0IEludFR5cGVMaW1pdHM8
dWludDE2X3Q+IHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21h
bGxlckludChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8VD46
OnZhbHVlLCAiU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3Igc2lnbmVkIGludGVncmFsIHR5cGVzIik7
CiAKICAgICB0eXBlZGVmIEludFR5cGVMaW1pdHM8VD4gTGltaXRzVHJhaXQ7CkBAIC00ODcsNyAr
NDk5LDcgQEAgc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUmIAogICAgICAg
ICBjYXNlIE5vcm1hbENvbnZlcnNpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBFbmZvcmNlUmFuZ2U6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgY2FzZSBDbGFtcDoKICAgICAgICAgICAgIHJldHVybiBkIDwgTGltaXRz
VHJhaXQ6Om1pblZhbHVlID8gTGltaXRzVHJhaXQ6Om1pblZhbHVlIDogTGltaXRzVHJhaXQ6Om1h
eFZhbHVlOwpAQCAtNTIxLDYgKzUzMyw5IEBAIHN0YXRpYyBpbmxpbmUgVCB0b1NtYWxsZXJJbnQo
RXhlY1N0YXRlJiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21h
bGxlclVJbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlLCAiU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdW5zaWduZWQgaW50ZWdyYWwgdHlw
ZXMiKTsKIAogICAgIHR5cGVkZWYgSW50VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTUz
Myw3ICs1NDgsNyBAQCBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmCiAg
ICAgICAgIGNhc2UgTm9ybWFsQ29udmVyc2lvbjoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUPihkKTsKICAgICAgICAgY2FzZSBFbmZvcmNlUmFuZ2U6Ci0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBDbGFtcDoKICAgICAg
ICAgICAgIHJldHVybiBMaW1pdHNUcmFpdDo6bWF4VmFsdWU7CkBAIC03NjIsNiArNzc3LDkgQEAg
RE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgY2FuQWNjZXNzRG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEb2N1bWVudCog
dGFyZ2V0RG9jdW1lbnQsIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHJlcG9ydGluZ09wdGlvbikK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXRhcmdldERvY3VtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTc3Miw3ICs3OTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuQWNj
ZXNzRG9jdW1lbnQoSlNDCiAKICAgICBzd2l0Y2ggKHJlcG9ydGluZ09wdGlvbikgewogICAgIGNh
c2UgVGhyb3dTZWN1cml0eUVycm9yOgotICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKnN0YXRl
LCB0YXJnZXREb2N1bWVudC0+ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNz
YWdlKGFjdGl2ZSkpOworICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKnN0YXRlLCBzY29wZSwg
dGFyZ2V0RG9jdW1lbnQtPmRvbVdpbmRvdygpLT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2Fn
ZShhY3RpdmUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMb2dTZWN1cml0eUVycm9yOgog
ICAgICAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHRhcmdldERvY3VtZW50LT5mcmFtZSgp
LCB0YXJnZXREb2N1bWVudC0+ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNz
YWdlKGFjdGl2ZSkpOwpAQCAtNzk5LDkgKzgxNyw5IEBAIGJvb2wgQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1QKICAgICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50
KHN0YXRlLCAmdGFyZ2V0LT5kb2N1bWVudCgpLCBMb2dTZWN1cml0eUVycm9yKTsKIH0KICAgICAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0aHJvd1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRo
cm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoJnN0YXRlLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KCZzdGF0ZSwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEFy
Z3VtZW50TXVzdEJlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQpAQCAtODM2LDc1ICs4NTQsNzUgQEAgdm9pZCByZXBv
cnREZXByZWNhdGVkU2V0dGVyRXJyb3IoSlNDOjpFeAogICAgIGNvbnRleHQuYWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBzZXQgcHJvcGVydHkgJyIsIGF0dHJpYnV0ZU5hbWUsICIn
IG9uIGEgbm9uLSIsIGludGVyZmFjZU5hbWUsICIgb2JqZWN0LiIpKTsKIH0KIAotdm9pZCB0aHJv
d05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogbWVz
c2FnZSkKK3ZvaWQgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgQVNT
RVJUKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSk7CiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcobWVz
c2FnZSk7Ci0gICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZURPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSLCAmbWVzc2FnZVN0cmluZykpOworICAg
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUs
IE5PVF9TVVBQT1JURURfRVJSLCAmbWVzc2FnZVN0cmluZykpOwogfQogCi12b2lkIHRocm93SW52
YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdl
KQordm9pZCB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQo
IXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdl
KTsKLSAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CisgICAgdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5W
QUxJRF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CiB9CiAKLXZvaWQgdGhyb3dTZWN1cml0
eUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9p
ZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFzdGF0ZS5o
YWRFeGNlcHRpb24oKSk7Ci0gICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFNFQ1VSSVRZX0VSUiwgbWVzc2FnZSkpOworICAgIHRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFNF
Q1VSSVRZX0VSUiwgbWVzc2FnZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJn
dW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1
bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
SW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBl
Y3RlZFZhbHVlcykKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVmFsdWVzKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBh
cHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUs
IGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIm9uZSBvZjogIik7CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRWYWx1ZXMp
OwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygp
KTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBidWlsZGVyLnRv
U3RyaW5nKCkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRl
eCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnRO
YW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUp
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJl
KGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgaW50ZXJmYWNlTmFtZSwgZnVu
Y3Rpb25OYW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImEgZnVuY3Rpb24iKTsKLSAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgYnVpbGRlci50b1N0cmlu
ZygpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciog
YXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQorSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciog
YXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQogewogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBhcmd1
bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25O
YW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImFuIGluc3RhbmNlIG9mICIpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKGV4cGVjdGVkVHlwZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgdGhyb3dB
cnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQordm9pZCB0aHJvd0Fy
cmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlIikpOwogfQogCi12
b2lkIHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRUeXBlKQordm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlw
ZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVy
ZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBpbnN0
YW5jZSBvZiAiLCBleHBlY3RlZFR5cGUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUs
ICIgYXR0cmlidXRlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgZXhwZWN0ZWRUeXBlKSk7CiB9
CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSkKIHsKLSAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJnN0YXRl
LCBtYWtlU3RyaW5nKGludGVyZmFjZU5hbWUsICIgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVj
dXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKSk7CisgICAgcmV0dXJuIHRocm93Vk1FcnJv
cigmc3RhdGUsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmco
aW50ZXJmYWNlTmFtZSwgIiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0
IGlzIHVuYXZhaWxhYmxlIikpKTsKIH0KIAotdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBl
RXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7Cisg
ICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlZhbHVlIGlzIG5v
dCBhIHNlcXVlbmNlIikpOwogfQogCi12b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEV4ZWNT
dGF0ZSYgc3RhdGUpCit2b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIlRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlIikpOworICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHByb3ZpZGVk
IHZhbHVlIGlzIG5vbi1maW5pdGUiKSk7CiB9CiAKIFN0cmluZyBtYWtlR2V0dGVyVHlwZUVycm9y
TWVzc2FnZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVO
YW1lKQpAQCAtOTEyLDE0ICs5MzAsMTQgQEAgU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNz
YWdlKGNvbnN0IAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwg
Jy4nLCBhdHRyaWJ1dGVOYW1lLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCBpbnRlcmZhY2VOYW1lKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0dl
dHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRl
TmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIG1ha2VHZXR0ZXJU
eXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBtYWtlR2V0dGVyVHlwZUVycm9yTWVz
c2FnZShpbnRlcmZhY2VOYW1lLCBhdHRyaWJ1dGVOYW1lKSk7CiB9CiAKLWJvb2wgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQorYm9vbCB0aHJvd1NldHRlclR5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgdGhy
b3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLics
IGF0dHJpYnV0ZU5hbWUsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsIGludGVyZmFjZU5hbWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIG1h
a2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgc2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkyOCw5ICs5NDYsOSBAQCBTdHJpbmcgbWFrZVRo
aXNUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNhbiBv
bmx5IGNhbGwgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBmdW5jdGlvbk5hbWUsICIgb24gaW5zdGFu
Y2VzIG9mICIsIGludGVyZmFjZU5hbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCitFbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25z
dCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCiB7Ci0gICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoaW50
ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgbWFrZVRoaXNUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGZ1bmN0
aW9uTmFtZSkpOwogfQogCiB2b2lkIGNhbGxGdW5jdGlvbldpdGhDdXJyZW50QXJndW1lbnRzKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgdGhpc09iamVjdCwgSlNDOjpKU0Z1
bmN0aW9uJiBmdW5jdGlvbikKQEAgLTk1NSw3ICs5NzMsOSBAQCB2b2lkIERPTUNvbnN0cnVjdG9y
SlNCdWlsdGluT2JqZWN0Ojp2aXNpCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVy
YXRvciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvciIpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsMjUgKzExMywyNSBAQCBET01XaW5kb3cmIGZpcnN0RE9NV2luZG93KEpTQzo6RXhlY1N0YXRl
CiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0
IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnREZXByZWNh
dGVkU2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKIAotdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Ci12b2lkIHRocm93SW52
YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLXZv
aWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLXZvaWQgdGhy
b3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5
cGUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmli
dXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJik7Ci12b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpT
VmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVmFsdWVzKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11
c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4
LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVHlwZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0b3JT
Y3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUpOwordm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Cit2
b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2Nv
cGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsKK3ZvaWQgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBl
eHBlY3RlZFR5cGUpOworV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9y
KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJik7CitXRUJDT1JFX0VYUE9SVCBib29s
IHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpUaHJvd1Njb3BlJik7Cit2b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK1dFQkNP
UkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFs
dWVzKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCB1bnNpZ25lZCBhcmd1bWVudElu
ZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3Vt
ZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUpOwogCiBTdHJpbmcgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiBTdHJpbmcgbWFrZVRo
aXNUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUpOwogCi1XRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CitXRUJDT1JFX0VY
UE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogYXR0cmlidXRlTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVl
IHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CiAKIFdF
QkNPUkVfRVhQT1JUIEpTQzo6U3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01H
bG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwogV0VCQ09SRV9FWFBPUlQgSlND
OjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpT
dHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwpAQCAtNDkwLDkgKzQ5MCwxMiBAQCBp
bmxpbmUgaW50MzJfdCBmaW5pdGVJbnQzMlZhbHVlKEpTQzo6SlNWCiAvLyBWYWxpZGF0ZXMgdGhh
dCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24gNC4xLjEz
IG9mIHRoZSBXZWJJREwgc3BlYy4KIGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2Uo
SlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0
aCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSB2YWx1
ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICB0aHJvd1NlcXVlbmNl
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC01MDEsNyArNTA0LDcg
QEAgaW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2Vx
dWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTcxOCwyNSArNzIxLDMzIEBAIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVl
VHJhaXRzPGRvdWIKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUPiBWZWN0b3I8
UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6
OkpTVmFsdWUgdmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gVmVj
dG9yPFJlZlB0cjxUPj4oKTsKICAgICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPFQ+PiByZXN1bHQ7
Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoJmV4ZWMsIHZhbHVlLCBbJnJlc3VsdF0oSlNDOjpWTSYs
IEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpIHsKKyAgICBmb3JF
YWNoSW5JdGVyYWJsZSgmZXhlYywgdmFsdWUsIFsmcmVzdWx0XShKU0M6OlZNJiB2bSwgSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0M6OkpTVmFsdWUganNWYWx1ZSkgeworICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgaWYgKGpzVmFsdWUuaW5o
ZXJpdHMoSlNUOjppbmZvKCkpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChKU1Q6OnRvV3Jh
cHBlZChqc1ZhbHVlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93QXJyYXlFbGVt
ZW50VHlwZUVycm9yKCpzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd0FycmF5RWxlbWVudFR5cGVF
cnJvcigqc3RhdGUsIHNjb3BlKTsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0
ZSYgZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIFZlY3RvcjxUPigpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ1LDcgKzQ2
LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgIHsKLSAg
ICAgICAgSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgY29u
c3RydWN0b3IiKSk7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICBKU0M6OnRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgY29uc3RydWN0b3Ii
KSk7CiAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzTnVsbCgpKTsK
ICAgICB9CiAKQEAgLTIyNiw4ICsyMjksMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4g
aW5saW5lIEpTQzo6RQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCogb2JqZWN0KQogeworICAg
IEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0
cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Ioc3RhdGUsIGluZm8o
KS0+Y2xhc3NOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihzdGF0ZSwgc2NvcGUsIGluZm8oKS0+Y2xhc3NO
YW1lKTsKICAgICByZXR1cm4gY2FsbENvbnN0cnVjdG9yKHN0YXRlLCAqb2JqZWN0KTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3MywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgRW5hYmxlSWZGbG9hCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gaW5s
aW5lIFQqIGNvbnZlcnRXcmFwcGVyVHlwZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgSXNOdWxsYWJsZSBpc051bGxhYmxlKQogeworICAgIEpTQzo6Vk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVCogb2JqZWN0ID0gSlNUOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmICghb2JqZWN0ICYm
IChpc051bGxhYmxlID09IElzTnVsbGFibGU6Ok5vIHx8ICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApAQCAtMjc1LDkg
KzI3NywxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDY0X3Q+IDogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZT4gOiBEZWZhdWx0Q29u
dmVydGVyPFQ+IHsKICAgICBzdGF0aWMgVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKICAgICB7Cisg
ICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUudG9O
dW1iZXIoJnN0YXRlKTsKICAgICAgICAgaWYgKGFsbG93ID09IFNob3VsZEFsbG93Tm9uRmluaXRl
OjpObyAmJiBVTkxJS0VMWSghc3RkOjppc2Zpbml0ZShudW1iZXIpKSkKLSAgICAgICAgICAgIHRo
cm93Tm9uRmluaXRlVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgICAgIHRocm93Tm9uRmluaXRl
VHlwZUVycm9yKHN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihu
dW1iZXIpOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JdGVyYXRvci5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSArMTMxLDEyIEBAIEpTQzo6RW5j
b2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzoKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JDcmVhdGUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBJdGVyYXRpb25LaW5kIGtpbmQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byB3cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0
PEpTV3JhcHBlcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXdyYXBw
ZXIpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBKU1dyYXBwZXI6
OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwg
cHJvcGVydHlOYW1lKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKndy
YXBwZXItPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShK
U0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxPYmplY3Qudm0oKSwgZ2V0RE9N
U3RydWN0dXJlPEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPj4oZ2xvYmFsT2JqZWN0LnZtKCksIGds
b2JhbE9iamVjdCksICp3cmFwcGVyLCBraW5kKSk7CiB9CkBAIC0xODAsOSArMTg0LDEyIEBAIGFw
cGVuZEZvckVhY2hBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHMKIHRlbXBsYXRlPHR5cGVuYW1l
IEpTV3JhcHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQogeworICAgIEpTQzo6Vk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFz
c05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBKU1dyYXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUp
OwogCiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxiYWNrID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAg
SlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOwpAQCAtMTkwLDcgKzE5
Nyw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzoKICAgICBKU0M6
OkNhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6
Q2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAg
YXV0byBpdGVyYXRvciA9IHdyYXBwZXItPndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOwogICAg
IHdoaWxlIChhdXRvIHZhbHVlID0gaXRlcmF0b3IubmV4dCgpKSB7CkBAIC0yMjYsOSArMjMzLDEy
IEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj46Om4KIHRlbXBsYXRlPHR5
cGVuYW1lIEpTV3JhcHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RP
TUl0ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlcj46Om5leHQoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
KQogeworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byBpdGVyYXRvciA9IEpTQzo6anNEeW5h
bWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkgb24g
YSBub24tSXRlcmF0b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y2FsbCBuZXh0KCkgb24gYSBub24tSXRlcmF0b3Igb2JqZWN0IikpKTsKIAogICAgIHJldHVybiBK
U0M6OkpTVmFsdWU6OmVuY29kZShpdGVyYXRvci0+bmV4dCgqc3RhdGUpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUganNET01XaW5kb3dXZWJLaXQoCiAKIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0
T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2VzcyhKU0RPTVdpbmRvdyogdGhpc09iamVjdCwg
RnJhbWUqIGZyYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICAvLyBXZSBkb24ndCB3YW50IGFueSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3Nl
IiBhbmQgImNsb3NlZCIgb24gYSBmcmFtZWxlc3Mgd2luZG93CiAgICAgLy8gKGkuZS4gb25lIHdo
b3NlIHBhZ2UgZ290IGNsb3NlZCwgb3Igd2hvc2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAv
LyBGSVhNRTogVGhpcyBoYW5kbGluZyBmb3IgZnJhbWVsZXNzIHdpbmRvd3MgZHVwbGljYXRlcyBz
aW1pbGFyIGJlaGF2aW91ciBmb3IgY3Jvc3Mtb3JpZ2luCkBAIC0xMzUsNyArMTM4LDcgQEAgc3Rh
dGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogICAgICAgICAvLyBGb3IgYW55
IG90aGVyIGVudHJpZXMgaW4gdGhlIHN0YXRpYyBwcm9wZXJ0eSB0YWJsZSwgZGVueSBhY2Nlc3Mu
IChFYXJseSByZXR1cm4gYWxzbyBwcmV2ZW50cwogICAgICAgICAvLyBuYW1lZCBnZXR0ZXIgZnJv
bSByZXR1cm5pbmcgZnJhbWVzIHdpdGggbWF0Y2hpbmcgbmFtZXMgLSB0aGlzIHNlZW1zIGEgbGl0
dGxlIHF1ZXN0aW9uYWJsZSwgc2VlCiAgICAgICAgIC8vIEZJWE1FIGNvbW1lbnQgb24gcHJvdG90
eXBlIHNlYXJjaCBiZWxvdy4pCi0gICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJy
b3JNZXNzYWdlKTsKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTQ5LDcgKzE1Miw3IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93
R2V0T3duUHJvcGVydHlTbG8KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGhy
b3dTZWN1cml0eUVycm9yKCpleGVjLCBlcnJvck1lc3NhZ2UpOworICAgIHRocm93U2VjdXJpdHlF
cnJvcigqZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRlZmluZWQo
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIzMCw2ICsyMzMsOSBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluCiAKIGJvb2wgSlNET01XaW5kb3c6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICgh
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTI0Myw3ICsyNDksNyBAQCBib29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQotICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIGVycm9y
TWVzc2FnZSk7CisgICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgc2NvcGUsIGVycm9y
TWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQzNCw4ICs0NDAs
MTEgQEAgaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdQogCiBKU1ZhbHVl
IEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogCiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQpAQCAtNDU1LDggKzQ2NCwxMSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93
TW9kYWxEaWFsb2coRXhlCiAKIHN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdp
bmRvdyYgaW1wbCwgRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgTWVzc2FnZVBv
cnRBcnJheSBtZXNzYWdlUG9ydHM7CiAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7
CkBAIC01MDIsOCArNTE0LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4
ZWNTdGEKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0
eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGds
b2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kpOwpAQCAtNTI0LDgg
KzUzOSwxMSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0CiAKIEpT
VmFsdWUgSlNET01XaW5kb3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0g
d3JhcHBlZCgpLmRvY3VtZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rp
b24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCktPndvcmxkKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ5LDEwICs0OSwxMyBAQCB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0
YXRlJiBzdGF0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNEYXRh
Q3VlKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JP
YmplY3QqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNh
bGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKGV4ZWMuYXJndW1lbnRD
b3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAK
ICAgICBkb3VibGUgc3RhcnRUaW1lKGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIo
JmV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy5oYWRFeGNlcHRpb24oKSkpCkBAIC02NCwx
MyArNjcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJv
d0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywg
IkRhdGFDdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFDdWUiKTsKIAogICAg
IFN0cmluZyB0eXBlOwogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIGlmIChleGVjLmFy
Z3VtZW50Q291bnQoKSA+IDMpIHsKICAgICAgICAgaWYgKCFleGVjLnVuY2hlY2tlZEFyZ3VtZW50
KDMpLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihleGVjLCAzLCAidHlwZSIsICJEYXRhQ3VlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDMsICJ0
eXBlIiwgIkRhdGFDdWUiLCBudWxscHRyLCAiRE9NU3RyaW5nIik7CiAgICAgICAgIHR5cGUgPSBl
eGVjLnVuY2hlY2tlZEFyZ3VtZW50KDMpLmdldFN0cmluZygmZXhlYyk7CiAgICAgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3OSw5ICsxNzksMTIgQEAgdm9pZCBKU0RpY3Rpb25hcnk6
OmNvbnZlcnRWYWx1ZShFeGVjU3RhdAogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1
bHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byogd2luZG93ID0gSlNET01XaW5kb3c6OnRv
V3JhcHBlZCgqc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXdpbmRvdykgJiYgIXZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgIkRpY3Rpb25hcnkgbWVtYmVyIGlzIG5vdCBvZiB0eXBlIFdpbmRvdyIpOworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkRpY3Rpb25hcnkgbWVtYmVyIGlzIG5vdCBv
ZiB0eXBlIFdpbmRvdyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlc3VsdCA9IHdp
bmRvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0x
MzAsMTIgKzEzMCwxNSBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91
Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIHRvdWNo
TGlzdCA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGF1dG8qIGl0ZW0gPSBKU1Rv
dWNoOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgICAgICBpZiAo
IWl0ZW0pCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRU
eXBlRXJyb3Ioc3RhdGUsIGksICJ0b3VjaGVzIiwgIkRvY3VtZW50IiwgImNyZWF0ZVRvdWNoTGlz
dCIsICJUb3VjaCIpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dB
cmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIGksICJ0b3VjaGVzIiwgIkRvY3VtZW50Iiwg
ImNyZWF0ZVRvdWNoTGlzdCIsICJUb3VjaCIpKTsKIAogICAgICAgICB0b3VjaExpc3QtPmFwcGVu
ZCgqaXRlbSk7CiAgICAgfQpAQCAtMTQ1LDggKzE0OCwxMSBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6
OmNyZWF0ZVRvdWNoTGlzdChFeGVjCiAKIEpTVmFsdWUgSlNEb2N1bWVudDo6Z2V0Q1NTQ2FudmFz
Q29udGV4dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICBhdXRvIGNvbnRl
eHRJZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE3ICs0MywyMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNGaWxlKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byogY29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAg
ICBBU1NFUlQoY29uc3RydWN0b3IpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IGNvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFj
b250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRVbmF2YWlsYWJsZUVycm9yKGV4ZWMsICJGaWxlIik7CisgICAgICAgIHJldHVybiB0aHJv
d0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywg
c2NvcGUsICJGaWxlIik7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAg
ICBKU1ZhbHVlIGFyZyA9IGV4ZWMuYXJndW1lbnQoMCk7CiAgICAgaWYgKGFyZy5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAw
LCAiZmlsZUJpdHMiLCAiRmlsZSIsIG51bGxwdHIsICJzZXF1ZW5jZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMCwgImZpbGVCaXRzIiwgIkZp
bGUiLCBudWxscHRyLCAic2VxdWVuY2UiKTsKIAogICAgIHVuc2lnbmVkIGJsb2JQYXJ0c0xlbmd0
aCA9IDA7CiAgICAgSlNPYmplY3QqIGJsb2JQYXJ0cyA9IHRvSlNTZXF1ZW5jZShleGVjLCBhcmcs
IGJsb2JQYXJ0c0xlbmd0aCk7CkBAIC02Myw3ICs2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlMKIAogICAgIGFyZyA9IGV4ZWMuYXJndW1lbnQoMSk7CiAgICAg
aWYgKGFyZy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihleGVjLCAxLCAiZmlsZW5hbWUiLCAiRmlsZSIsIG51bGxwdHIsICJET01TdHJpbmciKTsK
KyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDEsICJm
aWxlbmFtZSIsICJGaWxlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOwogCiAgICAgU3RyaW5nIGZp
bGVuYW1lID0gYXJnLnRvV1RGU3RyaW5nKCZleGVjKS5yZXBsYWNlKCcvJywgJzonKTsKICAgICBp
ZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKQEAgLTc2LDcgKzc5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgIGlmICghYXJnLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKICAgICAgICAgSlNPYmplY3QqIGZpbGVQcm9wZXJ0eUJhZ09iamVjdCA9IGFyZy5nZXRP
YmplY3QoKTsKICAgICAgICAgaWYgKCFmaWxlUHJvcGVydHlCYWdPYmplY3QpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAyLCAib3B0aW9ucyIsICJGaWxl
IiwgbnVsbHB0ciwgIkZpbGVQcm9wZXJ0eUJhZyIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDIsICJvcHRpb25zIiwgIkZpbGUiLCBudWxs
cHRyLCAiRmlsZVByb3BlcnR5QmFnIik7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaWN0aW9u
YXJ5IHdyYXBwZXIgZnJvbSB0aGUgaW5pdGlhbGl6ZXIgb2JqZWN0LgogICAgICAgICBKU0RpY3Rp
b25hcnkgZGljdGlvbmFyeSgmZXhlYywgZmlsZVByb3BlcnR5QmFnT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0LDgg
KzEwNCwxMSBAQCBib29sIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlCiAKIEpT
VmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAKICAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KCphcmd1bWVudC5pbXBsKCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTcxLDggKzcxLDExIEBAIHN0YXRp
YyB2b2lkIGdldDNEQ29udGV4dEF0dHJpYnV0ZXMoRXhlY1MKIAogSlNWYWx1ZSBKU0hUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5n
JiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpOwpAQCAtOTQsOCArOTcsMTEgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KAogCiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnByb2JhYmx5U3VwcG9ydHND
b250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Miw2
ICsxNTIsOSBAQCBzdGF0aWMgRG9jdW1lbnQqIGZpbmRDYWxsaW5nRG9jdW1lbnQoRXhlCiAKIEpT
VmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgYnJvd3NlcnMsIHBhc3Mg
b3BlbiBjYWxscyB3aXRoIG1vcmUgdGhhbiAyIHBhcmFtZXRlcnMgdG8gdGhlIHdpbmRvdy4KICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID4gMikgewogICAgICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gd3JhcHBlZCgpLmZyYW1lKCkpIHsKQEAgLTE2MSw3ICsxNjQsNyBAQCBKU1ZhbHVlIEpT
SFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSYgCiAgICAgICAgICAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSA6OmdldENhbGxE
YXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU0M6OmNhbGwoJnN0YXRlLCBm
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB3cmFwcGVyLCBBcmdMaXN0KCZzdGF0ZSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDMwICs0MywzMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogI2lmIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTSFRNTEVsZW1lbnQoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBh
dXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5j
YWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3RydWN0b3IpOwogCiAgICAgYXV0byogY29udGV4
dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgIkhUTUxFbGVtZW50Iik7CisgICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
ZXhlYywgc2NvcGUsICJIVE1MRWxlbWVudCIpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpOwogCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRl
eHQpOwogCiAgICAgYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAgaWYg
KCF3aW5kb3cpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJSUxp
dGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0
b3IiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJuZXcudGFyZ2V0IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yIikpOwogCiAgICAgYXV0byogcmVnaXN0cnkgPSB3aW5kb3ctPmN1c3RvbUVsZW1lbnRS
ZWdpc3RyeSgpOwogICAgIGlmICghcmVnaXN0cnkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3Vz
dG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGlzIG5vdCBhIHZhbGlk
IGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIikpOwogCi0gICAgVk0mIHZtID0gZXhlYy52bSgp
OwogICAgIEpTVmFsdWUgbmV3VGFyZ2V0VmFsdWUgPSBleGVjLnRoaXNWYWx1ZSgpOwogICAgIEpT
T2JqZWN0KiBuZXdUYXJnZXQgPSBuZXdUYXJnZXRWYWx1ZS5nZXRPYmplY3QoKTsKICAgICBhdXRv
KiBlbGVtZW50SW50ZXJmYWNlID0gcmVnaXN0cnktPmZpbmRJbnRlcmZhY2UobmV3VGFyZ2V0KTsK
ICAgICBpZiAoIWVsZW1lbnRJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgZG9lcyBub3QgZGVmaW5lIGEgY3Vz
dG9tIGVsZW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBhIGN1c3RvbSBl
bGVtZW50IikpOwogCiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlLT5pc1VwZ3JhZGluZ0VsZW1l
bnQoKSkgewogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9i
YWxPYmplY3QoKTsKQEAgLTg0LDcgKzg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKUwogCiAgICAgRWxlbWVudCogZWxlbWVudFRvVXBncmFkZSA9IGVsZW1lbnRJ
bnRlcmZhY2UtPmxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOwogICAgIGlmICghZWxl
bWVudFRvVXBncmFkZSkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGl0
cyBvd24gY29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIikpOworICAgICAgICB0aHJvd0ludmFs
aWRTdGF0ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBpbnN0YW50aWF0
ZSBhIGN1c3RvbSBlbGVtZW50IGluc2lkZSBpdHMgb3duIGNvbnN0cmN1dG9yIGR1cmluZyB1cGdy
YWRlcyIpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Niw4ICs1NiwxMSBAQCBib29s
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHCiAKIEpTVmFsdWUgSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKHN0YXRlLCB0aGlzLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJp
bmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5l
ZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNTQgKzM1LDcyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0
ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBp
bnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBqc051bWJlcihpbnB1dC5z
ZWxlY3Rpb25TdGFydCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVj
dGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlu
cHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpbnB1dC5zZXRT
ZWxlY3Rpb25TdGFydCh2YWx1ZS50b0ludDMyKCZzdGF0ZSkpOwogfQogCiBKU1ZhbHVlIEpTSFRN
TElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAg
ICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKIAogICAgIHJldHVybiBqc051bWJlcihpbnB1dC5zZWxlY3Rpb25FbmQoKSk7CiB9CiAK
IHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQm
IGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlKTsKIAogICAgIGlucHV0LnNldFNlbGVjdGlvbkVuZCh2YWx1ZS50b0ludDMy
KCZzdGF0ZSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGly
ZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1M
SW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVT
ZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbigpKTsKIH0K
IAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSFRNTElucHV0
RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0
aW9uKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkx
LDEyICsxMDksMTUgQEAgdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcgog
CiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVu
dENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSk7CiAKICAgICBpbnQgc3RhcnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaW50IGVuZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSGlzdG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUs
OSArNTUsMTIgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdAogCiBK
U1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBhdXRvIGFyZ0NvdW50ID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwogICAgIGlm
IChVTkxJS0VMWShhcmdDb3VudCA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGhpc3RvcnlTdGF0ZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCksIDAsIDApOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTg2LDkg
Kzg5LDEyIEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiAKIAogSlNW
YWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgYXV0byBhcmdDb3VudCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoYXJnQ291bnQgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBoaXN0b3J5U3RhdGUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEyIE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVsQDY4ay5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDcsOCArNDgsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRD
b3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgU3RyaW5nIG5hbWUgPSBzdGF0ZS5hcmd1bWVudCgwKS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKQEAgLTU2LDcgKzYwLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmpl
Y3RTdG9yZQogCiAgICAgSlNWYWx1ZSBvcHRpb25zVmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgxKTsK
ICAgICBpZiAoIW9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFvcHRpb25zVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgIk5v
dCBhbiBvYmplY3QuIik7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlLCAiTm90IGFuIG9iamVjdC4iKTsKIAogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBi
b29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ2LDEwICs0NiwxMyBA
QCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNJbWFnZUNvbnN0cnVjdG9yOjpwCiAKIHRlbXBsYXRlPD4g
RW5jb2RlZEpTVmFsdWUgSlNJbWFnZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0ltYWdlQ29uc3RydWN0b3IqIGpzQ29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8SlNJbWFnZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBqc0NvbnN0cnVjdG9yLT5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKHN0YXRlLCAiSW1hZ2UgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVu
dCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
c2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKHN0YXRlLCAiSW1hZ2UgY29uc3RydWN0b3IgYXNz
b2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKIAogICAgIC8vIENhbGxpbmcgdG9K
UyBvbiB0aGUgZG9jdW1lbnQgY2F1c2VzIHRoZSBKUyBkb2N1bWVudCB3cmFwcGVyIHRvIGJlCiAg
ICAgLy8gYWRkZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUg
dGhhdCBKU0RvY3VtZW50Ojp2aXNpdApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEZy
YW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKICAgICAg
ICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKQEAgLTU1LDcgKzU4LDcgQEAgYm9vbCBKU0xvY2F0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIG1lc3NhZ2UpOworICAgIHRocm93U2VjdXJp
dHlFcnJvcigqZXhlYywgc2NvcGUsIG1lc3NhZ2UpOwogICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1OCw4ICszNTgsMTEgQEAgc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50
cyhjb25zdCBEaWN0aQogCiBKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJv
d1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBhdXRvIGNvbnN0cmFpbnRzRGljdGlvbmFyeSA9IERpY3Rpb25h
cnkoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxMCArNDEsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpn
ZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBKU01lZGlhU3RyZWFtVHJhY2sq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRpYVN0cmVhbVRyYWNrIiwg
ImdldFNldHRpbmdzIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhp
c1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdz
IikpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTEwMiwxMCAr
MTA1LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNhcGFiaWxpdHlWYWx1ZShjb25zdCBDYXAKIAogSlND
OjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRo
aXNWYWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5
cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAw
OSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTU5LDYgKzU5LDkgQEAgSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdl
KAogCiB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJyYXksIEFycmF5QnVmZmVy
QXJyYXkmIGFycmF5QnVmZmVycykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIENvbnZlcnQgZnJv
bSB0aGUgcGFzc2VkLWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgTWVzc2FnZVBvcnRBcnJh
eS4KICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4x
MyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUg
SFRNTDUgc3BlYy4KICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewpAQCAtOTUs
NyArOTgsNyBAQCB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlCiAgICAg
ICAgICAgICBpZiAoUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZm
ZXIodmFsdWUpKQogICAgICAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoV1RGTW92ZShh
cnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVzc2FnZVBvcnRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01MCw4ICs1MSwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIEpT
Qzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQqIGlt
cGwpCiAgICAgeworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGUu
dm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBKU1Zh
bHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjCiAKIHZvaWQgSlNNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlIHsgY29u
dmVydDx1aW50OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0LDcgKzc3LDcgQEAgdm9p
ZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlYwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMg
bm90IGEgdmFsaWQgZGVjaXNpb25Qb2ludCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOworICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2
YWxpZCBkZWNpc2lvblBvaW50IHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNpb24gZGVjaXNpb24pCkBAIC05MSw2ICs5NCw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNpb24KIAogc3RhdGljIGlu
bGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlIHsgY29udmVydDx1aW50
OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7CkBAIC0xMDIsNyArMTA4
LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdAogICAgICAgICBy
ZXR1cm4gZGVjaXNpb247CiAgICAgfQogCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJp
bmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFs
dWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgi
JXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFsdWUpKTsKICAgICBy
ZXR1cm4gRGVjaXNpb246OkFsbG93OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01vZHVsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
Myw2ICsxMDMsOSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6CiAK
IEpTQzo6SlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1Zh
bHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUpCiB7Cisg
ICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9y
dCBKU01vZHVsZVJlY29yZC4KICAgICAvLyBPbmNlIHRoZSByZWZsZWN0aXZlIHBhcnQgb2YgdGhl
IG1vZHVsZSBsb2FkZXIgaXMgc3VwcG9ydGVkLCB3ZSB3aWxsIGhhbmRsZSBhcmJpdHJhcnkgdmFs
dWVzLgogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlZ2lzdHJ5LXBy
b3RvdHlwZS1wcm92aWRlCkBAIC0xMTYsMTAgKzExOSwxMCBAQCBKU0M6OkpTVmFsdWUgSlNNb2R1
bGVMb2FkZXI6OmV2YWx1YXRlKEpTCiAgICAgZWxzZSBpZiAobW9kdWxlS2V5VmFsdWUuaXNTdHJp
bmcoKSkKICAgICAgICAgc291cmNlVXJsID0gVVJMKFVSTCgpLCBhc1N0cmluZyhtb2R1bGVLZXlW
YWx1ZSktPnZhbHVlKGV4ZWMpKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBKU0M6OnRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTW9kdWxlIGtleSBpcyBub3QgU3ltYm9sIG9y
IFN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJvbCBvciBTdHJpbmcuIikp
OwogCiAgICAgaWYgKCFzb3VyY2VVcmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gSlNDOjp0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgYW4gaW52YWxp
ZCBVUkwuIikpOworICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJNb2R1bGUga2V5IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKIAogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZXZhbHVhdGluZyBtb2R1bGUgY29kZS4KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ0LDE5ICs0NSwy
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy51
bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBpZiAoIW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9i
amVjdCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihleGVjLCAwLCAiY2FsbGJhY2siLCAiTXV0YXRpb25PYnNlcnZlciIs
IG51bGxwdHIsICJNdXRhdGlvbkNhbGxiYWNrIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiTXV0YXRpb25PYnNlcnZl
ciIsIG51bGxwdHIsICJNdXRhdGlvbkNhbGxiYWNrIik7CiAKICAgICBET01Db25zdHJ1Y3Rvck9i
amVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMu
Y2FsbGVlKCkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU011dGF0aW9uQ2FsbGJhY2s6OmNyZWF0
ZShvYmplY3QsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpKTsKICAgICBKU09iamVjdCog
anNPYnNlcnZlciA9IGFzT2JqZWN0KHRvSlNOZXdseUNyZWF0ZWQoJmV4ZWMsIGpzQ29uc3RydWN0
b3ItPmdsb2JhbE9iamVjdCgpLCBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoV1RGTW92ZShjYWxs
YmFjaykpKSk7CiAgICAgUHJpdmF0ZU5hbWUgcHJvcGVydHlOYW1lOwotICAgIGpzT2JzZXJ2ZXIt
PnB1dERpcmVjdChqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+dm0oKSwgcHJvcGVydHlO
YW1lLCBvYmplY3QpOworICAgIGpzT2JzZXJ2ZXItPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1l
LCBvYmplY3QpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNPYnNlcnZlcik7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA5LTIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTIsMTMgKzExMiwx
NiBAQCBib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSCiAKIEpTVmFsdWUg
SlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAg
SlNWYWx1ZSBuZXdDaGlsZFZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
YXV0byogbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChuZXdDaGlsZFZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIW5ld0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImluc2VydEJl
Zm9yZSIsICJOb2RlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJn
dW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAibm9kZSIsICJOb2RlIiwgImluc2VydEJl
Zm9yZSIsICJOb2RlIikpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKFVO
TElLRUxZKCF3cmFwcGVkKCkuaW5zZXJ0QmVmb3JlKCpuZXdDaGlsZCwgSlNOb2RlOjp0b1dyYXBw
ZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBlYykpKSB7CkBAIC0xMzIsMTYgKzEzNSwx
OSBAQCBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgCiAKIEpTVmFsdWUg
SlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAg
YXV0byogbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgSlNWYWx1ZSBvbGRDaGlsZFZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSk7CiAgICAgYXV0byogb2xkQ2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChvbGRDaGlsZFZh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NoaWxkIHx8ICFvbGRDaGlsZCkpIHsKICAgICAg
ICAgaWYgKCFuZXdDaGlsZCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhy
b3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJyZXBsYWNlQ2hp
bGQiLCAiTm9kZSIpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKHN0YXRlLCAxLCAiY2hpbGQiLCAiTm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAi
Tm9kZSIpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxk
IiwgIk5vZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJjaGlsZCIsICJOb2RlIiwgInJlcGxhY2VDaGls
ZCIsICJOb2RlIikpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTU2
LDEwICsxNjIsMTMgQEAgSlNWYWx1ZSBKU05vZGU6OnJlcGxhY2VDaGlsZChFeGVjU3RhdGUmIAog
CiBKU1ZhbHVlIEpTTm9kZTo6cmVtb3ZlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgY2hpbGRWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAg
IGF1dG8qIGNoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoY2hpbGRWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjaGlsZCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1
bWVudFR5cGVFcnJvcihzdGF0ZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAi
Tm9kZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAi
Tm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSgh
d3JhcHBlZCgpLnJlbW92ZUNoaWxkKCpjaGlsZCwgZWMpKSkgewpAQCAtMTczLDEwICsxODIsMTMg
QEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgcwogCiBKU1ZhbHVlIEpT
Tm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgbmV3Q2hpbGRWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIGF1dG8gbmV3
Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChuZXdDaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIW5ld0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKHN0YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImFwcGVuZENoaWxkIiwgIk5v
ZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIDAsICJub2RlIiwgIk5vZGUiLCAiYXBwZW5kQ2hpbGQiLCAiTm9k
ZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSghd3Jh
cHBlZCgpLmFwcGVuZENoaWxkKCpuZXdDaGlsZCwgZWMpKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDkgQEAgdWludDE2X3QgSlNOb2RlRmlsdGVyOjph
Y2NlcHROb2RlKE5vZGUqIAogewogICAgIFJlZjxKU05vZGVGaWx0ZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+
dm0oKSk7CisgICAgVk0mIHZtID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtNTQsNyAr
NTYsNyBAQCB1aW50MTZfdCBKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb25Pck9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhz
dGF0ZSwgImFjY2VwdE5vZGUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikgewogICAgICAgICAvLyBSZXRocm93IGV4Y2VwdGlvbi4KLSAgICAgICAgc3Rh
dGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAg
ICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0
LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtOTYsMTAgKzk2LDEyIEBAIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3Qo
RXhlY1N0YXRlKiAKICAgICAKIEVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTSFRNTEVsZW1lbnQqIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3Qo
ZXhlYywgdGhpc09iamVjdCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3QpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDE0
ICszNywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBQdWJsaWMgSlMgUmVhZGFibGVTdHJl
YW1SZWRlciBhbmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBj
YWxsYmFja3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIp
KTsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9y
IHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKEV4ZWNT
dGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAogICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0
cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkp
OwogICAgIGlmICghc3RyZWFtKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihleGVjLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVyIiwgbnVsbHB0ciwgIlJl
YWRhYmxlU3RyZWFtIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVyIiwgbnVsbHB0ciwg
IlJlYWRhYmxlU3RyZWFtIik7CiAKICAgICBKU1ZhbHVlIGpzRnVuY3Rpb24gPSBzdHJlYW0tPmdl
dCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgImdldFJlYWRlciIpKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
VkdMZW5ndGhDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDcsMTMgKzQ4LDE2IEBAIEpTVmFsdWUgSlNTVkdM
ZW5ndGg6OnZhbHVlKEV4ZWNTdGF0ZSYgc3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmlzTnVtYmVy
KCkgJiYgIXZhbHVlLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0
YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNzIsNiArNzYsOSBAQCB2b2lkIEpTU1ZHTGVuZ3RoOjpzZXRW
YWx1ZShFeGVjU3RhdGUmIHN0CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNp
ZmllZFVuaXRzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAod3Jh
cHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBO
T19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKQEAgLTgwLDcgKzg3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lm
aWVkVQogICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnByb3BlcnR5UmVmZXJlbmNl
KCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgdW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQz
Migmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC05Nyw4ICs5NywxMSBAQCBKU1ZhbHVlIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3lu
CiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVy
KEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRD
b3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBleGVjLnZtKCkudGhyb3dFeGNlcHRpb24oJmV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZleGVjKSk7CiAKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0ID0gd3Jh
cHBlZCgpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50
b0ludDMyKCZleGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzAsOCArMTcwLDExIEBA
IGVudW0gT2JqZWN0VHlwZSB7CiAKIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRlcihK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRlJiBzdGF0ZSwgT2JqZWN0
VHlwZSBvYmplY3RUeXBlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+d3JhcHBlZCgpOwpAQCAt
MjcwLDEzICsyNzMsMTYgQEAgdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0
QQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFk
ZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwogICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiBzaGFkZXJzOwogICAgIGJvb2wgc3Vj
Y2VlZCA9IGNvbnRleHQuZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIHNoYWRlcnMsIGVjKTsK
ICAgICBpZiAoZWMpIHsKQEAgLTI5Myw4ICsyOTksMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0RXh0ZW5zaW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5nIG5h
bWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpOwpAQCAtMzExLDggKzMyMCwxMSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQgPSB3cmFwcGVkKCk7CkBAIC0zMzUsOCArMzQ3LDExIEBAIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAxKQotICAgICAgICByZXR1cm4gc3Rh
dGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCA9IHdyYXBwZWQoKTsKQEAgLTM1MywxNCArMzY4LDE3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dy
YW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9n
cmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0zNzksMTMgKzM5
NywxNiBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKS5pbmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBKU1dlYkdM
U2hhZGVyOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIHVuc2ln
bmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTQxNywxNyArNDM4LDIwIEBAIEpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJH
TFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQuZ2V0VW5pZm9ybShwcm9n
cmFtLCBsb2NhdGlvbiwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CkBAIC00ODgsOCArNTEyLDExIEBAIHN0YXRpYyBib29sIGZ1bmN0aW9u
Rm9yVW5pZm9ybShEYXRhRnVuY3QKIAogc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25m
KERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUu
YXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24gPSAwOwogICAgIGxvbmcgaW5kZXggPSAtMTsKQEAgLTQ5Nyw3ICs1MjQsNyBA
QCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgaWYgKGZ1bmN0
aW9uRm9yVW5pZm9ybShmKSkgewogICAgICAgICBsb2NhdGlvbiA9IEpTV2ViR0xVbmlmb3JtTG9j
YXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlm
ICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICB9IGVsc2UK
ICAgICAgICAgaW5kZXggPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0
ZSk7CiAgICAgCkBAIC01NDMsNyArNTcwLDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVu
Y3Rpb25mKERhdGFGdQogICAgIAogICAgIFZlY3RvcjxmbG9hdCwgNjQ+IGFycmF5OwogICAgIGlm
ICghdG9WZWN0b3Ioc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBhcnJheSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgc3dpdGNoIChmKSB7CiAgICAg
Y2FzZSBmX3VuaWZvcm0xdjoKQEAgLTU3OCwxMiArNjA1LDE1IEBAIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZGF0YUZ1bmN0aW9uZihEYXRhRnUKIAogc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rp
b25pKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3Rh
dGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBzY29wZSk7CiAgICAgCiAgICAgUmVmUHRyPEludDMyQXJyYXk+IHdlYkdMQXJyYXkgPSB0b0lu
dDMyQXJyYXkoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIApAQCAtNjEzLDcgKzY0
Myw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnUKICAgICAKICAg
ICBWZWN0b3I8aW50LCA2ND4gYXJyYXk7CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKICAgICAKICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgpAQCAtNjM4
LDEyICs2NjgsMTUgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25pKERhdGFGdQog
CiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rpb25NYXRy
aXhUb0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSAhPSAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
ID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIWxvY2F0aW9uICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAg
IAogICAgIGJvb2wgdHJhbnNwb3NlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29s
ZWFuKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNjcxLDcgKzcw
NCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KEQKICAgICAKICAg
ICBWZWN0b3I8ZmxvYXQsIDY0PiBhcnJheTsKICAgICBpZiAoIXRvVmVjdG9yKHN0YXRlLCBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgyKSwgYXJyYXkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogICAgIAogICAgIHN3aXRjaCAoZikgewogICAgIGNhc2UgZl91bmlmb3JtTWF0cml4MmZ2
OgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9D
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
S2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03Nyw2ICs3Nyw5IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVh
dGVBbGcKIAogc3RhdGljIGJvb2wgY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2V5Rm9ybWF0JiByZXN1bHQpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBTdHJpbmcga2V5Rm9ybWF0U3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0
YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTg5LDcgKzkyLDcgQEAgc3RhdGljIGJvb2wgY3J5cHRvS2V5
Rm9ybWF0RnJvbUpTVmFsdWUoRQogICAgIGVsc2UgaWYgKGtleUZvcm1hdFN0cmluZyA9PSAiandr
IikKICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5Rm9ybWF0OjpKV0s7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGtleSBm
b3JtYXQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiVW5rbm93biBrZXkgZm9ybWF0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwpAQCAtOTcsOCArMTAwLDExIEBAIHN0YXRpYyBib29sIGNyeXB0
b0tleUZvcm1hdEZyb21KU1ZhbHVlKEUKIAogc3RhdGljIGJvb2wgY3J5cHRvS2V5VXNhZ2VzRnJv
bUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2V5VXNhZ2Um
IHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTMyLDgg
KzEzOCwxMSBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZShFCiAKIEpT
VmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTE0
OSw3ICsxNTgsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4CiAK
ICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIHNjb3BlKTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0
KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVz
YWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CkBAIC0xODUsOCArMTk0LDExIEBAIEpT
VmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXgKIAogSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxn
b3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMjAyLDcgKzIxNCw3IEBA
IEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRlY3J5cHQoRXgKIAogICAgIFJlZlB0cjxD
cnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwog
CiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZURlY3J5cHQpKSB7CiAgICAgICAg
IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBp
bmNsdWRlICdkZWNyeXB0JyIpKTsKQEAgLTIzNyw4ICsyNDksMTEgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
OjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUu
YXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVB
bGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0yNTQsNyArMjY5LDcgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjUwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0g
SlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAg
aWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpZiAoIWtleS0+
YWxsb3dzKENyeXB0b0tleVVzYWdlU2lnbikpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOwpA
QCAtMjg5LDggKzMwNCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4
ZWNTCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDQp
Ci0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUo
c3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkg
ewpAQCAtMzA2LDcgKzMyNCw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlm
eShFeGUKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBw
ZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2Fn
ZVZlcmlmeSkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwo
IktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3ZlcmlmeSciKSk7CkBAIC0zNDcsOCArMzY1LDEx
IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGUKIAogSlNWYWx1ZSBK
U1dlYktpdFN1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0
byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0zODksOCArNDEw
LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2VzdChFeGUKIAogSlNWYWx1
ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTQ0
NSw2ICs0NjksOSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpnZW5lcmF0ZUtlCiAK
IHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQg
a2V5Rm9ybWF0LCBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGEsIFJlZlB0cjxDcnlwdG9BbGdvcml0
aG0+IGFsZ29yaXRobSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IHBhcmFtZXRl
cnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIGtleVVzYWdlcywgQ3J5cHRvQWxn
b3JpdGhtOjpLZXlDYWxsYmFjayBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJh
Y2sgZmFpbHVyZUNhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0tleVNlcmlhbGl6YXRpb24+IGtleVNlcmlhbGl6YXRpb247CiAgICAgc3dpdGNoIChr
ZXlGb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3OgpAQCAtNDUzLDcgKzQ4
MCw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBjYXNl
IENyeXB0b0tleUZvcm1hdDo6SldLOiB7CiAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcgPSBTdHJp
bmc6OmZyb21VVEY4KGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKICAgICAgICAgaWYgKGp3a1N0
cmluZy5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJ
SUxpdGVyYWwoIkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04IikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJK
V0sgSlNPTiBzZXJpYWxpemF0aW9uIGlzIG5vdCB2YWxpZCBVVEYtOCIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBrZXlTZXJpYWxpemF0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s+KCZzdGF0ZSwgandrU3RyaW5nKTsK
QEAgLTQ2Miw3ICs0ODksNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0
ZSwgCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3Ig
aW1wb3J0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGltcG9ydCIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDcxLDcgKzQ5OCw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShF
eGVjU3RhdGUmIHN0YXRlLCAKICAgICBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNv
bmNpbGVkUmVzdWx0ID0ga2V5U2VyaWFsaXphdGlvbi0+cmVjb25jaWxlQWxnb3JpdGhtKGFsZ29y
aXRobS5nZXQoKSwgcGFyYW1ldGVycy5nZXQoKSk7CiAgICAgaWYgKCFyZWNvbmNpbGVkUmVzdWx0
KSB7CiAgICAgICAgIGlmICghc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBr
ZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1
bWVudCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0
aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODAsNyArNTA3LDcg
QEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAgIGFsZ29yaXRo
bSA9IHJlY29uY2lsZWRSZXN1bHQtPmFsZ29yaXRobTsKICAgICBwYXJhbWV0ZXJzID0gcmVjb25j
aWxlZFJlc3VsdC0+cGFyYW1ldGVyczsKICAgICBpZiAoIWFsZ29yaXRobSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiTmVpdGhlciBrZXkgbm9yIGZ1bmN0
aW9uIGFyZ3VtZW50IGhhcyBjcnlwdG8gYWxnb3JpdGhtIHNwZWNpZmllZCIpKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWl0aGVyIGtleSBu
b3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0byBhbGdvcml0aG0gc3BlY2lmaWVkIikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKQEAgLTUwNSw4
ICs1MzIsMTEgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogCiBK
U1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjppbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0OwogICAgIGlmICghY3J5cHRvS2V5Rm9y
bWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7CkBA
IC01NjgsOCArNTk4LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmltcG9ydEtl
eSgKIAogc3RhdGljIHZvaWQgZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZv
cm1hdCBrZXlGb3JtYXQsIGNvbnN0IENyeXB0b0tleSYga2V5LCBDcnlwdG9BbGdvcml0aG06OlZl
Y3RvckNhbGxiYWNrIGNhbGxiYWNrLCBDcnlwdG9BbGdvcml0aG06OlZvaWRDYWxsYmFjayBmYWls
dXJlQ2FsbGJhY2spCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWtleS5leHRyYWN0YWJsZSgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJLZXkgaXMg
bm90IGV4dHJhY3RhYmxlIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIktleSBpcyBub3QgZXh0cmFjdGFibGUiKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTU5MywxNSArNjI2LDE4IEBAIHN0YXRpYyB2b2lkIGV4cG9ydEtleShF
eGVjU3RhdGUmIHN0YXRlLCAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBr
ZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3IgZXhwb3J0Iikp
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlw
dG86OmV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1hdCBr
ZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTYxMSw3ICs2NDcsNyBAQCBKU1ZhbHVl
IEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpleHBvcnRLZXkoCiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5
PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEp
KTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVy
KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CkBAIC02MzEsOCArNjY3
LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9ydEtleSgKIAogSlNWYWx1
ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDQpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9t
SlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTY0Miwx
MSArNjgxLDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXgKIAog
ICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4gd3JhcHBpbmdLZXkgPSBKU0NyeXB0
b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpKTsKICAgICBpZiAoIWtl
eSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICghd3JhcHBpbmdLZXkt
PmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBLZXkpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5
JyIpKTsKQEAgLTcwMCw4ICs3MzksMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6
d3JhcEtleShFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCA1KQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0OwogICAgIGlm
ICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBr
ZXlGb3JtYXQpKSB7CkBAIC03MTcsNyArNzU5LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6dW53cmFwS2V5KAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4gdW53cmFwcGluZ0tleSA9
IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOwogICAg
IGlmICghdW53cmFwcGluZ0tleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAg
IGlmICghdW53cmFwcGluZ0tleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlVW53cmFwS2V5KSkgewog
ICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBk
byBub3QgaW5jbHVkZSAndW53cmFwS2V5JyIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Nywx
MCArNDcsMTMgQEAgSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSYg
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKIAog
ICAgIGlmICghZXhlYy5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmZXhlYykpOwogCiAgICAgU3RyaW5nIHNjcmlwdFVSTCA9IGV4ZWMudW5jaGVja2Vk
QXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJmV4ZWMpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlv
bigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29w
ZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwg
MjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDggKzgwLDExIEBAIEpTVmFsdWUgSlNX
b3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXAKIAogSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNj
b3BlOjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3Jl
YXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIHdyYXBwZWQoKS5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtOTQsOCAr
OTcsMTEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KAogCiBKU1Zh
bHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9
IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCks
IHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDcsNyArNDgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rp
b24oCiAKIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjppbnZv
a2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBvYmplY3QsIGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcikKIHsKLSAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKCZzdGF0ZSk7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGF1dG8gZnVuY3Rpb24gPSBvYmplY3QuZ2V0KCZzdGF0
ZSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgcHJvcGVydHlOYW1lKSk7CiAg
ICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNTUsNyArNTgsNyBAQCBKU0M6OkpTVmFs
dWUgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvCiAKICAgICBpZiAoIWZ1bmN0aW9uLmlzRnVu
Y3Rpb24oKSkgewogICAgICAgICBpZiAoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpCi0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0g
dHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFi
bGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIp
KTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw5IEBA
IHByb3RlY3RlZDoKIAogICAgIHZvaWQgdGhyb3dTdGFja092ZXJmbG93KCkKICAgICB7Ci0gICAg
ICAgIG1fZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihtX2V4ZWMpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKG1fZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsK
ICAgICB9CiAKICAgICB2b2lkIGZhaWwoKQpAQCAtMTU3MCw3ICsxNTcyLDkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgdGhyb3dWYWxpZGF0aW9uRXJyb3IoKQogICAgIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRh
LiIpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwog
ICAgIH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbiA8PSBD
dXJyZW50VmVyc2lvbjsgfQpAQCAtMjc1NiwxNSArMjc2MCwxOCBAQCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyCiAKIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpt
YXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEV4ZWNTdGF0ZSogZXhlYywg
U2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChj
b2RlID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IHN3aXRjaCAoY29kZSkgewogICAgIGNhc2UgU3RhY2tPdmVyZmxvd0Vycm9yOgotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZhbGlkYXRpb25F
cnJvcjoKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEYXRhQ2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMTI2LDExICsxMjYsMTIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZShjbwogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogCiAgICAgRXhlY1N0YXRl
KiBleGVjID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2Rl
KCksIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhj
ZXB0aW9uKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgaWYgKChyZXR1cm5lZEV4
Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRp
b24pKSB8fCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAgICAgZm9yYmlkRXhlY3V0
aW9uKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw3ICsxNDQsNyBAQCB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBz
b3VyY2VDb2RlLnVybCgpLnN0cmluZygpOwogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBlcnJvcjsKICAgICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0
RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwg
ZXJyb3IsIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpKSB7Ci0gICAgICAgICAgICB2bS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSk7
CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhl
YywgZXJyb3JNZXNzYWdlLmltcGwoKSkpOwogICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24g
PSB2bS5leGNlcHRpb24oKTsKICAgICAgICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAg
ICAgIH0KQEAgLTE1Myw3ICsxNTQsOSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6
OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTkwNCw5ICs5MDQsMTEgQEAgc3ViIEdlbmVyYXRl
RW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbgogCiAgICAgICAgICRyZXN1bHQgLj0gInRlbXBs
YXRlPD4gJGNsYXNzTmFtZSBjb252ZXJ0PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpXG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVz
dWx0IC49ICIgICAgVk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0g
IiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiI7CiAgICAg
ICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPCRjbGFzc05hbWU+KHN0YXRl
LCB2YWx1ZSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKFVOTElLRUxZKCFyZXN1
bHQpKSB7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgdGhyb3dTY29wZSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVy
biB7IH07XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKICAgICAgICAgJHJlc3Vs
dCAuPSAiICAgIHJldHVybiByZXN1bHQudmFsdWUoKTtcbiI7CkBAIC0xMDA5LDExICsxMDExLDEz
IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnQKIAogICAgICAgICAk
cmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRjbGFzc05hbWU+IGNvbnZlcnREaWN0aW9u
YXJ5PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAg
ICAgICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgVk0mIHZtID0g
c3RhdGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBp
ZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIgaWYgJGRlZmF1bHRWYWx1ZXM7CiAgICAg
ICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuICRjbGFzc05hbWUgeyAiIC4gJGRlZmF1bHRW
YWx1ZXMgLiAiIH07XG4iIGlmICRkZWZhdWx0VmFsdWVzOwogICAgICAgICAkcmVzdWx0IC49ICIg
ICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7XG4iOwogICAgICAgICAkcmVzdWx0
IC49ICIgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhw
T2JqZWN0VHlwZSkpIHtcbiI7Ci0gICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIApA
QCAtMTk0MSw2ICsxOTQ1LDkgQEAgc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25z
dHJ1YwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOyAgICAKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFy
Z3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oJG1heEFyZ0NvdW50LCBzdGF0ZS0+YXJndW1lbnRD
b3VudCgpKTsKIEVORAogCkBAIC0yMDE1LDkgKzIwMjIsOSBAQCBFTkQKICAgICB9CiAgICAgbXkg
JG1pbkFyZ0NvdW50ID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKICAgICBpZiAoJG1p
bkFyZ0NvdW50ID4gMCkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
YXJnc0NvdW50IDwgJG1pbkFyZ0NvdW50ID8gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4i
KQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gYXJnc0NvdW50IDwgJG1p
bkFyZ0NvdW50ID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7XG4iKQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpCisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtc
biIpCiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI4MTAsNyAr
MjgxNyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKIAotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7CiAKICAgICAgICAgICAg
IGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
ID1+IC9Db25zdHJ1Y3RvciQvKSB7CkBAIC0yODI2LDcgKzI4MzUsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRl
cmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CkBA
IC0zMDA3LDkgKzMwMTYsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVu
Y3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpO1xuIik7CiAKICAgICAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTtc
biIpOwpAQCAtMzAyNiwxMCArMzAzNywxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0cnVjdG9yRnVuY3Rpb25O
YW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHtcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
ZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAKQEAg
LTMxMDksNiArMzEyMiw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke3B1dEZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsiKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAg
ICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CkBAIC0zMTIxLDcgKzMxMzcsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwg
XCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTMyMTAsNyArMzIy
Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkge1xuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVU
eXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwi
JHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwi
JHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlwZVwiKTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgfVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1c
biIpOwpAQCAtMzIyOSw3ICszMjQ1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFs
dWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5h
bWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlw
ZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTMzOTcsNiArMzQxMywxMCBA
QCBFTkQKIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9
IDE7CiAKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisKICAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNFUmVhY3Rpb25zIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNp
ZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2s7XG4iKTsKQEAgLTM3MTYsNyArMzczNiw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0
aW9uQ2FzdGVkVGhpcwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tUHJveHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFs
dWUoKS50b1RoaXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpO1xuIik7CiAgICAgICAgIG15ICRjYXN0aW5nSGVscGVyID0gR2V0Q2FzdGluZ0hl
bHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7CkBAIC0zNzMyLDcgKzM3NTIsNyBAQCBzdWIg
R2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICAgICAgbXkgJHZpc2libGVJbnRlcmZhY2VO
YW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFZpc2libGVJbnRlcmZhY2VOYW1lKCRpbnRlcmZhY2Up
OwogICAgICAgICBteSAkZG9tRnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5h
bWU7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRk
b21GdW5jdGlvbk5hbWVcIik7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR2aXNp
YmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIik7XG4iKTsKICAgICB9CiAK
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpIHVubGVzcyAkaW50ZXJmYWNlLT5u
YW1lIGVxICJFdmVudFRhcmdldCI7CkBAIC0zODAwLDcgKzM4MjAsNyBAQCBzdWIgR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrCiAgICAgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkKICAg
ICB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8ICRudW1NYW5kYXRvcnlQYXJhbXMpKVxuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7XG4iKTsKICAgICB9CiB9
CiAKQEAgLTM5MjIsNyArMzk0Miw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5k
ZXgpLmlzT2JqZWN0KCkpXG4iKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlz
aWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJndW1lbnRJbmRl
eCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25O
YW1lKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9uLmgi
KTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFt
ZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihzdGF0
ZSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSksIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkpO1xuIik7CkBAIC0z
OTM2LDcgKzM5NTYsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpLmlzT2JqZWN0
KCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5h
bWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25F
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9u
T25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihzdGF0ZSwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkpO1xuIik7CkBAIC0zOTU0LDcgKzM5NzQsNyBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgZm9yICh1bnNpZ25lZCBpID0gJGFyZ3VtZW50SW5kZXgsIGNvdW50ID0gc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byogaXRlbSA9IEpTJHt0eXBlfTo6
dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKSk7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghaXRlbSlcbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNl
TmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBpLCBcIiRuYW1lXCIsIFwiJHZpc2libGVJ
bnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVuY2hlY2tl
ZEFwcGVuZChpdGVtKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM5OTcsNyArNDAxNyw3IEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiJGluZGVudCAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAoVU5MSUtFTFkoISRvcHRpb25hbFZhbHVlKSlcbiIp
OwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIk
bmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPCRjbGFzc05hbWU+KCkpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUVudW1FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRu
YW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8JGNsYXNzTmFtZT4oKSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJG5hbWUgPSBvcHRpb25hbFZhbHVlLnZh
bHVlKCk7XG4iKSBpZiAkb3B0aW9uYWxWYWx1ZSBuZSAkbmFtZTsKIAogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpIGlmICRpbmRlbnQgbmUgIiI7CkBAIC00MDIxLDcg
KzQwNDEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmIChVTkxJS0VMWSghJG5hbWUpKVxuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwi
LCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBl
XCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJn
dW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVk
RnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3Zl
KCRuYW1lKSI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDA2Nyw3ICs0MDg3LDcgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAKICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5
UmVmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
IChVTkxJS0VMWSghJG5hbWUpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsICRhcmd1
bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRG
dW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFj
ZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICRpc1RlYXJPZmYgPyAiJG5hbWUtPnByb3BlcnR5UmVmZXJlbmNlKCki
IDogIiokbmFtZSI7CiAgICAgICAgICAgICB9CiAKQEAgLTUyNDMsMTQgKzUyNjMsMTYgQEAgc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksIDw8RU5EKTsKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDwke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3Ry
dWN0b3IpOwogCiAgICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2
YWlsYWJsZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1l
fVwiKTsKIAogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAKICAgICBBdG9t
aWNTdHJpbmcgZXZlbnRUeXBlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5n
KHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTMyNyw2ICs1MzQ5LDkgQEAgRU5ECiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9Kj4oc3RhdGUtPmNhbGxlZSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIEFTU0VSVChjYXN0ZWRUaGlzKTtcbiIpOwogCkBAIC01MzU2LDE0ICs1
MzgxLDE0IEBAIEVORAogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwg
Iipjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFt
ZX1cIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yQ2FsbFdpdGgifSwgIkRvY3VtZW50IikpIHsKICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJEb2N1bWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0
cnVjdG9yQXJnTGlzdCwgImRvY3VtZW50Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlz
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIFwiJHt2aXNp
YmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVy
ZmFjZU5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCpjb250ZXh0KTtcbiIpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFt
ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTgg
KzExNywyMiBAQCB2b2lkIEpTSW50ZXJmYWNlTmFtZTo6ZGVzdHJveShKU0M6OkpTQ2VsCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50ZXJmYWNlTmFt
ZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIAogYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MiwxMiArMTQyLDE0IEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpkZXN0
cm95KEpTQzoKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3Rp
dmVET01PYmplY3QiLCAiZXhjaXRpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4
Y2l0aW5nQXR0ciIpOwogICAgIH0KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSwgVGhy
b3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTE1OSwxOCArMTYxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2
ZURPTU9iamVjdEV4Y2kKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29s
IHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTE4NCwzMyArMTkwLDM5IEBA
IEpTVmFsdWUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4
Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RBY3RpdmVET01PYmplY3QqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFj
dGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIs
ICJleGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpLmZyYW1lKCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gbmV4dENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoIW5leHRDaGlsZCkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm5leHRDaGlsZCIsICJUZXN0QWN0aXZlRE9NT2JqZWN0Iiwg
ImV4Y2l0aW5nRnVuY3Rpb24iLCAiTm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJuZXh0Q2hpbGQiLCAiVGVzdEFjdGl2
ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIiwgIk5vZGUiKTsKICAgICBpbXBsLmV4Y2l0
aW5nRnVuY3Rpb24oKm5leHRDaGlsZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3Rp
dmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAicG9zdE1lc3NhZ2UiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbWVzc2FnZSA9IHN0YXRlLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMywxOCArMTIzLDIyIEBAIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJv
b2wgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjMsOSArMTIzLDExIEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmYKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksIEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShzdGF0ZS0+dm0oKSwgKmRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKICAgICAvLyBTaGFkb3dp
bmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5zdXJlIHJldXNpbmcgdGhlIHNhbWUgY29uc3Ry
dWN0b3Igb2JqZWN0CiAgICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSB8IFJl
YWRPbmx5KTsKQEAgLTEzNCwxMCArMTM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2kKIAogYm9vbCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJ
KHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwx
OCArMTYwLDIyIEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3AKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTg1LDE0ICsxODksMTcgQEAgSlNW
YWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29ucwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90
aGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhlckZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVy
IiwgImFub3RoZXJGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTQgKzczLDE2IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RFdmVudENvbnMKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVl
KCkpOwogICAgIEFTU0VSVChqc0NvbnN0cnVjdG9yKTsKIAogICAgIGlmICghanNDb25zdHJ1Y3Rv
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1
Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIlRlc3RF
dmVudENvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiKTsKIAogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAKICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMTc5LDEyICsxODEsMTQgQEAgdm9p
ZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpkZXN0cm95KEpTQwogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIxIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXZl
bnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuYXR0cjEoKSk7CkBAIC0xOTQsMTIgKzE5OCwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RFdmVudENvbnN0cnVj
dG9yIiwgImF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5hdHRyMigpKTsKQEAgLTIxMCwxMiArMjE2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2
ZW50Q29uc3RydWN0b3JBdHQKICNpZiBFTkFCTEUoU1BFQ0lBTF9FVkVOVCkKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjMiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5hdHRyMygpKTsKQEAgLTIyNiwxOCArMjM0LDIyIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25z
dHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDIyIEBAIGJvb2wgSlNUZXN0RXZl
bnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRU
YXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk4LDE0ICsyMDIsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RF
dmVudFRhcmdldDo6Z2V0Q29uc3RydWN0bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIml0ZW0iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXZlbnRUYXJnZXQi
LCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
aW5kZXggPSBjb252ZXJ0PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNCwxMiArMTM0LDE0IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpT
Qzo6SlNDZWwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RFeGNlcHRpb24iLCAibmFtZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwubmFtZSgpKTsKQEAgLTE0OSwxOCArMTUxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1MKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9u
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0RXhjZXB0aW9uUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0RXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rl
c3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhj
ZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE4ICsx
MTcsMjIgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpkZXN0cm95KAogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTc5LDEyICsxNzksMTQgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmRlc3Ry
b3koSlNDOjpKUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9i
amVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9i
YWxPYmplY3QiLCAicmVndWxhckF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJyZWd1
bGFyQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5yZWd1bGFyQXR0cmlidXRlKCkpOwpAQCAtMTk0LDEyICsxOTYsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhcgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUF0
dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQ
cml2YXRlQXR0cmlidXRlKCkpOwpAQCAtMjEwLDEyICsyMTQsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0UHVibGljQQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFs
T2JqZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEds
b2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQcml2
YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoKSk7CkBAIC0yMjcsMTIgKzIzMywxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2Jq
ZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2Jh
bE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0
IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKSk7CkBAIC0yNDMs
MTggKzI1MSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2Jq
ZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVj
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBA
IC0yNjMsMTEgKzI3NSwxMyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9y
KEV4CiAKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJyZWd1
bGFyQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInJlZ3VsYXJBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMjgwLDExICsyOTQs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidQogCiBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5k
UHJpdmF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAg
LTI5OCwxMSArMzE0LDEzIEBAIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJp
dmEKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQ
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZh
dGVDb25kaXRpb25hbEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
ZyhzdGF0ZSk7CkBAIC0zMTcsMTEgKzMzNSwxMyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFB1YmxpY0FuZFByaXZhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQwLDE0
ICszNjAsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3Q6OmdldENvbnN0cnVjdAogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25SZWd1bGFyT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RHbG9iYWxPYmplY3QiLCAicmVndWxhck9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAi
cmVndWxhck9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIHRlc3RQYXJhbSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTgsMTQgKzM4MSwxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xv
YmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQ
YXJhbSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNzgsMTQgKzQwNCwxNyBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8
aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzk4LDYgKzQyNyw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmEKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBz
aXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5n
dWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKQEAgLTQwOSwxNyArNDQx
LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmEKICAgICAgICAg
cmV0dXJuIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uMShzdGF0ZSk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3VudCA8
IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4gYXJnc0NvdW50IDwg
MSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2Jh
bE9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0R2xvYmFsT2JqZWN0
IiwgInRlc3RQcml2YXRlRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInRlc3RQcml2YXRl
RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdEdsb2JhbE9iamVjdDo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGltcGwudGVzdFByaXZhdGVGdW5jdGlvbigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjIsMTAgKzIyMiwxMyBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RTdXBwbGVtZW50YWw6OkNPTlNU
X0lNCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVl
KCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8gc3RyMSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0yMzUsNyArMjM4LDcgQEAgdGVtcGxhdGU8PiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBj
YXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFj
b250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIpOwogICAgIGF1dG8gb2Jq
ZWN0ID0gVGVzdEludGVyZmFjZTo6Y3JlYXRlKCpjb250ZXh0LCBXVEZNb3ZlKHN0cjEpLCBXVEZN
b3ZlKHN0cjIpLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkgewogICAgICAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTQxMiw3ICs0MTUsOSBAQCB2b2lkIEpTVGVzdEludGVy
ZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ckltcGxlbWVudHNTdGF0aWNSZWFkT25seUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihU
ZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlBdHRyKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQyMyw3ICs0MjgsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIFRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdGF0aWNBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQzNCwxMiArNDQxLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG8KICNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUltcGxlbWVudHNTdHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1w
bGVtZW50c1N0cjEiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmltcGxlbWVudHNTdHIxKCkpOwpAQCAtNDUxLDEyICs0NjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50cwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzU3RyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVtZW50c1N0
cjIoKSk7CkBAIC00NjgsMTIgKzQ3OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgfQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVtZW50c1N0cjMoKnN0YXRl
KSk7CiB9CkBAIC00ODMsMTIgKzQ5NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5pbXBsZW1lbnRz
Tm9kZSgpKTsKQEAgLTUwMCw3ICs1MTUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFdlYkNvcmU6OlRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01MTEsNyArNTI4LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0bwogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
NTIyLDEyICs1NDEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
bwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbFN0cjEoaW1wbCkpOwpAQCAtNTM5LDEyICs1NjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
U3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3Ry
MiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoaW1wbCkpOwpAQCAtNTU2LDEyICs1NzksMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRhbFN0cjMoKnN0YXRlKSk7CiB9CkBAIC01NzEsMTIg
KzU5NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50CiAjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRl
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6
c3VwcGxlbWVudGFsTm9kZShpbXBsKSk7CkBAIC01ODcsMTggKzYxNCwyMiBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCkBAIC02MzAsNyArNjYxLDkgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dEJ5
SW5kZXgoSlNDZWxsKgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQogYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02NDMsMTEgKzY3NiwxMyBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9ySW1wbGVtCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CiBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RG
U3RyaW5nKHN0YXRlKTsKQEAgLTY2MiwxMSArNjk3LDEzIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50c1N0cjIoRXgKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0
cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKICAgICB9CiAgICAgY2Fz
dGVkVGhpcy0+c2V0SW1wbGVtZW50c1N0cjMoKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC02NzcsMTYgKzcxNCwxOCBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dHNTdHIzKEV4CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CiBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNOb2RlIiwgIk5vZGUiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIsICJOb2Rl
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRJbXBsZW1lbnRz
Tm9kZSgqbmF0aXZlVmFsdWUpOwpAQCAtNjk4LDcgKzczNyw5IEBAIGJvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c05vZGUoRXgKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVt
ZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmco
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03MTEsMTEgKzc1MiwxMyBAQCBib29sIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yU3VwcGxlCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVu
dGFsU3RyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTczMCwxMSArNzczLDEzIEBAIGJv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMigKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50
ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRh
bFN0cjMiKTsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0U3VwcGxlbWVudGFsU3RyMygqc3Rh
dGUsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc0NSwxNiArNzkwLDE4IEBAIGJvb2wg
c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMygKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJm
YWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5v
ZGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIsICJOb2RlIik7Cisg
ICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJ
bnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIsICJOb2RlIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVu
dGFsTm9kZShpbXBsLCAqbmF0aXZlVmFsdWUpOwpAQCAtNzcxLDEwICs4MTgsMTMgQEAgSlNWYWx1
ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmltcGxlbWVudHNN
ZXRob2QxKCk7CkBAIC03ODYsMTQgKzgzNiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c01ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtODAzLDcgKzg1Niw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpB
cmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJv
YmpBcmciLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIsICJUZXN0T2JqIik7
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QyIiwgIlRl
c3RPYmoiKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBpbXBsLmltcGxlbWVudHNNZXRob2QyKCpjb250ZXh0LCBXVEZNb3ZlKHN0
ckFyZyksICpvYmpBcmcsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsK
QEAgLTgxNSwxMCArODY4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25JbXBsZW1lbnRzTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
TWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+aW1wbGVtZW50c01ldGhvZDMoKnN0YXRlKSk7CiB9CkBAIC04MjgsNiArODg0LDkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtODM3LDEwICs4
OTYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRh
bE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxNZXRob2QxIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2Qx
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRl
cmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcGwp
OwpAQCAtODUyLDE0ICs5MTQsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBw
bGVtZW50YWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTg2OSw3ICs5MzQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6
OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJn
KSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAib2Jq
QXJnIiwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMiIsICJUZXN0T2JqIik7
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiLCAi
VGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1l
dGhvZDIoaW1wbCwgKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZywgZWMpKTsKIAog
ICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtODgxLDEwICs5NDYsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxN
ZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8o
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxN
ZXRob2QzKCpzdGF0ZSkpOwogfQpAQCAtODk0LDYgKzk2Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNCgpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSwxOCArMTMxLDIyIEBAIHZvaWQgSlNUZXN0SXRlcmFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SXRlcmFi
bGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIgKzEzNCwxNCBAQCB2b2lkIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjpkZXN0cm95CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0
cmlidXRlQ3VzdG9tIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0
ZUN1c3RvbSIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PnRlc3RBdHRyaWJ1dGVDdXN0b20oKnN0YXRlKSk7CiB9CkBAIC0xNDcsMTIgKzE0OSwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogICAgIH0KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUpKTsK
IH0KQEAgLTE2MCwxOCArMTY0LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG8KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgpAQCAtMTgwLDExICsxODgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cgogCiBib29sIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0
dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVS
V0N1c3RvbSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1
c3RvbSIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRUZXN0QXR0cmlidXRlUldDdXN0b20o
KnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTgsMTAgKzIwOCwxMyBAQCBK
U1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEN1c3RvbUZ1bmN0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6aW5mbygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RD
dXN0b21GdW5jdGlvbigqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE4ICsxMjUsMjIgQEAgdm9pZCBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpkZXN0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTE1MCwxNiArMTU0LDE5
IEBAIEpTVmFsdWUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2UKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
RnVuY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5j
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgMCwgImxpc3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1l
dGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAibGlzdGVuZXIiLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIiLCAibWV0aG9kIik7CiAgICAgYXV0byBsaXN0ZW5lciA9IEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZChXVEZNb3ZlKGxpc3Rl
bmVyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDEzIEBAIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ28KIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byBzdHIxID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTE1OSwxOCArMTYyLDIyIEBAIHZvaWQgSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6ZGVzdHJveShKU0MKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAogYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5
LDkgQEAgdHlwZWRlZiBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGU+IEpTVAogCiB0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3ROb2RlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKQEAgLTE2MSwxMiAr
MTY0LDE0IEBAIEpTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUoVk0mIHZtLCAKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Tm9kZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CkBAIC0xNzYsMTggKzE4MSwy
MiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0Tm9k
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RO
b2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk2LDEx
ICsyMDUsMTMgQEAgYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKgogCiBi
b29sIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3ROb2RlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwg
Im5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZT
dHJpbmcoc3RhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsMTIg
KzE0NiwxNCBAQCB2b2lkIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmRlc3Ryb3koSlNDCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9u
bHlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVy
bWluaXN0aWMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CiAgICAg
fQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwpAQCAtMTgxLDEyICsxODMsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbgogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwogICAgIH0KICNpZiBF
TkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTIxNiwxMiArMjIwLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihkZWNvZGVk
VGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMi
LCAibm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0yNTEsMTIgKzI1NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAi
bm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgfQogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQpAQCAtMjkwLDEy
ICsyOTgsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbgogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRp
b25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVy
RXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
QEAgLTMyNSwxOCArMzM1LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0
aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0zNDUsMTEgKzM1OSwxMyBAQCBi
b29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvCiAKIGJvb2wgc2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGlj
IiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1
ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zNjIsMTEgKzM3OCwxMyBAQCBib29sIHNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVy
bWluaXN0aWNFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
ZyhzdGF0ZSk7CkBAIC0zNzksMTEgKzM5NywxMyBAQCBib29sIHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dU
RlN0cmluZyhzdGF0ZSk7CkBAIC0zOTYsMTEgKzQxNiwxMyBAQCBib29sIHNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVy
bWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJu
b25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtNDIwLDEwICs0NDIsMTMgQEAgSlNWYWx1ZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRD
b25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWluaXN0
aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5v
bmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJu
b25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MCw5ICsxMzAsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcAog
CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1UeXBlIGNvbnZlcnQ8VGVzdE9iajo6RW51bVR5cGU+
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgdmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0xODEs
OSArMTgzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHAKIAog
dGVtcGxhdGU8PiBUZXN0T2JqOjpPcHRpb25hbCBjb252ZXJ0PFRlc3RPYmo6Ok9wdGlvbmFsPihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpPcHRpb25hbD4oc3RhdGUsIHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtMjI0LDkg
KzIyOCwxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwCiAKIHRl
bXBsYXRlPD4gQWx0ZXJuYXRlRW51bU5hbWUgY29udmVydDxBbHRlcm5hdGVFbnVtTmFtZT4oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2U8QWx0ZXJuYXRlRW51bU5hbWU+KHN0YXRlLCB2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTI2NSw5ICsy
NzEsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFycwogCiB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkVudW1BIGNvbnZlcnQ8VGVzdE9iajo6RW51bUE+KEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3Vs
dCA9IHBhcnNlPFRlc3RPYmo6OkVudW1BPihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0zMDgsOSArMzE2LDExIEBAIHRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnMKIAogdGVtcGxhdGU8PiBUZXN0
T2JqOjpFbnVtQiBjb252ZXJ0PFRlc3RPYmo6OkVudW1CPihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxU
ZXN0T2JqOjpFbnVtQj4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtMzUxLDkgKzM2MSwxMSBAQCB0ZW1wbGF0ZTw+IE9w
dGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzCiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUMg
Y29udmVydDxUZXN0T2JqOjpFbnVtQz4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6RW51
bUM+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQudmFsdWUoKTsKQEAgLTM5Niw5ICs0MDgsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0
T2JqOjpLaW5kPiBwYXJzZQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OktpbmQgY29udmVydDxUZXN0
T2JqOjpLaW5kPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpLaW5kPihzdGF0ZSwgdmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBA
IC00MzksOSArNDUzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFy
c2UKIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpTaXplIGNvbnZlcnQ8VGVzdE9iajo6U2l6ZT4oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6U2l6ZT4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtNDgyLDkgKzQ5OCwx
MSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+CiAKIHRlbXBsYXRl
PD4gVGVzdE9iajo6Q29uZmlkZW5jZSBjb252ZXJ0PFRlc3RPYmo6OkNvbmZpZGVuY2U+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
IHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkNvbmZpZGVuY2U+KHN0YXRlLCB2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTQ5NywxMSAr
NTE1LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIGNvbnN0IGNoYXIqIGV4cGVjdGVkRW4KIAogdGVt
cGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFyeTxU
ZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBUZXN0T2JqOjpEaWN0aW9uYXJ5IHsgeyB9LCBUZXN0T2JqOjpFbnVtVHlwZTo6
RW51bVZhbHVlMSwgVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5U3RyaW5nLCAiZGVmYXVsdFN0cmlu
ZyIsIHsgfSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgeyB9LCB7IH0sIDAsIDAs
IHsgfSwgeyB9LCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwLCB7IH0sIDAsIHsgfSwgMCwgbnVsbHB0
ciwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSwgeyB9IH07CiAgICAgYXV0byogb2JqZWN0
ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0
LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZW51bWVyYXRpb25WYWx1ZVdp
dGhvdXREZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwg
b2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1l
cmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCIpKSk7CkBAIC02MDMsOSArNjIzLDExIEBAIHRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4KIAogdGVtcGxhdGU8PiBPcHRpb25h
bDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4gY29udmVydERp
Y3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+KEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBh
dXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iamVj
dCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAgICAgYXV0byByZXF1aXJl
ZEVudW1lcmF0aW9uVmFsdWUgPSBjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgb2Jq
ZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlcXVpcmVk
RW51bWVyYXRpb25WYWx1ZSIpKSk7CkBAIC02MjMsMTEgKzY0NSwxMyBAQCB0ZW1wbGF0ZTw+IE9w
dGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnlUCiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uYXJ5PFRl
c3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNo
b3VsZFRvbGVyYXRlTnVsbCB7IHsgfSwgeyB9IH07CiAgICAgYXV0byogb2JqZWN0ID0gdmFsdWUu
Z2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkg
PT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZW51bWVyYXRpb25WYWx1ZSA9IGNvbnZlcnRP
cHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVlIikpKTsKQEAgLTYz
OSwxMSArNjYzLDEzIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVQK
IAogdGVtcGxhdGU8PiBPcHRpb25hbDxBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZT4gY29udmVydERp
Y3Rpb25hcnk8QWx0ZXJuYXRlRGljdGlvbmFyeU5hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lIHsgeyB9LCB7
IH0gfTsKICAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5M
SUtFTFkoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAgICAg
YXV0byBlbnVtZXJhdGlvblZhbHVlID0gY29udmVydE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBl
PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0
ZSwgImVudW1lcmF0aW9uVmFsdWUiKSkpOwpAQCAtMTEwMiwxOSArMTEyOCwyMiBAQCBzdGF0aWNf
YXNzZXJ0KFRlc3RPYmo6OnJlYWRvbmx5ID09IDAsICJyCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0
b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFy
Z3VtZW50KDApLmlzT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAidGVzdENhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCBu
dWxscHRyKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVs
bHB0cik7CiAgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFz
T2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9u
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iamVjdCIsIG51bGxw
dHIpOwogICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElL
RUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iik7CisgICAg
ICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxh
YmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIpOwogICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCpjb250ZXh0KTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPYmo6OmNyZWF0ZShkb2N1
bWVudCwgKnRlc3RDYWxsYmFjaywgKnRlc3RDYWxsYmFja0Z1bmN0aW9uKTsKQEAgLTE0OTUsMTIg
KzE1MjQsMTQgQEAgYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVhZE9ubHlMb25nQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJl
YWRPbmx5TG9uZ0F0dHIoKSk7CkBAIC0xNTEwLDEyICsxNTQxLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVh
ZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlYWRPbmx5U3RyaW5n
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZE9u
bHlTdHJpbmdBdHRyKCkpOwpAQCAtMTUyNSwxMiArMTU1OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRP
bmx5VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlYWRPbmx5VGVzdE9i
akF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLnJlYWRPbmx5VGVzdE9iakF0dHIoKSk7CkBAIC0xNTQwLDcgKzE1NzUsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTU0OSw3ICsxNTg2LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNTU4LDEyICsxNTk3LDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGkKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1Yk9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJUZXN0U3ViT2Jq
Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
QEAgLTE1NzEsMTIgKzE2MTIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JUZXN0UwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKICAgICB9CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzLT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0xNTg5LDEyICsxNjMyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialRlc3RTdWJPYmpFbmFibGUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0
ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIGltcGwuZW51bUF0dHIoKSk7CkBAIC0xNjA0LDEyICsxNjQ5LDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGEKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJieXRlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5ieXRlQXR0cigpKTsKQEAgLTE2MTksMTIgKzE2NjYsMTQgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YQogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJvY3RldEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKQEAgLTE2MzQsMTIgKzE2ODMsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJzaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic2hvcnRBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLnNob3J0QXR0cigpKTsKQEAgLTE2NDksMTIgKzE3MDAsMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdAogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhbXBlZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
bGFtcGVkU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNsYW1wZWRTaG9y
dEF0dHIoKSk7CkBAIC0xNjY0LDEyICsxNzE3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNsYW1wZWRTaG9ydEF0dHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW5mb3JjZVJhbmdl
U2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
ZW5mb3JjZVJhbmdlU2hvcnRBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImVuZm9yY2VSYW5nZVNob3J0
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5lbmZvcmNlUmFuZ2VTaG9ydEF0dHIo
KSk7CkBAIC0xNjc5LDEyICsxNzM0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuZm9y
Y2VSYW5nZVNob3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bnNpZ25lZFNo
b3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsKQEAgLTE2OTQsMTIgKzE3NTEs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImxvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImxvbmdBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdBdHRyKCkpOwpAQCAtMTcwOSwxMiArMTc2OCwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImxvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTG9u
Z0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0xvbmdBdHRyKCkpOwpAQCAt
MTcyNCwxMiArMTc4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIo
RXhlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRMb25nTG9u
Z0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7CkBAIC0xNzM5LDEyICsx
ODAyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmcKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5n
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5n
QXR0cigpKTsKQEAgLTE3NTQsMTIgKzE4MTksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
U3RyaW5nQXR0cihFeGVjUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5n
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC51c3ZzdHJpbmdBdHRyKCkpOwpAQCAtMTc2OSwxMiAr
MTgzNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyKEV4CiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVz
dE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLnRlc3RPYmpBdHRyKCkpOwpAQCAtMTc4NCwxMiArMTg1MywxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRl
c3ROdWxsYWJsZU9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3ROdWxsYWJsZU9iakF0dHIoKSk7CkBAIC0xNzk5LDcg
KzE4NzAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKQEAgLTE4
MTQsMTIgKzE4ODcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTGVuaWVudFRlc3RPYmpB
dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bmZvcmdlYWJsZUF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAidW5mb3JnZWFibGVBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC51bmZvcmdlYWJsZUF0dHIoKSk7CkBAIC0xODI5LDEyICsxOTA0LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuZm9yZ2VhYmxlQXR0cigKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSk7CkBAIC0xODQ0LDEy
ICsxOTIxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGkKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVj
b2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3Zz
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3Zz
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoKSk7CkBAIC0xODU5LDEyICsxOTM4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alVzdnN0cmluZ0F0dHJUcmUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1wbGVtZW50YXRp
b25FbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
ImltcGxlbWVudGF0aW9uRW51bUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiaW1wbGVtZW50YXRpb25F
bnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1w
bGVtZW50YXRpb25FbnVtQXR0cigpKTsKQEAgLTE4NzQsMTIgKzE5NTUsMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqSW1wbGVtZW50YXRpb25FbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiWE1MT2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC54bWxPYmpBdHRy
KCkpOwpAQCAtMTg4OSwxMiArMTk3MiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxP
YmpBdHRyKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNyZWF0ZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjcmVhdGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRlKCkpOwpA
QCAtMTkwNCwxMiArMTk4OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhl
Y1N0YXRlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJp
bmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0cikpOwpA
QCAtMTkxOSwxMiArMjAwNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRV
U1ZTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdh
dHRyQXR0cikpOwpAQCAtMTkzNCwxMiArMjAyMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWZsZWN0ZWRVU1ZTdHJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZElu
dGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CkBAIC0xOTQ5
LDEyICsyMDQwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmEK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRV
bnNpZ25lZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVbnNpZ25lZElu
dGVncmFsQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50
ZWdyYWxhdHRyQXR0cikpKTsKQEAgLTE5NjQsMTIgKzIwNTcsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEJv
b2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0
dHJBdHRyKSk7CkBAIC0xOTc5LDEyICsyMDc0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZEJvb2xlYW4KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJM
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxl
Y3RlZFVSTEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKQEAgLTE5OTQsMTIgKzIwOTEs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cgogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWVVJMQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJyZWZsZWN0ZWRVU1ZVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWR1c3Z1cmxhdHRyQXR0cikpOwpAQCAtMjAwOSwxMiArMjEwOCwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3Rl
ZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKQEAgLTIwMjQsMTIgKzIxMjUsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudEludGVncmFsQXR0ckF0dHIpKTsKQEAgLTIwMzksMTIgKzIxNDIsMTQgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSQogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6
OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0cikpOwpAQCAtMjA1NCwxMiAr
MjE1OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21CCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOwpAQCAtMjA3MCwxMiArMjE3Nywx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VCiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJl
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKSk7CkBAIC0yMDg2LDEyICsyMTk1LDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWUKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwudHlwZWRBcnJheUF0dHIoKSk7CkBAIC0yMTAxLDEyICsyMjEyLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEUKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjEx
OCwxMiArMjIzMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVj
b2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlIGVjOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBA
IC0yMTM1LDEyICsyMjUwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0
dGVyRXgKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsK
QEAgLTIxNTAsMTIgKzIyNjcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhT
ZXR0ZXJFeAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoKSk7CkBAIC0yMTY1LDEy
ICsyMjg0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXgKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjE4MiwxMiArMjMwMywxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdlCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKCkpOwpAQCAtMjE5NywxMiArMjMyMCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpTdHJpbmdBdHRyV2l0aFNlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjdXN0b21B
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImN1c3RvbUF0dHIiKTsKICAgICB9CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21BdHRyKCpzdGF0ZSkpOwogfQpAQCAtMjIx
MCwxMiArMjMzNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNT
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib25mb28iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib25mb28iKTsK
ICAgICB9CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFt
ZXMoKS5mb29FdmVudCkpOwpAQCAtMjIyNCwxMiArMjM1MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9ud2Vi
a2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib253
ZWJraXRmb28iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib253ZWJraXRmb28iKTsKICAgICB9CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkp
OwpAQCAtMjIzOCwxMiArMjM2NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbndlYmtp
dGZvbyhFeGVjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlKCpzdGF0ZSkpOwpAQCAtMjI1MywxMiArMjM4NCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aENhbGxXaXRoQW5kU2V0dGVyQ2Fs
bFdpdGhBdHRyaWJ1dGUoKnN0YXRlKSk7CkBAIC0yMjY4LDEyICsyNDAxLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0aEFuZFMKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZSIpOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0yMjg2LDEyICsyNDIxLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0K
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwpAQCAtMjMwMywxMiArMjQ0MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0U3RhdGVBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byog
Y29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0yMzIzLDEyICsyNDYyLDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihk
ZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0yMzQxLDEyICsyNDgyLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvKiBjb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTIzNjEsMTIgKzI1MDQsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTIzNzks
MTIgKzI1MjQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dAog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpOwpAQCAtMjM5NSwxMiArMjU0MiwxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRy
MSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CkBAIC0yNDEyLDEyICsyNTYxLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiY29uZGl0aW9uYWxBdHRyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjIoKSk7CkBAIC0yNDI5
LDEyICsyNTgwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
b25kaXRpb25hbEF0dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFs
QXR0cjMoKSk7CkBAIC0yNDQ2LDEyICsyNTk5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdE9iamVjdEE6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMjQ2MSwxMiArMjYxNiwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYm
IEVOQUJMRShDb25kaXRpb24yKQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI1
Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0Qjo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CkBAIC0yNDc2LDEyICsyNjMzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI2
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKICAgICB9CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RDOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTI0OTAsMTIgKzI2NDksMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNgogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
YWNoZWRBdHRyaWJ1dGUxIik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0g
Y2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLmdldCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTI1MDgsMTIgKzI2NjksMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjYWNoZWRBdHRy
aWJ1dGUyIik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhp
cy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhY2hlZFZhbHVlKTsKQEAgLTI1MjYsMTIgKzI2ODksMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJh
bnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBpbXBsLmFueUF0dHJpYnV0ZSgpOwpAQCAtMjU0MSwxMiArMjcwNiwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgImNvbnRlbnREb2N1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb250ZW50RG9jdW1lbnQi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBs
LmNvbnRlbnREb2N1bWVudCgpKSA/IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSA6IGpzTnVsbCgpKTsKQEAgLTI1NTUsMTIgKzI3
MjIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KAogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibXV0
YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRlc3RPYmosIFNWR1BvaW50Pjo6Y3Jl
YXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1cGRhdGVNdXRhYmxlUG9p
bnQpKTsKQEAgLTI1NzAsMTIgKzI3MzksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0
YWJsZVBvaW50KEV4ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBv
aW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgU1ZHUHJvcGVydHlUZWFyT2ZmPFNW
R1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnQoKSkpOwpAQCAtMjU4NSwxMiArMjc1
NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJzdHJhd2JlcnJ5Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmF3YmVy
cnkiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwpAQCAtMjYwMCwx
MiArMjc3MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZGVzY3JpcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
ZGVzY3JpcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZGVzY3JpcHRpb24oKSk7
CkBAIC0yNjE1LDEyICsyNzkwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0
aW9uKEV4ZWMKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpZCIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJpZCIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5pZCgpKTsKQEAgLTI2MzAsMTIgKzI4MDcsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiaGFzaCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJoYXNoIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5oYXNoKCkpOwpAQCAtMjY0NSwxMiArMjgyNCwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVw
bGFjZWFibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNjYwLDEyICsyODQxLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJu
dWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVy
KGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNjc1LDEyICsyODU4LDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXQKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpT
TnVtYmVyKGltcGwubnVsbGFibGVMb25nQXR0cmlidXRlKCkpOwpAQCAtMjY5MCwxMiArMjg3NSwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSgpKTsKQEAgLTI3MDUsMTIg
KzI4OTIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nQXR0cmli
dXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSgp
KTsKQEAgLTI3MjAsMTIgKzI5MDksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVTdHJpbmdBdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051bGxhYmxlSlNOdW1iZXIo
aW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKQEAgLTI3MzUsMTIgKzI5MjYs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdTZXR0
YWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0
cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJs
ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKCkpOwpAQCAtMjc1MCwxMiArMjk0MywxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NlCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVVTVlN0cmluZ1NldHRhYmxl
QXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nT3JOdWxsKHN0YXRlLCBpbXBsLm51bGxhYmxl
VVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNzY1LDEyICsyOTYwLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW4KIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjc4MiwxMiArMjk3
OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZSgp
KTsKQEAgLTI3OTcsMTIgKzI5OTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlKEV4ZWNTdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2
ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
ImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0
ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKQEAgLTI4MTIsMTIg
KzMwMTMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlcwogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wdXRGb3J3YXJkc0F0dHJp
YnV0ZSgpKTsKQEAgLTI4MjcsMTIgKzMwMzAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHV0Rm9yd2FyZHNBdHRyaQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051
bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJwdXRG
b3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
KCkpOwpAQCAtMjg0MiwxMiArMzA0NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRG
b3J3YXJkc051bGxhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ2lmaWVyQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5n
aWZpZXJBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5naWZpZXJBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ2lmaWVyQXR0
cmlidXRlKCkpOwpAQCAtMjg1NywxOCArMzA2NCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpTdHJpbmdpZmllckF0dHJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9i
ajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCkBAIC0yODc3LDcgKzMwODgsOSBAQCBib29sIHNldEpTVGVzdE9iakNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogCiAKIGJvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNT
dHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yODg4LDExICszMTAxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNTdHJpbmcKIAogYm9vbCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIlRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIlRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yLgogICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIp
LCB2YWx1ZSk7CkBAIC0yOTAxLDExICszMTE2LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHQKIAogYm9vbCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbnVt
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBwYXJzZTxUZXN0T2JqOjpFbnVtVHlwZT4oKnN0YXRlLCB2
YWx1ZSk7CkBAIC0yOTIwLDExICszMTM3LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqRW51bUF0dHIo
RXhlY1N0YXRlKiBzdGEKIAogYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDhfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CkBAIC0yOTM3LDExICszMTU2LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQnl0
ZUF0dHIoRXhlY1N0YXRlKiBzdGEKIAogYm9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im9jdGV0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PHVpbnQ4X3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMjk1NCwxMSArMzE3NSwxMyBAQCBib29sIHNldEpT
VGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0CiAKIGJvb2wgc2V0SlNUZXN0T2JqU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInNob3J0QXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJzaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQxNl90Pigq
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTI5NzEsMTEgKzMxOTQsMTMgQEAg
Ym9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdAogCiBib29sIHNldEpTVGVz
dE9iakNsYW1wZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
Y2xhbXBlZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjbGFtcGVkU2hvcnRBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MTZfdD4oKnN0YXRlLCB2YWx1ZSwgQ2xhbXApOwpAQCAt
Mjk4OCwxMSArMzIxMywxMyBAQCBib29sIHNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhl
Y1N0CiAKIGJvb2wgc2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImVuZm9yY2VSYW5nZVNob3J0QXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxp
bnQxNl90Pigqc3RhdGUsIHZhbHVlLCBFbmZvcmNlUmFuZ2UpOwpAQCAtMzAwNSwxMSArMzIzMiwx
MyBAQCBib29sIHNldEpTVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cihFCiAKIGJvb2wgc2V0
SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRTaG9ydEF0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDx1aW50MTZfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zMDIyLDExICszMjUxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
VW5zaWduZWRTaG9ydEF0dHIoRXhlY1MKIAogYm9vbCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsb25nQXR0ciIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJsb25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzAzOSwxMSArMzI3MCwxMyBAQCBib29sIHNldEpT
VGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhCiAKIGJvb2wgc2V0SlNUZXN0T2JqTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImxvbmdMb25nQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxp
bnQ2NF90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMwNTYsMTEgKzMy
ODksMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKgogCiBib29s
IHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzA3MywxMSArMzMwOCwxMyBAQCBib29s
IHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4CiAKIGJvb2wgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9X
VEZTdHJpbmcoc3RhdGUpOwpAQCAtMzA5MCwxMSArMzMyNywxMyBAQCBib29sIHNldEpTVGVzdE9i
alN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzCiAKIGJvb2wgc2V0SlNUZXN0T2JqVXN2c3RyaW5nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInVzdnN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1VTVlN0
cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzEwNywxNiArMzM0NiwxOCBAQCBib29sIHNldEpTVGVz
dE9ialVzdnN0cmluZ0F0dHIoRXhlY1N0YXRlCiAKIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAg
IHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0
dHIiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RPYmpBdHRyIiwgIlRlc3RPYmoiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpbXBsLnNldFRlc3RPYmpBdHRyKCpuYXRp
dmVWYWx1ZSk7CkBAIC0zMTI2LDE4ICszMzY3LDIwIEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9i
akF0dHIoRXhlY1N0YXRlKiAKIAogYm9vbCBzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAidGVzdE51bGxhYmxlT2JqQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVl
ID0gbnVsbHB0cjsKICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAg
ICAgbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIiLCAiVGVz
dE9iaiIpOworICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIiwgIlRlc3RPYmoiKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTMxNDgsNyAr
MzM5MSw5IEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cihFeGUKIAogYm9v
bCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKQEAgLTMxNTcsNyArMzQwMiw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRl
c3RPYmpBdHRyKEV4ZWMKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsZW5pZW50VGVzdE9iakF0dHIiLCAiVGVzdE9i
aiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgImxlbmllbnRUZXN0T2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRMZW5pZW50VGVzdE9iakF0dHIoKm5h
dGl2ZVZhbHVlKTsKQEAgLTMxNjcsMTEgKzM0MTIsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMZW5p
ZW50VGVzdE9iakF0dHIoRXhlYwogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0
cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9T
dHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCB2YWx1ZSk7CkBAIC0zMTg0LDEx
ICszNDMxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEEKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzIwMSwxMSArMzQ1MCwxMyBA
QCBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051CiAKIGJvb2wgc2V0SlNU
ZXN0T2JqSW1wbGVtZW50YXRpb25FbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJpbXBsZW1lbnRhdGlvbkVudW1BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltcGxlbWVu
dGF0aW9uRW51bUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2U8QWx0ZXJuYXRlRW51bU5hbWU+
KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMzIyMCwxNiArMzQ3MSwxOCBAQCBib29sIHNldEpTVGVzdE9i
akltcGxlbWVudGF0aW9uRW51bUF0dHIoCiAKIGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpBdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIlhNTE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQo
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93
QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIsICJU
ZXN0T2JqIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRYTUxPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7
CkBAIC0zMjM5LDExICszNDkyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVj
U3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAiY3JlYXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNyZWF0ZSIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwpAQCAtMzI1NiwxMSArMzUxMSwxMyBAQCBi
b29sIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlCiAKIGJvb2wgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzI3Mywx
MSArMzUzMCwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlCiAK
IGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1VTVlN0
cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzI5MCwxMSArMzU0OSwxMyBAQCBib29sIHNldEpTVGVz
dE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIoCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
SW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3Rl
ZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKQEAgLTMzMDcsMTEgKzM1NjgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIoRQogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8dWludDMyX3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzMyNCwxMSArMzU4NywxMyBAQCBib29sIHNldEpT
VGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVj
dGVkQm9vbGVhbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKQEAgLTMzNDEsMTEgKzM2MDYs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeAogCiBib29sIHNl
dEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicmVmbGVjdGVkVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVUkxBdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTMzNTgsMTEg
KzM2MjUsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdAogCiBi
b29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRVU1ZVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUs
IHZhbHVlKTsKQEAgLTMzNzUsMTEgKzM2NDQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRVU1ZVUkxBdHRyKEV4ZQogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZh
bHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTMzOTIsMTEgKzM2NjMsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZQogCiBib29sIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNDA5LDExICszNjgyLDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWwKIAogYm9vbCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4o
c3RhdGUpOwpAQCAtMzQyNiwxMSArMzcwMSwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21VUkxB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQ0NCwxMSArMzcyMSwxMyBAQCBi
b29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoCiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQ2MiwxOCArMzc0MSwyMCBAQCBi
b29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1CiAKIGJvb2wgc2V0SlNUZXN0
T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidHlw
ZWRBcnJheUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFu
YXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIsICJGbG9hdDMyQXJyYXkiKTsKKyAgICAgICAg
dGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ0eXBlZEFycmF5QXR0ciIsICJGbG9hdDMyQXJyYXkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZhbHVlLmdldCgpKTsK
QEAgLTM0ODMsMTEgKzM3NjQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihF
eGVjU3RhdAogCiBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
NTAwLDExICszNzgzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24KIAogYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25X
aXRoTWVzc2FnZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzUxNywxMSArMzgwMiwxMyBAQCBib29sIHNldEpT
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uCiAKIGJvb2wgc2V0SlNUZXN0T2JqQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM1MzYsMTEgKzM4MjMsMTMgQEAgYm9vbCBz
ZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbgogCiBib29sIHNldEpTVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlIGVjOwpAQCAtMzU1NSwxMSArMzg0NCwxMyBAQCBib29sIHNldEpTVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uCiAKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUp
OwpAQCAtMzU3MiwxMSArMzg2MywxMyBAQCBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjCiAKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM1OTEsMTEgKzM4ODQsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4YwogCiBib29sIHNldEpTVGVzdE9iakN1c3Rv
bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tQXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJjdXN0b21BdHRyIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEN1
c3RvbUF0dHIoKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNjA0LDExICsz
ODk5LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIHMKIAogYm9v
bCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJv
bmZvbyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJvbmZvbyIpOwogICAgIH0KICAgICBzZXRFdmVudEhhbmRs
ZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBl
dmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM2MTcs
MTEgKzM5MTQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLAog
CiBib29sIHNldEpTVGVzdE9iak9ud2Via2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CiAg
ICAgfQogICAgIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBj
YXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCwgdmFsdWUpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMzYzMCwxMSArMzkyOSwxMyBAQCBib29sIHNldEpTVGVzdE9iak9u
d2Via2l0Zm9vKEV4ZWNTdGF0ZSogCiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKTsKQEAgLTM2NDcsMTEgKzM5NDgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dAogCiBib29sIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
NjY0LDE2ICszOTY3LDE4IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVy
Q2EKIAogYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpA
QCAtMzY4NiwxNiArMzk5MSwxOCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250CiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
IiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMi
LCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGltcGwuc2V0
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgKm5hdGl2ZVZhbHVlKTsKQEAg
LTM3MDUsMTYgKzQwMTIsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkg
ewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsK
KyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsICJU
ZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYXV0byogY29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0zNzI3LDE2ICs0MDM2LDE4IEBAIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogYm9vbCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rl
c3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkp
IHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIlRl
c3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3NDks
MTYgKzQwNjAsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAog
CiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOworICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8q
IGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzc3MSwxNiArNDA4NCwx
OCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250CiAKIGJvb2wgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0
cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwor
ICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3OTMs
MTYgKzQxMDgsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAog
CiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOworICAgICAgICB0
aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGltcGwuc2V0V2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwpAQCAtMzgxMywxMSArNDEz
MCwxMyBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJf
dD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODMyLDExICs0MTUxLDEz
IEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3QKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBib29sIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9u
YWxBdHRyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBA
IC0zODUxLDExICs0MTcyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihF
eGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBib29s
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0
dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zODcwLDExICs0MTkzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMyhFeGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIGJvb2wgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0
aW9uYWxBdHRyNCIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3Rvci4KICAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CkBA
IC0zODg1LDExICs0MjEwLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBib29s
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI1Iik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNv
bmRpdGlvbmFsQXR0cjUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCiAgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUp
OwpAQCAtMzkwMCwxMSArNDIyNywxMyBAQCBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjVDb25zdHJ1CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQog
Ym9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNiIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yLgogICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI2IiksIHZh
bHVlKTsKQEAgLTM5MTQsMTEgKzQyNDMsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydQogCiBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
YW55QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlOwpAQCAtMzkyOSwxOCArNDI2MCwy
MCBAQCBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqCiAKIGJvb2wgc2V0
SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im11dGFibGVQb2ludCIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IG51bGxwdHI7CiAgICAgaWYgKCF2YWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6
dG9XcmFwcGVkKHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsK
LSAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAibXV0YWJsZVBvaW50IiwgIlNWR1BvaW50Iik7CisgICAgICAgICAgICB0aHJvd0F0dHJpYnV0
ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2lu
dCIsICJTVkdQb2ludCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMzk1MSwxOCArNDI4NCwyMCBAQCBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2lu
dChFeGVjU3RhdGUqCiAKIGJvb2wgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1
ZSA9IG51bGxwdHI7CiAgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAg
ICAgIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIHRocm93QXR0cmlidXRl
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiLCAiU1ZHUG9p
bnQiKTsKKyAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiLCAiU1ZHUG9pbnQiKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM5NzMsMTEgKzQzMDgs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdAogCiBib29sIHNl
dEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
c3RyYXdiZXJyeSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
OTkwLDExICs0MzI3LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUq
IHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJpZCIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGlu
dDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNDAwNywxMSArNDM0
NiwxMyBAQCBib29sIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3RhdGUsIEVuCiAKIGJvb2wg
c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVwbGFj
ZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gcHJv
cGVydHkuCiAgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVl
KTsKQEAgLTQwMjAsMTEgKzQzNjEsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0
dHJpYnV0ZShFeAogCiBib29sIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC00MDM3LDExICs0MzgwLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
TnVsbGFibGVMb25nU2V0dGFibGVBdHQKIAogYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmlu
Z1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51
bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVT
dHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CkBAIC00MDU0LDExICs0Mzk5LDEz
IEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUEKIAogYm9vbCBzZXRK
U1Rlc3RPYmpOdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0
YXRlLCB2YWx1ZSk7CkBAIC00MDcxLDExICs0NDE4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVs
bGFibGVVU1ZTdHJpbmdTZXR0YWIKIAogYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1Zh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nVmFs
dWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAt
NDA4OCwxMSArNDQzNywxMyBAQCBib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUo
RXhlCiAKIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51
bVR5cGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gcGFyc2U8VGVzdE9iajo6T3B0aW9uYWw+KCpzdGF0ZSwgdmFsdWUpOwpA
QCAtNDEwNywxMSArNDQ1OCwxMyBAQCBib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNl
cnZlZEVuCiAKIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgUmVmPFRlc3ROb2Rl
PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzQXR0cmli
dXRlKCk7CiAgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0KCk7CkBAIC00MTI1LDEx
ICs0NDc4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXgKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAg
ICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCku
cHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwogICAgIGlmICghZm9yd2FyZGVkSW1wbCkK
QEAgLTQxNDUsMTEgKzQ1MDAsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxh
YmxlQXR0cgogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ2lmaWVyQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9V
U1ZTdHJpbmcoc3RhdGUsIHZhbHVlKTsKQEAgLTQxNzcsMTQgKzQ1MzQsMTcgQEAgSlNWYWx1ZSBK
U1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKFZNJiB2bQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gdGVzdFBhcmFtID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQxOTcsMTQgKzQ1NTcsMTcgQEAgc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJl
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC00MjE3LDYgKzQ1ODAsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+
KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewog
ICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwpAQCAtNDIyOCwxNiArNDU5NCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKHN0YXRlKTsKICNlbmRpZgogICAgIH0KLSAgICBy
ZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJl
dHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5kaWYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9k
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bXBsLnZvaWRNZXRob2QoKTsKQEAgLTQyNDYsMTQgKzQ2MTUsMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdpdGhBcmdzIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC00MjYyLDE3ICs0NjM0LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgy
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0
aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ2
b2lkTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAgIGltcGwudm9pZE1ldGhvZFdpdGhB
cmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZyk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJieXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZU1ldGhvZCgpKTsK
QEAgLTQyODEsMTQgKzQ2NTYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kV2l0
aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBieXRlQXJnID0g
Y29udmVydDxpbnQ4X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQyOTcsMTcgKzQ2NzUs
MjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqQXJnID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKICAgICBpZiAoVU5MSUtF
TFkoIW9iakFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RXaXRoQXJncyIsICJUZXN0
T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RXaXRoQXJncyIs
ICJUZXN0T2JqIik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRo
b2RXaXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9jdGV0TWV0aG9kIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJvY3RldE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9k
KCkpOwpAQCAtNDMxNiwxNCArNDY5NywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRN
ZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9j
dGV0QXJnID0gY29udmVydDx1aW50OF90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MzMy
LDE3ICs0NzE2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRv
IG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvY3RldE1ldGhvZFdpdGhB
cmdzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRo
b2RXaXRoQXJncyIsICJUZXN0T2JqIik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJn
KSwgKm9iakFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxv
bmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9k
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
bG9uZ01ldGhvZCgpKTsKQEAgLTQzNTEsMTQgKzQ3MzgsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC00MzY3LDE3ICs0NzU3LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9k
V2l0aEFyZ3MiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJsb25n
TWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5sb25nTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJB
cmcpLCAqb2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2JqTWV0aG9k
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kKCkpOwpAQCAtNDM4NiwxNCAr
NDc3OSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9iak1l
dGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2RXaXRoQXJncyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGxvbmdBcmcgPSBjb252ZXJ0PGludDMyX3Q+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ0MDIsMTcgKzQ3OTgsMjAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0g
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMiwgIm9iakFyZyIs
ICJUZXN0T2JqZWN0IiwgIm9iak1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAyLCAib2Jq
QXJnIiwgIlRlc3RPYmplY3QiLCAib2JqTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwub2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcp
LCAqb2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZv
cmdlYWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVuZm9y
Z2VhYmxlTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1bmZvcmdlYWJsZU1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpOwpAQCAtNDQyMSwxNCArNDgy
MCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZyA9IHZhbHVlVG9TdHJpbmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQzOCwyOSArNDg0MCwzNSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29s
dmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFhQ
YXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIHJlc29sdmVyID0gSlNYUGF0aE5TUmVzb2x2ZXI6OnRvV3JhcHBlZCgqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXNvbHZlcikpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKCpzdGF0ZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFhQ
YXRoTlNSZXNvbHZlclBhcmFtZXRlciIsICJYUGF0aE5TUmVzb2x2ZXIiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAicmVzb2x2
ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyIiwg
IlhQYXRoTlNSZXNvbHZlciIpOwogICAgIGltcGwubWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBh
cmFtZXRlcigqcmVzb2x2ZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJs
ZVN0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5u
dWxsYWJsZVN0cmluZ01ldGhvZCgpKTsKQEAgLTQ0NjksMjAgKzQ4NzcsMjYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nT3JOdWxsKHN0
YXRlLCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ1NwZWNp
YWxNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDx1aW50
MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQ5MiwyMSArNDkwNiwyNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIGVudW1BcmdWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKICAgICBU
ZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOwogICAgIGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNl
PFRlc3RPYmo6OkVudW1UeXBlPigqc3RhdGUsIGVudW1BcmdWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvcHRpb25hbFZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51
bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJh
dGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImVudW1BcmciLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOwogICAgIGVudW1BcmcgPSBvcHRpb25hbFZhbHVlLnZh
bHVlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhlbnVtQXJnKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDUxNCwxMCArNDkzMSwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFy
ZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBlbnVtQXJnVmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CkBAIC00NTI3LDcgKzQ5NDcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFlbnVt
QXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpz
dGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkp
OwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoZW51bUFyZyk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ1MzUsMTAgKzQ5
NTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gZW51bUFyZ1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwpAQCAtNDU1MCw3ICs0OTczLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb3B0aW9u
YWxWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cigqc3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9i
ajo6RW51bVR5cGU+KCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVF
bnVtRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiLCBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsKICAgICAgICAgZW51bUFyZyA9IG9w
dGlvbmFsVmFsdWUudmFsdWUoKTsKICAgICB9CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxF
bnVtQXJnQW5kRGVmYXVsdFZhbHVlKGVudW1BcmcpOwpAQCAtNDU1OSwyMSArNDk4MiwyNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWly
ZXNBbGxBcmdzQW5kVGhyb3dzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHN0ckFyZyA9IHN0YXRlLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsICJUZXN0T2JqIik7CisgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9i
akFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3Mi
LCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
cyhXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24o
c3RhdGUsIGVjKTsKQEAgLTQ1ODIsMTQgKzUwMDgsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBzdHIgPSB2YWx1ZVRvVVNWU3RyaW5nKHN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDU5OSwxNCArNTAy
OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmciKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIHN0ciA9IHZhbHVlVG9VU1ZTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC00NjE2LDE0ICs1MDQ4LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFVTVlN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gdmFsdWVUb1VTVlN0cmluZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjMzLDE0ICs1MDY4LDE3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInNlcmlhbGl6ZWRWYWx1ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
c2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
c2VyaWFsaXplZEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNDY1MCwxNCArNTA4OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAib3B0aW9uc09iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3B0aW9uc09iamVjdCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9vID0gRGljdGlvbmFyeShzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApKTsKICAgICBhdXRvIG9vbyA9IERpY3Rpb25hcnkoc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgxKSk7CiAgICAgaW1wbC5vcHRpb25zT2JqZWN0KFdURk1vdmUob28pLCBXVEZN
b3ZlKG9vbykpOwpAQCAtNDY2NiwxMCArNTEwNywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NjgwLDEwICs1MTI0
LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aEV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7CkBAIC00
Njk0LDM0ICs1MTQxLDQzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImN1
c3RvbU1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21NZXRob2QoKnN0YXRlKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImN1c3RvbU1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjdXN0b21NZXRob2RXaXRo
QXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3Vz
dG9tTWV0aG9kV2l0aEFyZ3MoKnN0YXRlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicHJpdmF0ZU1ldGhvZCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
cHJpdmF0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFy
Z3VtZW50ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3MzEsMTQgKzUxODcsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVNZXRo
b2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcmd1bWVudCA9IHN0YXRlLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00
NzQ4LDIwICs1MjA3LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJhZGRFdmVudExpc3RlbmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdHlwZSA9IHN0YXRlLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHN0YXRlLT5hcmd1
bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3RhdGUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3Rl
bmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iamVjdCIsICJh
ZGRFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKICAgICBhdXRvIHVzZUNhcHR1cmUg
PSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTQ3NzEsMjAgKzUyMzMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVu
dExpc3RlbmVyOjpjcmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2Us
IGN1cnJlbnRXb3JsZChzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQotICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIs
ICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDEsICJsaXN0ZW5lciIsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiRXZl
bnRMaXN0ZW5lciIpOwogICAgIGF1dG8gdXNlQ2FwdHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50
b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDc5
NCwxMCArNTI1OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlVm9p
ZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CkBAIC00ODA2LDEwICs1Mjc0LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0
ZU9iaihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0
ZU9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLndpdGhTY3JpcHRTdGF0
ZU9iaigqc3RhdGUpKTsKQEAgLTQ4MjAsMTAgKzUyOTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNl
cHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwpAQCAtNDgzNCwxMCArNTMwOCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkBAIC00ODUxLDEwICs1MzI4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ4NjYsMTAgKzUzNDYsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtNDg4MSwxMCArNTM2NCwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00OTAxLDEwICs1Mzg3LDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKQEAgLTQ5MTgsMTAgKzU0MDcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2siKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6
Y3JlYXRlU2NyaXB0QXJndW1lbnRzKHN0YXRlLCAwKSk7CkBAIC00OTMxLDEwICs1NDIzLDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFy
Z3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aERvY3VtZW50
QXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhEb2N1bWVudEFyZ3VtZW50Iik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ5NDgsMTAgKzU0NDMsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50
QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbGVy
RG9jdW1lbnRBcmd1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxlckRvY3VtZW50QXJndW1l
bnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8qIGRvY3VtZW50ID0gY2FsbGVyRE9NV2luZG93KHN0YXRlKS5kb2N1bWVudCgpOwpAQCAt
NDk2MywxMCArNTQ2MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhD
YWxsZXJXaW5kb3dBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoQ2FsbGVyV2luZG93QXJndW1lbnQoY2FsbGVyRE9N
V2luZG93KHN0YXRlKSk7CkBAIC00OTc1LDEwICs1NDc2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9wdCA9IHN0YXRlLT5hcmd1bWVudCgw
KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtNDk5MCwxMCArNTQ5NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0
VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1
ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IDY2NiA6IGNvbnZl
cnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtNTAwNSwxNCArNTUxMiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFy
ZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIG5vbk9wdCA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCks
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NTAyNSwxNCArNTUzNSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3MiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZFR3b09wdGlvbmFsQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IG5vbk9wdCA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTA0
OCwxMCArNTU2MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQo
KSA/IFN0cmluZygpIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0
YXRlKTsKQEAgLTUwNjMsMTAgKzU1NzksMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmciKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFy
Z3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHZhbHVlVG9VU1ZTdHJpbmcoc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC01MDc4LDEwICs1NTk3LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9w
dGlvbmFsQXRvbWljU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gbnVsbEF0b20gOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoc3Rh
dGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CkBAIC01MDkzLDEwICs1NjE1LDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gQVNDSUlMaXRlcmFsKCJmb28iKSA6IHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTA4LDEwICs1NjMz
LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1
bHRWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5k
RGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
QXRvbWljU3RyaW5nKCJmb28iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3Ry
aW5nKHN0YXRlKTsKQEAgLTUxMjMsMTAgKzU2NTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
SXNOdWxsIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
c3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTM4LDEwICs1
NjY5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRl
LT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTUzLDEwICs1Njg3LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20gOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CkBAIC01MTY4LDEw
ICs1NzA1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0
ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTgzLDEw
ICs1NzIzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3Ry
aW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3Ry
aW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJp
bmcoKSA6IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CkBAIC01MTk4LDEwICs1NzQxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gZW1wdHlBdG9tIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
U3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwpAQCAtNTIxMywxMCArNTc1OSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxEb3VibGVJc05hTihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxEb3VibGVJc05hTiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PGRvdWJsZT4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwpAQCAtNTIyOCwx
MCArNTc3NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PGZsb2F0Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CkBAIC01
MjQzLDEwICs1Nzk1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmciKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbExvbmdMb25nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50NjRfdD4oKSA6IGNvbnZlcnQ8aW50NjRfdD4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAt
NTI1OCwxMCArNTgxMywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBj
b252ZXJ0PGludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTUyNzMsMTAgKzU4MzEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVk
TG9uZ0xvbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xv
bmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25h
bDx1aW50NjRfdD4oKSA6IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUyODgsMTAgKzU4NDksMTMgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVy
ID0gY29udmVydDx1aW50NjRfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtNTMwMywxMCArNTg2NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkg
OiB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwpAQCAtNTMxOCwxMCArNTg4NSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlz
RW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gVmVjdG9yPFN0cmlu
Zz4oKSA6IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CkBAIC01MzMzLDEwICs1OTAzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGIgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGJvb2w+KCkgOiBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkudG9Cb29sZWFuKHN0YXRlKTsKQEAgLTUzNDgsMTAgKzU5MjEsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbklzRmFsc2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbklzRmFsc2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4o
c3RhdGUpOwpAQCAtNTM2MywxMCArNTkzOSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBbnkiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbEFueSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gc3RhdGUtPmFyZ3VtZW50KDApOwpAQCAtNTM3
NiwxNyArNTk1NSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogb2JqID0g
bnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CiAgICAgICAgIG9iaiA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb2JqKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsICJUZXN0T2JqIik7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBw
ZXIiLCAiVGVzdE9iaiIpOwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxh
YmxlV3JhcHBlcihXVEZNb3ZlKG9iaikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC01Mzk0LDE3ICs1OTc2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklz
TnVsbChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBvYmogPSBudWxscHRyOwogICAgIGlmICgh
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgb2JqID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCFvYmopKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCAwLCAib2JqIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iaiIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIsICJU
ZXN0T2JqIik7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFw
cGVySXNOdWxsKFdURk1vdmUob2JqKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTU0MTIsMTAgKzU5OTcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IHJlc29sdmVyID0gbnVsbHB0cjsKQEAgLTU0MjQs
NyArNjAxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAg
ICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBpZiAoVU5MSUtF
TFkoIXJlc29sdmVyKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
WFBhdGhOU1Jlc29sdmVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAicmVzb2x2ZXIi
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiLCAiWFBh
dGhOU1Jlc29sdmVyIik7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhO
U1Jlc29sdmVyKFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNTQzMiwxNiArNjAyMCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFj
a0FyZyIpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2Jq
ZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0NDksMTkg
KzYwNDAsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZl
cnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghc3Rh
dGUtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAx
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyIpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRl
KGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
QXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0NjksMTYgKzYwNjMsMTkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAg
IGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxi
YWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTU0ODcsMTYgKzYwODQsMTkg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3Rpb25BcmciKTsKICAgICBhdXRvIGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6
Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNTUwNCwxOSArNjEwNCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5vbkNhbGxiYWNrID0gY29udmVydDxpbnQzMl90Pigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQo
MSkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5j
dGlvbkVycm9yKCpzdGF0ZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAi
Y2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0Z1bmN0aW9uQXJnIik7CiAgICAgYXV0byBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb246OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTU1MjQsMTYgKzYxMjcsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5k
T3B0aW9uYWxBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5k
T3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2s7CiAgICAgaWYg
KCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAo
IXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFs
QXJnIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CiAgICAgICAgIGNhbGxiYWNr
ID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAgICAg
aW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTU1NDIsMTAgKzYxNDgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBp
ZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlm
ICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICAgICAgY2FsbGJhY2sgPSBj
cmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rlc3RDYWxsYmFjaz4oc3RhdGUsIGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIH0KICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC01NTU0LDEw
ICs2MTYzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
U3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQo
MCkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBhdXRvIGNhbGxiYWNrID0g
Y3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+KHN0YXRlLCBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2Fs
bGJhY2tBcmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC01NTY2LDEwICs2MTc4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ28KICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25h
bE1ldGhvZDEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSk7CkBA
IC01NTgxLDEwICs2MTk2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0
aW9uYWxNZXRob2QyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuY29uZGl0
aW9uYWxNZXRob2QyKCk7CkBAIC01NTk2LDEwICs2MjE0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25h
bE1ldGhvZDMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QzKCk7CkBAIC01NjEwLDE5ICs2MjMxLDIyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgb2JqQXJnID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1l
dGhvZCIsICJUZXN0T2JqIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVy
bG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsKICAgICB9CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0
ZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTYzMywxOSArNjI1NywyMiBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMihFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
VGVzdE9iaiogb2JqQXJnID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
b2JqQXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9i
aiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIs
ICJUZXN0T2JqIik7CiAgICAgfQogICAgIGF1dG8gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgx
KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTY1NiwxNCArNjI4
MywxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTY3
MywxNCArNjMwMywxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQz
Ml90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NjkwLDE2ICs2MzIzLDE5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAg
YXV0byBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU3MDcsMTkgKzYzNDMsMjIgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIERPTVN0cmluZ0xpc3QqIGxpc3RBcmcgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgbGlzdEFyZyA9IEpT
RE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghbGlzdEFyZykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJsaXN0QXJnIiwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICJET01TdHJpbmdMaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJsaXN0QXJnIiwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01TdHJpbmdMaXN0Iik7CiAgICAgfQog
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGxpc3RBcmcpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTcyNywxNCArNjM2NiwxNyBAQCBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
NyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC01NzQ0LDMxICs2Mzg2LDM3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpB
cmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJv
YmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAw
LCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7
CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKCpvYmpBcmcpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOShFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01Nzc4LDE0ICs2
NDI2LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxMChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWlu
dDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTU3OTUsMTQgKzY0NDYsMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0
ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01ODEyLDEwICs2NDY2LDEzIEBAIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7CkBAIC01ODI0LDcg
KzY0ODEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwg
Y291bnQ7ICsraSkgewogICAgICAgICBhdXRvKiBpdGVtID0gSlNCbG9iOjp0b1dyYXBwZWQoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAiYmxvYkFyZ3MiLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgaSwgImJsb2JB
cmdzIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJCbG9iIik7CiAgICAgICAg
IGJsb2JBcmdzLnVuY2hlY2tlZEFwcGVuZChpdGVtKTsKICAgICB9CiAgICAgaW1wbC5vdmVybG9h
ZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MpKTsKQEAgLTU4MzMsNiArNjQ5MCw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMiwgc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CiAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihzdGF0
ZSk7CkBAIC01ODY5LDE5ICs2NTI5LDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QyKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
cjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0
aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU4ODksNyArNjU1Miw3IEBAIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVu
dCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iakFyZyA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgICAgIGlmIChVTkxJ
S0VMWSghb2JqQXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVzdE9iaiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RP
YmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIsICJUZXN0T2Jq
Iik7CiAgICAgfQogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
cihXVEZNb3ZlKHN0ckFyZyksIFdURk1vdmUob2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU4OTcsMTkgKzY1NjAsMjIgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVy
bG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9h
ZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IG51bGxwdHI7CiAgICAgaWYgKCFzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBvYmpBcmcgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBpZiAo
VU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iakFyZyIsICJU
ZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVz
dE9iaiIpOwogICAgIH0KICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTU5MjAsNiArNjU4Niw5IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3Vu
dCA9IHN0ZDo6bWluPHNpemVfdD4oMiwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYg
KGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC01OTM3LDE3ICs2NjA2LDIzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJh
bWV0ZXIyKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEoc3RhdGUpOwogICAgIH0KLSAg
ICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAg
IHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFRl
c3RPYmo6OmNsYXNzTWV0aG9kKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byBhcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGlu
dDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTU5NTcsMTYgKzY2MzIsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDbwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9i
ajo6Y2xhc3NNZXRob2QyKHN0YXRlKSk7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QxMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gYXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC01OTc5LDggKzY2NjAsMTEgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDbwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDEyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU5OTMsNiArNjY3Nyw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ28KICNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQg
PSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChh
cmdzQ291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwpAQCAtNjAwNCwyMCArNjY5MSwyMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAgICAgICAgIHJldHVybiBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKHN0YXRlKTsKICNlbmRpZgog
ICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5kaWYKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENs
YW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhc3NNZXRob2RXaXRo
Q2xhbXAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gb2JqQXJnc1Nob3J0ID0gY29udmVydDx1aW50MTZf
dD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIENsYW1wKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTYwMzAsMTQgKzY3MjAsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJjbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBvYmpBcmdzU2hvcnQgPSBjb252ZXJ0PHVp
bnQxNl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgRW5mb3JjZVJhbmdlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwNTAsMTQgKzY3NDMsMTcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9u
Z1NlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB1bnNp
Z25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwNjcs
MTQgKzY3NjMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InN0cmluZ0FycmF5RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0FycmF5RnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgYXV0byB2YWx1ZXMgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpA
QCAtNjA4NywxOCArNjc4NiwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImRvbVN0cmlu
Z0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBhdXRvIHZhbHVlcyA9IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFw
cGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJ2YWx1ZXMiLCAi
VGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCAiRE9NU3RyaW5nTGlzdCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDAsICJ2YWx1ZXMiLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCAiRE9N
U3RyaW5nTGlzdCIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKCp2YWx1ZXMsIGVj
KSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTYxMDcsMTQgKzY4MDks
MTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMy
X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTYxMjcsMTQgKzY4MzIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJnZXRFbGVtZW50QnlJZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiZ2V0RWxlbWVudEJ5
SWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBlbGVtZW50SWQgPSBB
dG9taWNTdHJpbmcoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9FeGlzdGlu
Z0F0b21pY1N0cmluZyhzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNjE0NCwxMCArNjg1MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImdldFNWR0RvY3VtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJnZXRTVkdEb2N1bWVudCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CkBAIC02MTYxLDM2ICs2ODcyLDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiY29udmVydDEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQxIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBw
ZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAidmFsdWUiLCAiVGVz
dE9iamVjdCIsICJjb252ZXJ0MSIsICJUZXN0Tm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2Jq
ZWN0IiwgImNvbnZlcnQxIiwgIlRlc3ROb2RlIik7CiAgICAgaW1wbC5jb252ZXJ0MSgqdmFsdWUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
MihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJjb252ZXJ0MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0
Tm9kZSogdmFsdWUgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQo
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF2YWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAs
ICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAs
ICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7CiAgICAgfQog
ICAgIGltcGwuY29udmVydDIoV1RGTW92ZSh2YWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MTk4LDE0ICs2OTE1LDE3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY29udmVydDMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQzIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNjIxNSwxNCArNjkzNSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImNvbnZlcnQ0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIHZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRP
ck51bGxDaGVjayhzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTYyMzIsMTAgKzY5NTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnRGdW5jdGlvbiIpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNy
ZWF0ZShpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKQEAgLTYyNDQsMTAgKzY5NzAsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9p
bnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJs
ZVBvaW50RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1By
b3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rp
b24oKSkpOwpAQCAtNjI1NiwxMCArNjk4NSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJvcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5iYW5hbmEoKTsKQEAgLTYyNjgs
MTQgKzcwMDAsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNTdHJpbmdNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gc3RhdGUt
PmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTYyODgsMTQgKzcwMjMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
dmFyaWFkaWNEb3VibGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBoZWFkID0gY29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBT
aG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTYzMDgsMjQgKzcwNDYsMjcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY05v
ZGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0g
SlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFko
IWhlYWQpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAs
ICJoZWFkIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAw
LCAiaGVhZCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CiAg
ICAgVmVjdG9yPE5vZGUqPiB0YWlsOwogICAgIEFTU0VSVCgxIDw9IHN0YXRlLT5hcmd1bWVudENv
dW50KCkpOwogICAgIHRhaWwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIC0gMSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMSwgY291bnQgPSBzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvKiBpdGVtID0gSlNO
b2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgaWYg
KCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCBpLCAidGFpbCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsIGksICJ0YWlsIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5v
ZGUiKTsKICAgICAgICAgdGFpbC51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CiAgICAgfQogICAgIGlt
cGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwpKTsKQEAgLTYzMzQsMTQg
KzcwNzUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYW55Iik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJhbnkiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhID0gY29udmVy
dDxmbG9hdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRl
OjpZZXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjM2MCwxMCArNzEw
NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlv
bihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9t
aXNlRGVmZXJyZWQpKTsKQEAgLTYzNzgsMTQgKzcxMjUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURl
ZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRB
cmd1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8
ZmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6
Tm8pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjQwMSwxMCArNzE1MSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNl
RGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjQyMSwxMCArNzE3NCwxMyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVz
dFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8
aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZl
cnNpb24pOwpAQCAtNjQ0MiwxNCArNzE5OCwxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjFQcm9taXNlKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8ZmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNjQ2NSwyMyArNzIyNCwyOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gcmVxdWVzdCA9IEpTRmV0Y2hSZXF1ZXN0Ojp0b1dyYXBwZWQo
c3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlcXVlc3QpKQotICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJyZXF1ZXN0IiwgIlRl
c3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iLCAiRmV0Y2hSZXF1ZXN0
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgMCwgInJlcXVlc3QiLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlzZU92ZXJsb2FkZWRG
dW5jdGlvbiIsICJGZXRjaFJlcXVlc3QiKTsKICAgICBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRl
ZEZ1bmN0aW9uKCpyZXF1ZXN0LCBEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAg
IEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CkBAIC02NDkxLDcgKzcyNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEoc3RhdGUpOwogICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEoc3RhdGUp
OwogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvblBy
b21pc2UoRXhlY1N0YXRlKiwgSlNQcm9taXNlRGVmZXJyZWQqKTsKQEAgLTY1MDIsNiArNzI2Nyw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28KIAogc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y1Byb21pc2VGdW5jdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihE
ZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBwcm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNjUxNCw2ICs3MjgyLDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDbwogCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNl
RGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVz
dE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRGVmZXJyZWRXcmFw
cGVyKHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihz
dGF0ZSwgZWMpOwpAQCAtNjUyMiwxMyArNzI5MywxNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwogI2VuZGlm
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGltcGwubWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
KTsKQEAgLTY1MzgsMTQgKzczMTIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcgogI2lmIEVOQUJMRShDT05ESVRJT04xKQogc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQxKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxPdmVybG9hZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NTU4LDE0ICs3MzM1
LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICNpZiBFTkFC
TEUoQ09ORElUSU9OMikKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMihFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRp
dGlvbmFsT3ZlcmxvYWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBh
ID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NTc4LDYgKzcz
NTgsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAjaWYgRU5B
QkxFKENPTkRJVElPTjEpIHx8IEVOQUJMRShDT05ESVRJT04yKQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwg
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAg
ICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CkBAIC02NTg5LDIwICs3MzcyLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxPdmVybG9hZDEoc3RhdGUpOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBhcmdz
Q291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIGFyZ3ND
b3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKIH0KICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDEoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY2MTMsMTQgKzcz
OTksMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lmIEVO
QUJMRShDT05ESVRJT04pCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDIoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNjYzMiw2ICs3NDIxLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBz
aXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5n
dWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKQEAgLTY2NDEsMTkgKzc0
MzMsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogI2VuZGlm
CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlv
bmFsT3ZlcmxvYWQxKHN0YXRlKTsKICAgICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkg
OiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0
YWNoU2hhZG93Um9vdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dGFj
aFNoYWRvd1Jvb3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dGFjaFNoYWRvd1Jvb3QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBpbml0ID0gY29udmVydERpY3Rpb25hcnk8VGVz
dE9iajo6RGljdGlvbmFyeT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjY2MywxMCArNzQ1OCwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInRvU3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0b1N0cmluZyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0
dHJpYnV0ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNTMgKzY3LDY1IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RP
dmVybG9hZGUKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRl
LT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIo
c3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWFycmF5QnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiYXJyYXlCdWZmZXIiLCAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiYXJyYXlCdWZmZXIiLCAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXIiKTsKICAg
ICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoKmFycmF5
QnVmZmVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAog
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7
CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyhzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlm
IChVTkxJS0VMWSghYXJyYXlCdWZmZXJWaWV3KSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiYXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyVmlldyIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJhcnJheUJ1
ZmZlclZpZXciLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlC
dWZmZXJWaWV3Iik7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Y3JlYXRlKCphcnJheUJ1ZmZlclZpZXcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1v
dmUob2JqZWN0KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
Kj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGJsb2IgPSBKU0Jsb2I6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghYmxvYikpCi0gICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgImJsb2IiLCAiVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQmxvYiIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJibG9iIiwg
IlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkJsb2IiKTsKICAgICBhdXRv
IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoKmJsb2IpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCiBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQo
Y2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIHN0cmluZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMjMsNiArMTM1LDkgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKUwogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhp
cyk7CiAgICAgVmVjdG9yPGludDMyX3Q+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50
MzJfdD4oKnN0YXRlLCAwKTsKQEAgLTEzNCw2ICsxNDksOSBAQCBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90Pigx
LCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KHN0YXRl
KTsKQEAgLTE1MCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczUoc3RhdGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczQoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMDgsMTggKzIyNiwyMiBAQCB2b2lkIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3RyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw5IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1
Y3RvcjxKU1Rlc3RPdmVybG9hZGUKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25z
dHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNT
RVJUKGNhc3RlZFRoaXMpOwogICAgIGF1dG8gc2VxdWVuY2VPZlN0cmluZ3MgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFZlY3RvcjxTdHJpbmc+KCkgOiB0b05hdGl2ZUFycmF5
PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNzcsMTAg
KzgwLDEzIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlMKIAogc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rv
cio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJpbmcgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtOTAsNiArOTYsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0
cnVjdEpTCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBz
dGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UxKHN0YXRlKTsKQEAgLTEwMiw3ICsxMTEsNyBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoc3RhdGUpOwogICAgICAgICByZXR1cm4gY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoc3RhdGUpOwog
ICAgIH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCkBAIC0xNjAsMTggKzE2OSwyMiBAQCB2b2lkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTggKzE1OCwyMiBA
QCBib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgpAQCAtMTk0LDE0ICsxOTgsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVt
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVtIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5hbWUgPSBzdGF0ZS0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIgKzEzNCwxNCBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UiLCAidmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
dmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwudmFsdWUoKS0+ZGVzZXJp
YWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwpA
QCAtMTQ5LDEyICsxNTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
cmVhZG9ubHlWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJy
ZWFkb25seVZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwu
cmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIDApIDoganNOdWxsKCk7CkBAIC0xNjQsMTIgKzE2OCwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAgICAgaWYgKEpTVmFsdWUg
Y2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFZhbHVlLmdldCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTE4MiwxMiArMTg4LDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWwKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBcnJheShzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9ydHMoKSk7CkBAIC0xOTcsMTIgKzIw
NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRv
bmx5VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRS
ZWFkb25seVZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNh
Y2hlZFJlYWRvbmx5VmFsdWUiKTsKICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUg
PSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwpAQCAtMjE1LDE4ICsyMjUsMjIgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMjM1
LDExICsyNDksMTMgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcgog
CiBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVl
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwg
MCk7CkBAIC0yNTIsMTEgKzI2OCwxMyBAQCBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyCiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDE1ICsxMjQs
MTggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5cGVkZQogCiB0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJU
KGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBoZWxsbyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJn
dW1lbnQoMSkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcigqc3RhdGUsIDEsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdFR5cGVkZWZzIiwg
bnVsbHB0cik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsIDEsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdFR5cGVkZWZzIiwg
bnVsbHB0cik7CiAgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRl
KGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RUeXBlZGVmczo6Y3JlYXRlKFdURk1v
dmUoaGVsbG8pLCAqdGVzdENhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlNOZXdseUNyZWF0ZWQoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3Zl
KG9iamVjdCkpKTsKQEAgLTIxMCwxMiArMjEzLDE0IEBAIHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRl
c3Ryb3koSlNDOjpKU0NlbGwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25l
ZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9u
Z0xvbmdBdHRyKCkpOwpAQCAtMjI1LDEyICsyMzAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
VHlwZWRlZnNVbnNpZ25lZExvbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPyBpbXBsLmltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CkBAIC0yNDAsMTIgKzI0NywxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIlRlc3RTdWJPYmoiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBl
ZGVmcyIsICJUZXN0U3ViT2JqIik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KQEAgLTI1MywxMiArMjYyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzQ29uc3RydWN0b3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVk
ZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0y
NzAsMTIgKzI4MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbigpKTsKQEAgLTI4NSwxMiArMjk4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzQXR0cldpdGhTZXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5
cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CkBAIC0zMDIsMTIgKzMxNywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0
cmluZ0F0dHJXCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVm
cyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7
CkBAIC0zMTcsMTggKzMzNCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmlu
Z0F0dHJXCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dFR5cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMzNywxMSArMzU4LDEzIEBA
IGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3QKIAogYm9vbCBzZXRKU1Rl
c3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRl
ZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDx1aW50
NjRfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNTQsMTEgKzM3Nywx
MyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0CiAKIGJvb2wgc2V0
SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNj
cmlwdFZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZh
bHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRl
LCB2YWx1ZSwgMCwgMCk7CkBAIC0zNzEsMTEgKzM5NiwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVk
ZWZzSW1tdXRhYmxlU2VyaWFsaXplCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVm
cyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODgsMTEgKzQxNSwxMyBAQCBib29sIHNl
dEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRl
ZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZz
IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00MDcs
MTEgKzQzNiwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlCiAK
IGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAg
LTQyNCwxMSArNDU1LDEzIEBAIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdl
dHQKIAogYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ0OCwxMCArNDgxLDEzIEBA
IEpTVmFsdWUgSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKFYKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVk
ZWZzIiwgImZ1bmMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byB4ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkg
PyBWZWN0b3I8aW50MzJfdD4oKSA6IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNDYzLDE0ICs0OTksMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic2V0U2hhZG93Iik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVk
ZWZzIiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGF1dG8gd2lkdGggPSBjb252ZXJ0PGZsb2F0Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwg
U2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC00OTIsMTQgKzUzMSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlw
ZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IHRvUmVmUHRyTmF0aXZlQXJyYXk8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBKU1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTA5
LDE0ICs1NTEsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgIm51bGxhYmxlU2VxdWVuY2VBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFi
bGVTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gc2VxdWVuY2VBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTI2LDE0ICs1
NzEsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25G
dW5jV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
ImZ1bmNXaXRoQ2xhbXAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhDbGFtcCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJnMSA9IGNvbnZlcnQ8dWludDY0
X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBDbGFtcCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC01NDYsMTAgKzU5NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlUG9pbnRGdW5j
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3Bl
cnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24o
KSkpOwpAQCAtNTU4LDE0ICs2MDksMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24iKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8gdmFsdWVz
ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTU3OCwxNCArNjMyLDE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWQKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
U2VxdWVuY2VGdW5jdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRl
ZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nU2Vx
dWVuY2VGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8U3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCkBAIC01OTgsMTQgKzY1NSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWly
ZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImNh
bGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImNhbGxX
aXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IHRvUmVmUHRyTmF0aXZlQXJyYXk8VGVz
dEV2ZW50VGFyZ2V0LCBKU1Rlc3RFdmVudFRhcmdldD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjE1LDEwICs2NzUsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
Im1ldGhvZFdpdGhFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aEV4Y2VwdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlw
ZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0
cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEyICsxMzQsMTQgQEAgdm9pZCBKU2F0
dHJpYnV0ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogYwogCiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJp
YnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmli
dXRlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRl
IiwgInJlYWRvbmx5Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnJlYWRvbmx5KCkpOwpAQCAtMTQ5LDE4ICsxNTEs
MjIgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25seShFeGVjUwogCiBFbmNvZGVk
SlNWYWx1ZSBqc2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTYXR0cmlidXRlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmli
dXRlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU2F0
dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U2F0dHJpYnV0ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTcmVhZG9ubHkuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NywxOCArMTE3LDIyIEBAIHZvaWQgSlNyZWFkb25seTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2UK
IAogRW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNyZWFkb25seVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBz
ZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFk
b25seVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQgUnVudGltZUFycmF5Ojpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSk7CiB9CiAKQEAgLTExMyw5ICsxMTYsMTIgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blBy
b3BlcnR5U2xvdEJ5SQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2Ug
ZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKQEAgLTEyNyw5ICsxMzMsMTIgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRoaXNPYmplY3QtPmdldExl
bmd0aCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTYsOSArNTYsMTIgQEAgdm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihWTSYgdgog
CiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRp
bWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2Jq
ZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV9tZXRob2QtPm51bVBhcmFtZXRlcnMoKSkpOwog
fQogCkBAIC03NSw2ICs3OCw5IEBAIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlT
bG90KEoKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVN
ZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU1ldGhv
ZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGV4ZWMtPmNhbGxlZSgpKTsK
IAogICAgIGlmICghbWV0aG9kLT5tZXRob2QoKSkKQEAgLTg3LDEzICs5MywxMyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAgIFJ1bnRpbWVPYmplY3Qq
IHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oYXNPYmplY3QodGhp
c1ZhbHVlKSk7CiAgICAgICAgIGluc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxJ
bnN0YW5jZSgpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSAKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
YykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCiAgICAg
ICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4o
YXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAgIGlmICghaW5zdGFuY2Up
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9CiAgICAgQVNTRVJU
KGluc3RhbmNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDExICs2
NCwxNCBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogCiBFbmNvZGVkSlNWYWx1
ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8UnVudGltZU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+
IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICghaW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
YykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAKQEAgLTgy
LDExICs4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iCiAK
IEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
eyAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8
UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICghaW5z
dGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7
CiAKQEAgLTEwMSwxMSArMTA3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZp
ZWxkR2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9
IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwogCiAgICAg
aWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAKICAgICBpbnN0YW5jZS0+
YmVnaW4oKTsKIApAQCAtMTE4LDkgKzEyNywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2Jq
ZWN0OjptZXRob2RHZXR0CiAKIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBp
ZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKLSAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE2Myw5ICsxNzUsMTIg
QEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogCiBib29sIFJ1bnRp
bWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50
aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0g
ICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC0xOTIsOSArMjA3LDEyIEBAIGJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWwKIAogSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpkZWZhdWx0VmFsdWUoY29uc3Qg
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
IGhpbnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBjb25zdCBSdW50aW1lT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICghdGhp
c09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgIAogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqZWN0
LT5tX2luc3RhbmNlOwogCkBAIC0yNTgsOSArMjc2LDEyIEBAIENvbnN0cnVjdFR5cGUgUnVudGlt
ZU9iamVjdDo6Z2V0Q29uc3RydWMKIAogdm9pZCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVj
dCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3MSw5ICsyOTIsOSBA
QCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAgICAgaW5zdGFuY2Ut
PmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIFJ1bnRpbWVPYmplY3Q6OnRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0g
ICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWct
aW4uIikpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVk
IHBsdWctaW4uIikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAg
ICAgSW5zdGFuY2UqIGdldEludGVybmFsSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3Rh
bmNlLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgSlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYs
IDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjgsMTIgKzY4LDE1IEBAIHZvaWQgQ0luc3RhbmNlOjpzZXRHbG9i
YWxFeGNlcHRpb24oU3RyaW4KIAogdm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25U
b0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZ2xv
YmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsK
ICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5n
KCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4
ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogCiAgICAgZ2xvYmFsRXhjZXB0
aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKQEAgLTE1NCw4ICsxNTcsMTEgQEAgSlNWYWx1ZSBDSW5z
dGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIAogCiBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tl
TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhvZCktPmluaGVyaXRz
KENSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9i
amVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXR0
ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpOwog
CiAgICAgQ01ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8Q01ldGhvZCo+KHJ1bnRpbWVNZXRo
b2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKQEAgLTE4NCw3ICsxOTAsNyBAQCBK
U1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0CiAgICAgfQogCiAgICAgaWYg
KCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVj
dC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkp
OwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFz
ZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMTk3LDYgKzIwMyw5IEBAIEpTVmFsdWUgQ0lu
c3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXQKIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9r
ZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KCFfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCkBAIC0yMTksNyArMjI4LDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZURl
ZmF1bHRNZXRob2QoRQogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
RXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3Ig
Y2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJmNBcmdzW2ldKTsK
QEAgLTIzNiw2ICsyNDUsOSBAQCBib29sIENJbnN0YW5jZTo6c3VwcG9ydHNDb25zdHJ1Y3QoKSBj
b25zCiAKIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFfb2JqZWN0
LT5fY2xhc3MtPmNvbnN0cnVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAg
LTI1OCw3ICsyNzAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KEV4ZWNT
CiAgICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5n
IG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhv
ZCBvbiBOUE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAg
ICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMzExLDYgKzMy
Myw5IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBD
SW5zdGFuY2U6OnRvSlNQcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBuYW1l
LCBKU1ZhbHVlJiByZXN1bHRWYWx1ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE5QSWRl
bnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihuYW1lKTsKICAgICBpZiAo
IV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKF9vYmplY3QsIGlkZW50KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzI4LDcgKzM0Myw3IEBAIGJvb2wgQ0luc3RhbmNlOjp0b0pTUHJpbWl0
aXZlKEV4ZWNTdGF0ZSoKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9y
IGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICByZXN1bHRWYWx1ZSA9IGNv
bnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50LCBtX3Jvb3RPYmplY3Qu
Z2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmcmVzdWx0VmFyaWFudCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzksNiArNzksOSBAQCB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0aW9uKE5T
CiAKIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFzX2V4Y2VwdGlvbikgewog
ICAgICAgICBBU1NFUlQoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQpOwogICAgICAgICByZXR1cm47
CkBAIC04Niw3ICs4OSw3IEBAIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9u
VG8KIAogICAgIGlmICghc19leGNlcHRpb25FbnZpcm9ubWVudCB8fCBzX2V4Y2VwdGlvbkVudmly
b25tZW50ID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSkgewogICAgICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBzX2V4Y2VwdGlvbik7
CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIHNfZXhjZXB0aW9uKTsKICAgICB9CiAK
ICAgICBbc19leGNlcHRpb24gcmVsZWFzZV07CkBAIC0yMDUsOCArMjA4LDExIEBAIEpTQzo6SlNW
YWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGUKIAogSlNDOjpKU1ZhbHVlIE9iamNJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGlt
ZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1l
TWV0aG9kKS0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tl
IG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGlu
dm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOwogCiAgICAgT2Jq
Y01ldGhvZCAqbWV0aG9kID0gc3RhdGljX2Nhc3Q8T2JqY01ldGhvZCo+KHJ1bnRpbWVNZXRob2Qt
Pm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEz
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtOTQsNiArOTQsOSBAQCBPYmpjRmllbGQ6Ok9iamNGaWVsZChDRlN0
cmluZ1JlZiBuYW1lKQogCiBKU1ZhbHVlIE9iamNGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgCiAgICAgaWQg
dGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0IE9iamNJbnN0YW5jZSo+KGluc3RhbmNl
KSktPmdldE9iamVjdCgpOwpAQCAtMTA5LDcgKzExMiw3IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2
YWx1ZUZyb21JbnN0YW5jZShFeGUKICAgICAgICAgfQogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9u
KiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CisgICAgICAg
IHRocm93RXJyb3IoZXhlYywgc2NvcGUsIFtsb2NhbEV4Y2VwdGlvbiByZWFzb25dKTsKICAgICB9
CiAKICAgICAvLyBXb3JrIGFyb3VuZCBwcm9ibGVtIGluIHNvbWUgdmVyc2lvbnMgb2YgR0NDIHdo
ZXJlIHJlc3VsdCBnZXRzIG1hcmtlZCB2b2xhdGlsZSBhbmQKQEAgLTEyNyw2ICsxMzAsOSBAQCBz
dGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTCiAKIGJvb2wgT2JqY0ZpZWxk
OjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5z
dGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZCB0YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3RhbmNlKj4oaW5zdGFu
Y2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0VmFsdWVUb09iamNPYmpl
Y3QoZXhlYywgYVZhbHVlKTsKIApAQCAtMTQxLDcgKzE0Nyw3IEBAIGJvb2wgT2JqY0ZpZWxkOjpz
ZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1MKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0
Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFtsb2NhbEV4Y2VwdGlvbiByZWFz
b25dKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBzY29wZSwgW2xvY2FsRXhjZXB0aW9uIHJl
YXNvbl0pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQpAQCAtMTU2LDEzICsxNjIs
MTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRyIGEsIAogCiBib29sIE9i
amNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwg
SlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghW19h
cnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2VydE9iamVjdDphdElu
ZGV4OildKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJy
YXkgaXMgbm90IG11dGFibGUuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkg
ewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJy
b3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRz
IGFycmF5IHNpemUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAt
MTc0LDIxICsxODMsMjQgQEAgYm9vbCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBl
eAogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFsdWUub2JqZWN0VmFsdWUg
YXRJbmRleDppbmRleF07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhj
ZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRpb24uIikpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9
CiAKIEpTVmFsdWUgT2JqY0FycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW50IGluZGV4KSBjb25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoaW5kZXggPiBb
X2FycmF5LmdldCgpIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBz
aXplLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgIEB0
cnkgewogICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0SW5kZXg6aW5kZXhd
OwogICAgICAgICBpZiAob2JqKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVU
b1ZhbHVlIChleGVjLCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsK
ICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKLSAgICAgICAgcmV0
dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7
CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMjMyLDkgKzI0NCwxMiBA
QCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2VsbCosCiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKE9iakNSdW50aW1l
T2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNDIsNyArMjU3LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIE9iamNJbnN0YW5jZSogb2Jq
Y0luc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxPYmpDSW5zdGFuY2UoKTsKIAog
ICAgIGlmICghb2JqY0luc3RhbmNlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1
bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihleGVjLCBzY29wZSkpOwogICAgIAogICAgIG9iamNJbnN0YW5jZS0+YmVnaW4oKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEpTVmFsdWUgY29udmVydE5TU3RyaW5nVG9TdHJp
bmcoRXhlY1N0YXQKIEpTVmFsdWUgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoRXhlY1N0YXRlKiwg
dm9pZCogYnVmZmVyLCBPYmpjVmFsdWVUeXBlLCBSb290T2JqZWN0Kik7CiBPYmpjVmFsdWVUeXBl
IG9iamNWYWx1ZVR5cGVGb3JUeXBlKGNvbnN0IGNoYXIgKnR5cGUpOwogCi1KU09iamVjdCAqdGhy
b3dFcnJvcihFeGVjU3RhdGUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpOworSlNPYmplY3QgKnRocm93
RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIE5TU3RyaW5nICptZXNzYWdlKTsKIAogfSAv
LyBuYW1lc3BhY2UgQmluZGluZ3MKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMxMCwxMCArMzEwLDEwIEBAIE9iamNWYWx1ZVR5cGUgb2JqY1ZhbHVl
VHlwZUZvclR5cGUoY29uc3QKICAgICByZXR1cm4gb2JqY1ZhbHVlVHlwZTsKIH0KIAotSlNPYmpl
Y3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBOU1N0cmluZyAqbWVzc2FnZSkKK0pTT2Jq
ZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIE5TU3Ry
aW5nICptZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKLSAgICBKU09iamVjdCAqZXJy
b3IgPSBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIEpTQzo6Y3JlYXRlRXJyb3IoZXhl
YywgU3RyaW5nKG1lc3NhZ2UpKSk7CisgICAgSlNPYmplY3QgKmVycm9yID0gdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NyBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRv
IGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRo
b2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsTWV0aG9kKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpT
TlBPYmplY3Q6OmNhbGxNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjYWxs
T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y2FsbENvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVj
dDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHJvcGVydHlHZXR0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVj
U3RhdGUpOgorCiAyMDE2LTA4LTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RvcCB1c2luZyBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9u
IGluIFdlYlBhZ2VQcm94eQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRo
b2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSlNOUE1ldGhvZDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05Q
TWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7
CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpAQCAtNzgsNyAr
ODEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhvZChleGVjLCBqc05Q
TWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IH0KIAogQ2FsbFR5cGUgSlNOUE1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOSArMTA3LDEyIEBAIE5QT2JqZWN0KiBKU05QT2JqZWN0
OjpsZWFrTlBPYmplY3QoKQogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9i
amVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
Ly8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFtZXRob2ROYW1lKQpA
QCAtMTQyLDcgKzE0NSw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1ldGhvZChFeGVjU3Rh
dGUKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNbaV0pOwogCiAgICAg
aWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikp
OworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywg
IkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFsdWUgcHJv
cGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVz
dWx0KTsKQEAgLTE1MSw5ICsxNTQsMTIgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsTWV0aG9k
KEV4ZWNTdGF0ZQogCiBKU0M6OkpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE9iamVjdChKU0M6OkV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVD
VF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJu
IHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQg
PSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgVmVjdG9yPE5QVmFyaWFudCwgOD4gYXJndW1l
bnRzKGFyZ3VtZW50Q291bnQpOwpAQCAtMTgyLDcgKzE4OCw3IEBAIEpTQzo6SlNWYWx1ZSBKU05Q
T2JqZWN0OjpjYWxsT2JqZWN0KEpTQzoKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZh
cmd1bWVudHNbaV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBt
ZXRob2Qgb24gTlBPYmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIp
KTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBW
YXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVh
c2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE5MSw5ICsxOTcsMTIgQEAgSlNDOjpKU1Zh
bHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNh
bGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NF
UlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAoIW1fbnBPYmplY3Qp
Ci0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHNpemVf
dCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIFZlY3RvcjxOUFZh
cmlhbnQsIDg+IGFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTIxOCw3ICsyMjcsNyBAQCBK
U1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjCiAgICAgfQogCiAgICAgaWYg
KCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVy
cm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKICAgICAKICAgICBKU1ZhbHVlIHZh
bHVlID0gbV9vYmplY3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIHJlc3VsdCk7CiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZyZXN1bHQpOwpA
QCAtMjY1LDEwICsyNzQsMTMgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1
Y3REYQogCiBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3Qg
PSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25w
T2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCkBAIC0yOTksMTAgKzMxMSwxMyBAQCBib29sIEpTTlBPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChKU09iCiAKIGJvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVj
dCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlz
T2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM1Myw2ICszNjgsOSBAQCBib29sIEpTTlBP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKCiAKIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgQVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVSSVRTKGluZm8oKSk7
CiAKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJvbC4KQEAgLTM2MCw3ICszNzgs
NyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghbV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zODksMTAgKzQw
NywxMyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0CiAKIHZvaWQg
SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRp
b25Nb2RlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0KSB7
Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQzNywxMSArNDU4LDE0IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU08KIAogRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0
PEpTTlBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCBpbmZvKCkpOwogICAgIAogICAgIGlmICghdGhpc09i
ai0+bV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICghdGhpc09iai0+
bV9ucE9iamVjdC0+X2NsYXNzLT5nZXRQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3NywyMyArNTAxLDI2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVj
dDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9i
amVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgaW5mbygpKTsK
ICAgICAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7
CiAKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlkZW50
aWZpZXIocHJvcGVydHlOYW1lKTsKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJv
bC4KICAgICBpZiAoIW5wSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBucElkZW50aWZpZXIpKTsK
IH0KIAotSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNT
dGF0ZSogZXhlYykKK0pTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAgIHJldHVybiBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJU
cnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKKyAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlRocm93U2NvcGUmKTsKIAogICAgIE5QUnVudGltZU9iamVjdE1hcCogbV9vYmplY3RN
YXA7CiAgICAgTlBPYmplY3QqIG1fbnBPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1l
T2JqZWN0TWFwLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3NCwxMiArMjc0LDE1IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpzZXRHbG9iYWxF
eGNlcHQKICAgICAKIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9u
VG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGds
b2JhbEV4Y2VwdGlvblN0cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7
Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpKSk7CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpKSk7CiAgICAgfQogICAgIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5n
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0w
OC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNl
IHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRl
IGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Om1vdmVHbG9iYWxF
eGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToK
KwogMjAxNi0wOC0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgZG9jdW1lbnQudGl0bGUgc2V0dGVyIGNhbid0IHRocm93LgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MzIsMTIgKzE2MzIsMTUgQEAgdm9pZCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OnNldEdsbwogCiB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOworICAgICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihl
eGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KIAogICAgIGdsb2JhbEV4Y2Vw
dGlvblN0cmluZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDggKzIxOSwxMSBAQCBKU1ZhbHVlIFByb3h5SW5z
dGFuY2U6OmdldE1ldGhvZChKU0M6OkV4CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6aW52b2tl
TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9k
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5o
ZXJpdHMoUHJveHlSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1p
biBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBs
dWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKIAogICAgIFByb3h5TWV0aG9kKiBt
ZXRob2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgp
KTsKICAgICBBU1NFUlQobWV0aG9kKTsK
</data>
<flag name="review"
          id="310802"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="310811"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>287359</attachid>
            <date>2016-08-29 17:46:32 -0700</date>
            <delta_ts>2016-08-30 00:10:08 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews117 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1358544</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
aWRlby1jbGlwLWNoYW5nZS1zcmMtc3RkZXJyLnR4dFVUCQADFcvEVxXLxFd1eAsAAQT1AQAABBQA
AADt07GOwjAQBNCer3AJBXHskBCQKCACiQIdEiVC0eKswGDiaGOQ/PfH3RVHRUcBcjdbzbxityIb
p8k4zaJEyB3TDi/Q+lqVhW38mmyD5Dxr9aEGY7BiSDTpCznMU9Y9L/RhBi1+7U+o3JzIUrmsb2B0
BQ6rHuvqxwsc4xt7JYUFqCPywhKusNLwn/oizWQkBzG/VzvrfIMtXxvwSPxe9pfK6c/ASDGja2Qy
zvPONiiCIiieKLI4flRs0L0FQo6SgAiIFyFE8gmfLQZBERRB8av4BlBLAwQKAAAAAADHhh1JAAAA
AAAAAAAAAAAADQAcAGRpc3BsYXlsaXN0cy9VVAkAAyXLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAMeGHUmjV/3oUAAAAI4AAAAyABwAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10
cmFuc2Zvcm1zLXN0ZGVyci50eHRVVAkAAyXLxFcly8RXdXgLAAEE9QEAAAQUAAAAcy9KLMjITC52
zs8rSa0osbJKTy1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAoSk3OL0rJzEsHyoC1
FetxuaMbVIxmEDGGAABQSwMEFAACAAgAx4YdSfKWldVHAAAASQAAACkAHABkaXNwbGF5bGlzdHMv
bGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVUCQADJcvEVyXLxFd1eAsAAQT1AQAABBQAAABz
L0osyMhMLnbOzytJrSixskpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4v
SsnMSwfKgLUV63EBAFBLAwQUAAIACAB1iB1JmIPmsm9FAAAHoQEAIgAcAER1bXBSZW5kZXJUcmVl
LTEyMzc5LWNyYXNoLWxvZy50eHRVVAkAA13NxFddzcRXdXgLAAEE9QEAAAQUAAAA7J1rc9u4koY/
L38FP2zlyJlxQoB3ldcpW5YnnvhWlpxMnakUCyRBm2uK1JCUL+fXbwOgJIqWbCNxcmZPQTWVkXnp
fhsA0f2QoH1eFhGtqr6++jmYTaYXNI9pOS4p1f9E2HT9r9o5qa+7h8Ln/ecim01o9f7z2fHlyfD9
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
zXHnx8gtP8oFREay8KchFEHfIDI/BPFu5vNDVH2LKqF/H1XSfxRVMn4gVcKvRpXI61El83WpEtJa
rtRypZYrtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVKW1wJtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVK
LVdquVLLlba4kt5ypZYrtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVKLVfa4kpGy5VartRypZYrtVyp
5UotV2q5UsuVWq7UcqWWK7VcaYsr4ZYrtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVKLVdquVKTK2mq
n9H8HvrwL4dTf7PNiiWp/MsbmNoxcdeLioOeoqoZfeypK3dqnkcDj7EQGrxVA1dLbMukhgULMvP3
3RFsNMAL8omncSVBVGtByEJMoxqXle9r8OZN7aZDxR07G0CJmtkN9QICb3DWt/imaXmiBa4jbfsO
WzSgXXdwS5C+QwniDcaGJaHNGAjjDZg3ANawfgtvIDsadK4kmtdlQWDzaGhB/szCuKEdabrGvxUu
03eNCchSTtO7CHKAOry86Ym5ZCvjLEszdZgGrLyyvtNUrvl/x3++mHksKxsRVhRlECU0e1JPZvSO
5XzaNF6a2q1Mqb/Ud6PFbH7FkgASdcZg4v38888H6pE+wkNi4GGX9AdG19CNSdceItIdjO2hMZ7o
iGj9Y/X9bRovZix/f3txenM2fv/2/aa0JQrtEWkwCbgTAUXjYhha6jtYR9VXiV6zvJjeR7NqcXU0
QDPRhs5kYgwBiDnoGn1sde0+GXaH1rA/GgwIRsjehWaf1E1clr6Ny7KDXbgW83maFXVoxkTT+mg4
6poIa11jAD8G2tjqEqs/Mo2+oaPx5AXQ6oI30AHl3UJnh47F0e0PwR1TM97BTfDrEB3idwB0iMZ4
ONH1rk3G4EOdjOHdaNzVDTLQzP5wgBxjF9BNyYch/9pt/t0F728ZhAbINe/7jT51/JT59hZ+j+mI
z72t7xPfhRuNdcuydNwdOho4eDLB3T4mTtchDtbNkWUQW9+Fu5S4G2/ZVscZ0GBrFiBw/w6c+xxs
4f5kPLGHXXs8sbqGjayuMyS4i/rmwMaWifWRvQfofs9WjTWoyLSItwXV9IjTmBIbX9G+07Ejqz/W
x+DT0ahrEIK6A2zh7mSk6X3TGUyM8TOOLeU+596yh1Ii5InAJDZFa+Sri4Hl6OBk/sWAascgxqF+
iLk/tf8n7tqa3Lix87t+RR5dtYUR7pdHXL1O2ZEirZ28ks2mPPGIo52LY+fX50NzyGk0QYq1q0pe
rDHRA5wDnMv3nYMe2ixgrETRqGGwXhBnEQMkz86EnKWQGvI9Pz5UZ3pbf322mB24G5aL4cMVnU4U
v1H39ZefXr47/sWjjbthNfpReK1OBUtjQ0QMhnihGRHOxuLg2lxLLP1xQgNvf7xdPyD0vi2HvXh8
++7LuPv+x/7u7B+/xZZ2hWh1mLLaUoeBL456Cvpx9QX0Aqbpbupv4L91E0vQKiVJlA4KhxwlsZpH
AhVSTgAqiZWLmsTVw/p+19dk9thcgv7D8ydaHQfR0XG7PpzTC+ba7b8y5XBSkvEbTm8EdNSMqggi
ThDJOU6LekSICLvJjGuEj8xinBnKfr63Z2ZuRdt2TEgZvggKj+Pw/HD7BC8z09YrQwWcjN7YmrsC
F7aUQrwXNXchnVpaLOHJ28R98kz5iyfw8WX2/rYeRt+0Ioqe3GIhd/3OXQCPSiZevlPnERtr8Xuy
Sq5CQfqhgUTBLVIbhA5eFhKz4kEZbDFlFyXvzN9XovPgQh/Z0QdksrrB60GuHg/9hO+4NnXvmRI+
qkCokrAMpZHzbMTeUw8n8IbKKcSdtYzjhK00dt2RxumDwcLxX6RgDMFWV5RgAzKX83BDjSQGBEtc
Cpaw6DMFpEIac98moBwWbyUeehKPumMP4y/v/XFdaHAjbxR+cfoXigQOAiAL8kWpmUMnS5zDtuZo
pDa6OCE68eT9w+3vYDUL06hLnbeHOtoqMZpTJfREMZpYODTWbG5YtWczxfVsRSoZbqgBGYkwQhOn
QyDAEVElIHVa2DXSz9c4E+2GM6asV7ajxWq9iOg/rXafHu5/H+sJ1Ker9Brol3KZiIq2HkAFQVJb
4qNncMUQDY3XSH+Yuy/5YbSR2mw7AcWu9cEBf//p9nE4WL1i1eQ5kw5ZxhKbIuJehrWH5CNxIsJI
LA/UX457fhjGu1rXGL+afX4fB0zQf6yV7k2rQMei7MgPjjz85S+r9e3RmXl1AGs9556CDpmKSsAG
SSgBGSfSwi21wQY3CymLWdrlx86mOro5bOriu4a/k5LfKDoZskdeQ5JBHrfSww0dNlcxQQxyPeMe
1CP1U14755t25bEjjhm226bY89fx9vMGZPU7ORkmn2CGTQwUPBaSJBCvyBSASVmEBaaUY0F5p/I1
pvkyef8kXwZboYdOZnDD9niE958/3+/iw59fnu4P+6hBotmN2O9kNtYZCX9CdAZqj0jUQVToTlMR
0gaWneru5OnMrWCbDnJbKbmIVu/33/K+2g2j363u/ny8fZy7PMW+6cAiSZEjb8CViHWCEaapZIFK
66K5Zl87y/T3uPPgm1YD1VFrnvt+Pkl+MkStjEvE6wQlPHPIwhTGwV3xGVTDZvOtkt/PnaNYOdOT
2S0A5uNqt1nf/3EQH7yyAkw1cXwFyiGAfAzcXbAaxUyIQBUFwNMpDVpyCUY0My9EW3VEW7NDCPjx
djeuHvzdpxFavm4st3vLjTF4hB7nHOCZVmCe0RGqU2AwGxOF+T8KsB0xWzWHzamawwDIsD+B+/V/
DTf+6J+yYjejXI0eiYRYsVuSwG5gpUQXZZI0hhkT20A7n+VNu5LtLY9Au56W/3UfWMjqcceOx+9s
RfDVCU3iIYuUiaaV2HvAHe+AfpKnubgkJDO5leR0woU8nUg7bMbDqa8fP9/QoyCVC3vheVY6El6P
WZhowNUFjp4Vx3VmnobQijCbo117s+2tvV1CwaNt1HDE6i/MPqqfTPA6OI1UREyWSPEswMUF0Hbw
JhdWmM5F/lMW+Dre6jB2Yus4qMP+3Q7PQ62oHC1KgY6pKnH03njwFiIp4zUUgYxpICrwGR1koIaX
1O7jYq437ZL6VI4to4u9/OsPr3iU3XBeGSKvxNU50D/BFVECpERoJEyvCvJ5cUzExLn8CjW8mmDN
U+wPlx99HX/TqsU6uqphgVvj3f3zJt0Pxywm+IuxeMs5444Sz301YQ0TDlyTGBWOhNkk01Xo9bhC
X/zj8Fz6De1Qtg1jZjs2KeAIYRmVsrp/PSWOUCqS0yQLAWyDaECsgO9lEGorQvDCmEvRv4M8sbTt
yOOWJbxaHfr56fZu2s3KY3AIU0gSQJoxREVYKiAyljNivc9EIejTJItiMly1mYcFzmzmYXgu/MjU
afgaueIH9yv3u6f3q4fH8eG4nULujUDHIoX0nDgwXyIQxkEKMicMpk5tRkRV6ZtbvP/bx/4zH16+
RHfCDkupG5W5MR2VjV2c15eH292s5Hzzvv5/taY9VNYTmEA+K9kUQHcPNAQrIrbURgunGWEzCV38
t6jIvW9laUBeHVro53r6rReR7OM41JbUf+wvMBwpgJiQEq/xVUfGdaFEh1J5AHdIlcEQE3wCRzA5
y6vKA+1CZytfs2cadYQ6dfdRymPC/+PzHb/hr7WiGzaRKicVL4jECT6EdKYUsAd0yVmBICTteVRt
cpjP0whgxo6LWHEsWA3PXx5fBZDUTruXrU/MFkfA7mqkcYwEKylRiEbaRq6U0gtuOZunEcC6U140
Or480OrgP42b29WRdCgNjeSUK6MvVoHpBp6RnYoIxKXskCuD1Jhe5PSV0vFh8vPBZRpuBHdi6Agu
xgNY//vz6mG1ewLgPNbsdbW+Caj5AjOWjHCjITEcjDiuPElWMM2sFlr2y33LSRuJ1vaU8uBDu6w7
vfv4/LBdDbUAb25krcCbqY/hM2OxgC7IJGvFoAgScsb/RstE7fAJd7mMepz5TKnpMNxKPXYMYFB2
coHT0vX29YvCv9P7IraCJ9d4JSXAUlEVMkF8n4HvCnhozDYrJXUSrlxVv379LvLLlezX5960sndC
1DCOJynz7v7h45+7oUanfSdk+rfCLaZo5IhGyOiZCEUdcTp7BCcALuUKlS5/8+RzlOecE7wMN7pu
ek6wEZslYx2H293tsXnFpqK9ZckneK0OWtRWuSX4Aa7L4B0GiDNMZbfzXHU+50KoTkzb2PWiPnR0
6x/e1VLLPqxIo+sJwFwCFaEQry2YFIgL8R6AVwH9BeaN4EleF1J+ePeVoPLDu1b4Fe8Iv6YL67n/
Mu4+3R1qFxPgeilipOAKsqQlRbBChFCZOOphQY5HAVaRo7f/cBFjP9YKvGY9gZf96NXz5vb+5hkn
9njj688/72obHVLzqWrPpryiIK90HDytwPAZbD5kw4n0LuasbVL2K4Z/mPkMTTsMNxqMtLPlI1ve
XIBTRUCvFYJvD1FwD+ZbJDa6CMR0VjSxgVpiYzSR12JAEVc2HI7LnG06HJ9oFemA9XGs3afmKF5h
3w/vprsMHAR8OgWq6EEd6iJVzMapvoikGgViUEJclUmoYni0uXwlGZy91TANtZJ3aA/46ZJmfFj9
d8R8D6ubNULv3TilADkRDlh8Tayulr1VIfViAA6Bwfi5yyQYmpiWBimg47fVFw9x8u1yjbd1r8fd
U21HDO8+vo7PFdhyd1o4wodHNJBuV592949Pt8NP4+NjvfnU9vPhQxODQ66SQhMVkbiEBG9yCPhE
Bc9BPBU1ZVE9uTxvI6LUHRHlejw187vxl3lrTcE8RN3j/Q/1RgbYm1Iwc1h2qO0pRTwLgmQrLaBz
olrb65trF3trvtWhUyDbVkLXggVk5dVmfBqHp/uHx2F/DWZP8h0g9B7CKs+kARPV032DJBDheaaA
1MUDy4IBsKsIQMJS6bDU+esxJ481ail5ioG2toLg9TJjHfP5nl3t7/iAbduXLFB/qH0Op4SqtWtj
wduECBwJTEviLHfagjaIr2SBZq2vYoejLGeS3XG8URvo/1RtZ5YWOdRKyW8IJlPJZB+xrLjRe/B6
+LGeqddZBh6JR6JD1oYjBYfAVTRLIpcSLA+XlX5Z4ELFZhG56ut/pzqshmWZcrpUMscC//KduBF7
JsOnMnJQ2WeNhAHD40QEC/ARMyfJKO0jTUG7yyd2ssTJpZYWamxXnc4PPjx2FT+sAE92w/jaV5wE
FRo0a0JEOlZBQUGdBFRKLFotM/iLN/+4oE2po5WgEX5tOvu+tkvY8eNq92ner9rfe5n+rViJZcUN
KGxU9dIUSDVUgb9kGxXlAjBKxG8OtOcinWkVzZ5olB7EaU18u1kt67ir3+csiU8qW+tu+FTa4pQJ
Xhuf2he6J5/BwNCU1sjwtcJrLl/x8L98jSHNn2gUGDenhWh8eOwkx+/jTx9fy+HGWjhJLUYVxXAW
9aQQuIjIpt5ZDOD4RXEhhRWY96vx7PuH1Zdfb88VZBvLawRZqDB2VBjdQYXf/rjbHAs2xk6d8Bqc
KC0xGalIYTW3C5MRppjD3rtUHGcBoKrLd14nbOTY8o4DbPnxNtr35T8//rp6GDcnbc4YuAwqeRID
q20iCtIl4c/Kg974FEUJ6Ru1OVsZZvK7CXMv5K8fLq+s3d1/ut097m8dzxvOyftkYMkAHi4RYRXo
YymGpAxaWbSutYBr8vc0/1d9di7Fmebi7IlWT2Y6eq71yE9h17++z983F2k0NyklR7ytfAiZmwQu
4K/ac+e9cMz5q3FWnfwC0qrDreDr1angwqwW2Xm9Gn57/jJPbLCyl6tYevJdqyE5raRIgNAJKjU4
kqGEOuFF0pKaHpk+1SIsVpqrsB9704q67sjvltewvh934/5dzNXdR6Az5KZDzOTU7QuurhSbEmME
1CJUDeqtkVCTBQNjdUHkfFVLqLNWX53Og61uzvZ0W3Wqpul5fErj+vnTj/efYKKf5vblAJiUYZRk
XzvzWoMpFUkJPlc5siC1Z9d2Z5brnC97LJ9sNVt3Tg2+PO/ZfBg/3T4+PfzZdG1qYMuSJQtQEsBB
QJ9UrD15sFdjVIxURz2F2P+vpk0r9ptWQd7T+tip+m388/OnY5dqulVhjJXKSgDEDF8SEVwxJMqQ
IBOTnJuYU/8+0HyuVgimToWoVx9aoypNBdZNrEPVDCddzromEleUAJpKgIjSwmlyyciELnB1uWh2
GVbEt11Q4agVnQhrrbym5/XCn8Bra/FPscmOUq5/1MNIQm29fWl9feGgaCJ10kpkqeS0td/Wjo7i
XGiFLRhU1VL1VD+2bz6vhl+P18msrsSXcR3BdBPsxrF6w7cQa3FKwSWfo4haBN21m9lcjQzutMuK
D/Uykf8txnnoidFLngE7haxvy0gJbiqtrg6rQCJocvKqpIBp+xuGgVZM08Ebtfpx2smuZL3ipanm
wfXUXFceRIEmS1RWvpZVAwkCNsE1ZdEEZ77aDX2Z+EJcxOhcZKZOr984Zt2mU8ieONXekKecSzmX
RXlNQIIhrpEQV+pImMhUa+UQCS+b8L8/rx6e/ue8PS40m9Y/r9o03Ojm+HCqmxNy0TnY7B4fjwhW
GV3RdLVil6PygM0k0VRJaKqFvqBJEqYWN6xW0V7qHszmbcUyuiNW/Wex5fVOpX9++rW9XuoQ8CSi
IMEktakREAKzrK9UKClCCAiM5bqEepj/3J4exlvpLe1Iv39DcN4d/zKOw68fxuH+0276IxD7KMhr
aWxSZV8iUwpEkcNF49TlBVMktQxJitDcWZVFFlehnu5yZ1prvUcXKnZ8wq3s4oB+Xt/+/Xl604VN
oV2w6sSpKA1oY0iMtbEWoJvVnhLDCjWM17f3rtLoMHtficNoK/fKnco9vQvXyP3qdsfrbELjBzeV
LOsU3hNQtPqCoankB2ZGuaRwjej2Xfd/3Kdfx9+0Uq46om/Edny5I4BfGJqLy1yIw7VlZQzQM/ZY
JodA5JME4y2caGYBUjQHGbZnri23s7YibWRPJNnBv69X2nQ1br2//YFkZ70hQYna0qiNPicKYRFk
LfOok/pnq6PzJ1rRx07gm/JQI3r9kyST8e6RycTbPVIjK5LEXOorcoC3trAC8K5Vqmid0m/yilz9
8xLnLrbffWmV2XYCznq75Ij/Nj7tY6WaAozaN8xCSEbCKGxGUEFCtfhJIsaABEgTGRDCVVfGXybv
S/wy2Ai9NafkCR8OJ8ZTY+z71W7cX2vjU4Xd1ZMoSD/R+kKSixMYoMSXIIliTNRrRNZ59S1OYi7C
pUSwf2Kh5KajpB2neDO78wczfcLkx7vkh7vE9Uazr31jXvm6ELxSQy9IMs5IrxiiD7t4mXA+cSuZ
3XYkc3bxjtzu/ul2O6N49XXgqSbCmKwHiDRU3zRIiIcAwWB6PhUhrFKFu4svUc7mbeVypxGag1pM
Ya6NKf5nYFk+FdSm3L//aQ+upUJ2JEBZcFFbL8rW/hJ10k9R2sZ8LaHGIudDCwbfNHI63RF+zReb
+nn6izKvt40PUTohHDpuAxJjvVHG642yZOsF3+ypszxYRy9t6nzeRq7p/c6lXEbYXtPx44f3U7Px
UPyyhUakD5LrnVYhkTSCqQQ3C4oEo02S6eriF+a+UPvC6EJq15N6GaMfJ7Ry8/AKV+ZlsNotdS9d
05q+Q+BJ1ZczqKf1nT6HpMMD9nhiPCkGEI5vETROMNSVUKvdAdk7N3t8j271/Jrtma0x0YMJVZJP
cCz1/gNoh5OOEpB+o02wXhXW9q5f52iXtqd0nq/Xy7rd77dVk5uyGsY9XBIvN2HEocwtguW1ERh5
be6YJECBfCRRuQjqGy2XVxW3Diuc2fiX0UaF9bZjP4O0nUs8w10F3vIFeMs98HZUUVnqze1Kbkys
15CBVuj/8nYlzXXcSPrOXzHHuYCBfTlitRmWZ9Smwz3Xt9F6IZrUkJTH8q+fTNRbClV4S7cZ9oUU
qwwkCkDu+aUrqlDhijPsooM+nknhiR9uWsp65OpDmUf1HLdBwFhkdAUsGwciD4EZKLHeweXUqjiw
c7y8UCd8fRDwOHtLtH7oED3LBN7d0ddvT2+fNk3EDW8onJUhsUEMjt5UoinJYpAmgHBhBlSsWq7I
uTI0BluCe3fPz3AT7+cUzq/r4aX2U5hN71NspgpN5R+whUrWBFrcRwcmKdOGE6atxH3Eyg64LgVu
iecYzy3232ZKw7OWVNsjtalkPQDlwlmrMjU4JWhJxCF3gT0BCwIrDQPovMopygyjs0LWW9Y5Mhs7
P+dCb1Ydf8o+VFijGXRIiz9GI6WHU+KBl3hpgLUwYC3WgE7OlctWOy6tcn8xGjl+46ald67YCcvU
NGkC/v+v22rUI0/cpYW4TLOLwJpBuCpMMGJgQsIhd5pznSRlV8rUWm9xd6YW4+6mJU/3aHaTA/rH
l9Xt7tb8uHgC/vDb5qkJ+nmnPFMRNJTAMV6P4b9SLGHJpCwSsB3GL6T4TkY/leE7eW2ymkVnNVLs
Ves/Xh/fRodYDLmNzIH8d0xhhaxD690RZ5QGhToH4Pes5FImSfujcVoC5ulC+MeDBv3dXZmwa6O8
AlObkhAxKRQj0B5TtxIN2pkQRNblndj1YfKW5DnGDfxx5ToG+y/b9eYZdx3xPZhUgzliU6AmwwJA
QUB0LSzPQiQVoUHft4k5Zi7euDry6UNbH7dUr3o7vTaH+sc/0Vd2rICscAKpWIFZ9CpS0IMcxkMk
XLYI3FRhqURQk31uRmnnX88tVeGUPuPmuP3v+5HHA4w55PX1J17/xAxcH0cCNwXzXRyxXDuiNSj7
3iJCVX6/rLAjJSc0kfueg0QsHzoM7sGpjqO+G4qC+1bzy+HzOzBcgLdhnEPCuYej40j0whuZQLz5
yxkjlxJd2nduWop1bxlmzyWGiW/D8aZWF6WsyRkhE6kwDUwpUKO9AK4hBajQTCcmJ9KuHWhCw/z8
SCqmYeLw+HXz9vw8OLNFVaLrzwckiAGDoCnAmaFYKeWsATNMgaYHajoYviBPFL2QCHwY/1Q68OGF
m5bQeShYMkQmmGVF/rz5AwQF2FGDPjf8gnwvK84RSMei11cEDWqD8JgGGQx8VipZvhy1wcFPbz8+
vWkpVB2yQV1tye5piv7ne+Qi1etrVL2y1tqSaWAEbmckov5GfSKKao2YglRcQPh615g2PGjXOi/e
cZLLGX5ThvtpWc0KwZ+muv+KcFIpwiKiujkOqjaXcNqd4VEHVoIy78eLfD6xoHzTkt45csocLKHf
NqvFCOBAa13XQjPwz6wyMV6Biiq9xmTiTID9KJ41zayBb5oOdNPO9tAhYSH3JHx8+nUq3E2iLINw
L1xgsQrTGJpUIBsLL4E7Zn14J+F+mLwledE58QrB34YqxhcY4vH3W3eM4+H+6yBsBlMDxDc6QYSH
/Qd9VASV4S9JZT7Bp2mHaSnY9PbtgU2iiW8vi2M6q+H7cjwraQETg5GA7FZQA0KDAsdDlSxpzNpj
Z0uRRsO2VD3MszrQd7mnKnzw9xOsDOlAQ8DP4J3NoOdgYD4nQ0BrB6arFC+a/U1YGUfqmkWZFess
6oF2xPP+dt49vW1enhCKh3NMva2+juE39Is5gTAZwAikizuIIIGFJxF4nIFnSsVrbZLpjJdjM/s3
2zU+dNco9wc6fvc/P3/7suklqgYfI1g2jFDM9QQJg8ANxhOjc3asaCWvULH+pUTVhpTJMjr30vLj
rdjBvbAOlIzW6P1AUUnR+4qAWEFTrP42GdTFQr2bYIlMRmsosbJHiZ7WCW6fHg5eRancPhbBM9NR
BjD2BCr/TmHyr2RwYIRjDG6MZ/nc/TwO2xKlNz2iNicRRm6HG1Ndjfj/7f4pBsgAsExAWAMbzkmA
ci0FJbYAV9NZ6ZJgBar8LVd3eDZZaUemrNXUn13rEX9+fn6EbezUWYO1mhMoI0QnB7wJThImN+A/
QcYhRiG/sMDx+Ccw3UZvNCuoeeOzFdgpGl3aVsR5mLdBMqn8ZkBM1TxHkVkgCiHfBFccTngpYJ5l
B/9F7rl/P7VjTs+J8qDZe+PVK/Ew3z8lHg7gYejTHWCNt0+/Ig7GQarg5qFfU3tguDoR0Bg5QiJK
+A0OaNGJUstdUXKCGHBiyIYspeeeeqXWYuJP+/HHeH/Iw+BmyOePzoG6p+GyIM6kkIm47CRYPaII
lQuIu6sqyHDsE0cJnrTUrufGvGZqOQ9FDQDPgz0Jx/yWob6SpVVJwScUWJEqZAAm5EKtMc+ZJ2pC
uZgUeKK0KO6e3bSUrTrk6mlVakR0/p82mHa+ebk/5MnTgUPpWq4XpeRg70aCAOBAfy0rhH9KG4Pi
FK6uu87r15nrhITtvNmuTs8tU813m1Gd/nwacUg+U4wzZFgOZiNREpKSNdcX0cdBQwrvFnGYI1Ug
dZ0N4dbslYLFy+rT9vfNES1D0D0KYgSj3YA6TpTEXF2BWIwCGaliAax9J8CAmMTG2sFaQmzv282S
X9ADXNuHVPcIAyEABxmPNBwt4OjVtuQK6OAkU0zYzRSz1QQjxgkJolXDqdYXeeGH3RSnVa39G80i
xHrui9dypxEcF7F9+tyUFgwh1cFVYjPlMBAlTGE+lBEIuA4shQkBXIRm4+O7ZGHcjWloHBdPn29a
8jedNVnWUY1HLpeje9smE7wLnuSAaUkU1EbUbwgNIjkjeASmf3E/Ljhbmlda6t1Dh/oVPVk9XkPn
Fp1AhwxqRuHQm138FbiNAQUNUWDRKA5gyiCwiE1aSg/Wfcr06vh9neZMBL8+b5ZjuZgvx2Fq9HKO
S/C2U0oqQMBIAxqDE4C0syC2UEZhSm1RhcBuecJoDjpLzZ0zl8EJzqo/4zduWrqXncW41Z5d/nnU
4dUA/hpNhA9MqAw1GF+IDQbuR0yuiJSZ95Ng/J89vV0vOna1XvIDm/7uw5D4Oy0xSzqlSJkkPCIu
PeruzlBPuC6wT6WANVTeC0lzREFD+1LNjTi9MlM/8ofF16fVp7HPXN4qXZ3m+EstmPS+Rhwd1uuJ
DLqKpxyzvQJNSZWYRHg/lbGl51SB6PidZtVr3uFBa3XAPf3p7mPPbKUlFtRhiAvYdANrYi0vmhRl
Y2IZTFip3tNsHZHRkr+aq5SGYpxo2RZtPY8V/MpAqTG3dPD98xCKDaAmpIpkJAUnNloJlor2nlIZ
uRDX1Ws9n9+I0Qs3LcWLzjI2Byfe5o+3zVPNXznc2qqnixAow5xC5jBbVmOIGTR3sHQD2GFM2Jme
PhmpoYLRuXfWcKGnEN5odCHKxcvz431tiXMogANNoX5Qaw0HBUgTbxiYfliD6xHl0wfPqXWKRcev
UtdnU52xA5v3bto1dE4JV3RieGB+zevehhnqEmvmw84owq4BHM98NBo1etDtbcGSaOBdOUawRzJ/
D/2hMaVOJ+UcXmmX2uFiRmi7T77+Pd1/bPHMwUQHI49RIl3C6iUqCIKikKhZCtpLFUX6u/DMD8Q1
a+pVDBm3tDPO/PTrV+DtPz6vN4+TykUfMWEbVGhPM6iuQmRUXbGlTQCxp7BE4apCi+kcpwvyx2+1
q1m63mqmbUFWz08P2193bT8PAQRXnVyDelGchINHEhazCFDS4TRSLGjW3FAQ2zbk8wm3s/HHZFre
ccFZfQTD/OA/+vjDxB1d4IIwnw0JFOwCoVNApEELwhzsLSdzMfHvckeP6btp1yB6C3PTfOKhecqM
8zIEDxkAVINXNggaiBUGo4WgsFg4VUQWK0G/TC7JfEV/ljMsGehadIjVU5aM/CBtXypczLejOc9s
jZzwUqThjFCBmZaWBYLBe8IDNUk7Go25DFN+GP00Qzq80q5Ad1ZQcdVb9P27gxqN2Q0VoknZGi0L
jFmbciIqY/aUD5I4RBfVBr5zZEznmN+ljuHurLJ9eNwsr1cmaN1iKlq+u7+fVH6ZwkErtETKiBk2
1pJgtSBFZrDmXAzpAqgCjHhCx7i/bymc96YCs4ZOuefRTkPV7J/bskW/dQ0t0yEbhDmuXWQJzE3M
SMIGDVYUQRByANmoS/7qZDAc/7TBiU+bNSwe5pqJXZp1L4j07bfl8z6CXV3vQ+OiHU5ZSb5YC5qq
wfp8gWj3AQ4aAbtHqILFXsFfHT0aT3UmdDR+7aZdwaazrOUUy7IWvw+joPrK1JC4gt7pQoUBOU0M
xkNFtJRY5LxgrkXmE9h0PY9MB5VqNMMJj/PojXYNHXFmlys5b8FzPwR8Olh4IRdfq7wCs3CyHEO7
gidSShE582BM0Fea/rtJTpr+u+ftEh5623B0lz+CON+OcFEG+CXpJRgHhGf0hWngTI4WhfmFhrEI
Nv403jUepZl+1UE2gT+qKSjm2+Lt9SiFai0GfjztXS7JBsJ0AEXAYp2AwLooEZ1lSmHh31lgzOO4
E7J0j6zFnqwvi99GUMO0wvxSJZxNxHmH7SRA8FtKFTbKAf4WgEY9+SajMSZzLztzy9mh2r58fFx8
O7ixJ1aIN7WcBDYFsecEzUAPU4EYDiqlSUZG6646Vs00J45W8067mJ4mtZLT+rF9tzbcjy0i9L22
ICl8X+fCgmAMVHVTGJb11b5rSWJ0AVQ+R9Fnc2UdHP5y35luUhHXvjZZ27qzNtMrOfe/xO8TJtGb
mtejDAIdDaDvWYH6aCLJziA2D5b1ZxCIwKbBjgTOb42+ugoKZzlTB4WP2xX0ePBqs54hhKOL/YcB
g1TuUMHk0COIWisCbEhEX6wwThKwcjORpqroycJ1eD9/z4GQU6nIu8ftIje9RT6InmWPKvjr63a5
fdzVQ9fAUG3aQ73INIDsxGiQsCaTwDGq61MJSRlQNPXlgG4z/hlzvnmvWc1azPNkLIYR20P38eX5
7Xn1/Bi+Pjygj4LVsK693XUakNzlQBFbiCJoMrpnnQ+kGDiKjgHrcFdFFNtZToFxjN9p19IpnLLr
OUB9q9Ww6phQmkpVvadSGRYY6JIWi2syCNKkDfGOCWzt4oDhXVV4f1mfOanLOMrnPhZHje3i+tar
iL8NGaR0l0Fab1PWYENx3BeBmL4WF+MyKViMzzjDvpcXb1Md+wwXwMct9Z1ye/jjcmIUYozsdX9T
d6IPa/UkCyYqYxETDXaARSxL1thXCS4MWIjUCXup+rUdd0LdqkPdatqj5Mevj2/bt+evq08zUYXN
AGTN1K0/a8GucAVRh/XQ/QMUeRcVJ5Qj8mWBk6Su0ubPTNpc6elr7QLnfZSw17w7GUuqVsIH/1/7
AlCQsLdi8IlSoZ1h0u0SRTk2PlNaYrF+xn5XWcXLUTEc+4x9Ak9vWlIXHfp3ea3Hbf7y9ullszhq
kvRQPu1jxsQpQ3LEVmJcYWg1ByI1yyJqyWQ524ulGbklrVP8AX881CRge+FjPte+RzHCwQgVFdFZ
KEwBAJnmsLqNOulillLmPj3H4SZU2A4VC7Gn4ue7Mq1BkU5wa1EhQEQ7gZ2yrcTKqWwinFHtsrDv
FMA/zt4QzcXcU+Sq27jZ1c+bl6fNYw/DMXGNxV6WxJQROdEqEJiyEC4jFTxHYGdn27SOR24pU7xD
mT7iYv5U7r9u3zZNry0QE1ZysBFMAHVRJBqJQ0AwljjlBT6qV5MgXztMS0Endu1A2hxbVT0//T7q
BDJAnlOdYCqMLWrQH+BSWqzVxqpBFSQNUcdpk6rRKDftVKwzv51W/cZPX58+b59+3R2PfX0bmk81
VOeSjMEp7L2NOXhRg4VQJU7QxYTAsrlKl55Mc4JztC81y5G08zmlmPbDRnTM6tmGqzFkZwy/IAfB
DGhsnRawUlwkE9D4CqCKRuc8iyVf1wJ2N8UJ8T88bEnXqkO67pkAByW33OffESO9lrFUDPm6K/vf
a4416C1J4GFVoAZEBxdfGuADCvRrLwrj6h1Lj/b0nHhx97Rd9rpzBRVX+/Qe/0sZtJCD22AoqeRS
soSFlMkiNmTCVgspGQIsElQFycD84X8RTrfhbS0dNy21D50liEOG0ur5y7eH7eNmvIQB6olGbZPA
soUqYzMqD455EqPlUXAfrNAnUHrGQ7bUiI6IUPLgBvlj8XLMWuA1bcHEpF0ICrtW+gHU1XobCC8C
T4jLupFS7SDt5FJ3JtfqBEDmOLQktPeuJEW4Bv4umEwkCI3F0V5qa5PVIf0roJjngTAbqrXqqE1a
H2I0X5/+b/s0ku5D1CIbsLc9JQF7xAivJCh+0cMpRL+ohV1N/b0bj9aSoUWPDDH7eKvnBSZK2uqk
qQDskWaPEeKIEVUwJkHLkIyohP1pqVXlUjU5Dnnqg8GjCZkdTUjPncjlbDSlMEsV9klOKoIRrLwl
ToC2SSVPyibGbaB/NZoyXmG54v3JS82qzbJzss1yamCm7etn/7Lcvr0cYMCrtVB5Fk2lyOTgYvko
EGseJCQqh4IWEN0h8XQB5mAy+qmk5ualZhV20bEu7WIKArR8fF59PlhmtS0dZsYmRj0pEfsghyzR
O+4J2MtOJdC7mT8LTDQeckJSx2S06ymWFdr+sC2bdW0HcEAMHoHqJqMLtpKIHAubUohouBeSrcH6
AKlDodc6ImYTnfZHzF5tFuc6UJJuoVezCoC3xXpAv6Q7rHzHzG0tbKY0gm6lEsmGo4eccZDg2KFU
gKVjsYAvpfeT4HtKTjmUhqc37XLWvTWuj9zzgHzE3ZDQB0oh8MzIsMUNBzUrUKpJApFHOQ8mGXqC
cXagjmCmzidezlyn683r57fnL6+j9CU35E7iT2RIOTMmQI9XIaIhD6fcMu1I8tKGzExw0V0XA6oT
7b84vnAqFDR78aZdQ3dhh6LIx5qNdsxkOtTtyGIZllvjFwWZQAUl3roEynkBPQmTXW3pfuDxiBNS
OhrOcjktaP5HwuzrAfhiSIBP3CcqCOgxqHIC9/DY/CBITy0mVqQLEfN/p4j2Hyfc1v9o/NVuxTps
Z8WnpYtfHhdv2PD8wAvxqIChJSQFLToZ7BKctAbRnzmRzGouvYpUnoXtagdtyeId4brW5kDW/z6C
ISmO8auhM2SIgRVjMpjEiCdT/QwMdCnmMZIBtHouJmVj44EaEta2R8KunyHqnovVp80xkwYPnMrO
84yVGXh1dKhQ4IIA54I7pZn0qS8bRkM1JGxo57xt2DSje9+c8NP2P/7T7ZoSAiepXrkkrGPYwM+B
tMpoz2HfCtg4bliIPJp3yXXY9yT8/u58z8Lv79r1dbId3MZOZd4Pm5fl5uX5dZ9BUEvrjaaZRg4G
6f+3dnW/jeJA/J2/wi8rpdIRgY3BrtQHsCHKprSrJu3uPSGa0N3o8lEltHt7f/3NkIQAgWSrOx6i
BCbj8dcwY8/8TBGkykJUCfAgAldSDUNahcH50KAD03aBD0/r4qZt4qbl2hdI/ArOyCbZ5EcjuYj0
E5GyGTNBtRaYgTBPAmmZklpMhlRgZHeHe9Ng2BCnZZUwO0Z+TZevpVos9KEbKgbGmqkLH1j4oRnA
ZfoWmJ0cBidTTSSjkkO94OeW9eNs2lxd+PZF7bXVYSu1WJr0QTMw8L/tiCNKvstN37E9MHhtJwAT
Sln8t2I5j9zbe/D4vC77lLXJ3lThd1kejQ/Hdu325RR1mQJ1bUYUdYuN6SoKt6uk5wvbs13LPb8Q
XPDs3BWNxnU5W7bYUvDnX6a1Nn7fI2+L3Sk7haAMrFIvwEQaMKRNhs5jgOe9gCdNMYXVERcSUz4S
NXcGefv9BHYbKkBbauWWQQAIwXT6IufQzDBXKOJEhYgm7pgi4JZpIdS2UkKEwmmdPyW7uhCyrWln
TVibh2wJZu3TPPt5jPXeDWOJyl5J36WI7RJYuJ6MCXmBZyMmF8gG7o3i/LeCvE+L6VqFadLVKzU7
9WhSnp3k60X7DXgEILD6vI+LfvtvODkdsDq1BuNPIoC4RFw9TT2T+15ItW2DU3/h4NED/y7Pcv/Y
qIspWmQ/gfEtD+9IMwSd3W+C1lD9Qxn5QYCbM6hbIomBP4EwwbXmlmIhD9nHDhSplXThSJEaba1+
rjj1DFL50tzLLACguvOfgzDQIViQiF0N/gKYjTDgwDrnoSXdwKFCXzgCoMq/vS5VCqMu7KmVmKZ2
ud+y+GeZwhA65HWg5QH2LricoNw9Be88DE0UtqNMpqgXeQHc9Br4GlUetcJfWrac0hevidW/PCY+
Yq4hyhDa1A8cjhnjLoYPI2oXdUGBO1pGOG87lqbqHOvCeLxNGPcINrJcv2fVZc7CBGCO4KgWTFfh
IeG4PgX9pU3hMTfUbih4B55xk19DmNNJ/2ylzV2Lx2EVqeo4XRzXDWDQCNMKcI3fDywEOdRmJD1P
OhR0rvtbwYtV/h2Y9MN2mKpn1mJkw80yX0g9xeMvi7fv89VhO7iZ6xUJCvYV2Ns21ZhF6mvTD3Vo
csZ8ZYGRA17W/5Pr1SFLoz4tPVKkytc3XgppVDVmvsj3c3YZIvAFx4yOIg2TxQw0rnhEMHt8Cnau
ArdRSxm53DtvcLSU0hWGcUJYq5XTElIIN0tXKE5z8JePq+lO8X60MTAO1DDDcxoFLmwGWpugvFhA
ndDdHfNWUQA1LoYR/r2HbYnXs/nLIVZl/LZcQjWvQT6VLhZbskxnGXn+Rdb5j2xDXjdrDPOBd3We
br5nReZN/mO+PTy4LuqVp9u/EvA8k9f57JrsEjd3O97JFD7z7JpY1ZvbLC/iGvf36wVfYm/9N/bw
o1IraIGiPDwNZ77K2sqj3HPlx8o0nmKCx0NV2/cBqO5Xi18ERzo+Wb+Qcjpck8k6Txc3jiP7LCab
bAtvjlV+w7jdp3HPE5+uyPYnjPVslqzf8gRke1sVIN1Q4uxGir4d9yj9dGV8BbcwfV5kwAPLLznb
fTYgP+Fhnq1uECYc6IFppaS+iHusXs6NNepZcKtaFjLqSQ+KIsZDOBje35HJn19C0nE9DR8mj/6t
cXO8ukj3jw01IHgKHQ61bY6RN23EtvDcEZLOC4P93FWSbovDC3f/2HbQIqmeb19x7oCCWcGIfytm
SvMPDjgHsfF5TD4PJ+T77oA3YD5dz5rS2PQMaW8XWZTNrpBUSPCQ4sMfD48IDKd0NoOfWwKSof9X
6ZErY1TEIRAf75D71bSrOcTIiP3b23t1trkItV0YhAfSXjpbzldXndSMjozxxFcjMnj0H3Q3Ww5G
RGyMc+hacuECve3FMImSQgR/Ep4h9ZDr1+wZYz/jolG6JUXSJNH+xL8kgOxzJB3G/iC8QMsptGuS
3A7vRqGGDu5uV8qwWkkyCb9NLnQB5X0XSR/vhupenxeBc+iCZTFpCRo23ZTCAm1i7KfBEiyhza8z
fJ3RR2bt5H7i35KLPduXgx3pHwSG1du2Nsh3g7sktQagY4x/AVBLAwQUAAIACAB1iB1JAnBhJi8+
AAB21gAAIgAcAER1bXBSZW5kZXJUcmVlLTEyMzg1LWNyYXNoLWxvZy50eHRVVAkAA13NxFddzcRX
dXgLAAEE9QEAAAQUAAAAzFxbc9vGkn5e/Ao8pWg7kOaKGbC8ToEgkCjRrUTZTm3KhcJlKOOEJBiA
lK399dsDgBQIgbJw4toTVUrW4cx0f33vBobnusgTVZZj8/Bnul2ub9QqVcVtoZT5ByZU8k/GdbT5
3N0KP6cf8sV2qcrTD1fn7y/809enh+eNs1StNtk8U8X4OBfjgyrKLF91Gfz000+Gl6fKvH1Yq8PF
36Vt2cwcXUab7F69AnwFMDKvO0JdP2w+5yuQAmNGPxk3qlznqzKLFwfkys/mH8R2PhnvS1WYZ9Mu
Do6wYUyjjTq9zZYdIARh20LSIo6JxRiRMcMnFHHTQgIh42pm9sl2ESUmLP1uYnQC/3FzhFmAHeS8
AojrvNg8OYWx4a7y1cMy35bm+/ctjBMiplz6vuU5OLD8CXUtFrjCcqYEcYpsRMXEMAyN3HS/RH8q
c5atEmVO8nwzNrmNEDJLleSrtDQMr4jKzyo1bz8XKkr3PBBYLCvX0Sb5bP61VVvQQZIvT6L1eqFO
llG2sjbVAcPwvyZqvQHkhzbzf/fCiTsNXc/zZzNzNDv7eeb//OFVa7829N5wv/k3l+HZ5Qf3/AwO
Tac3+lS0MdFX1PzEcZTGSs0N48OFeaPugERpXqqogD27tbFhWe9MQxMMw1v/99sn/tsQw0hJojVh
tT5QUqvmD9MUwv7tk1lYX0+LL1/N2cV/e1cfe1wfdFwpAbTVqHE8fqHaQL+tlV+j+2iWFNl64+WF
qoH+115yjOaKk7kQ5sfboGJkvjGpY+BBNFSaYjp3zF9n3nj86+xDtAB046j01GIxegWEVuUG6Apq
kGHYbEcJJGu6oI/8yyzJwRHGG/333tqjat3/qpLZBuLq9Y8HQF4BZ4YMOowzJiJN0prQi7g9wvuh
hz832DD+EYvSlJuLRbbahOUi/xKC5T+HFRQgSIAiH0iRS5vNG4qQ3ooHbWrkCGzYQymJhNAOJSKp
LQwxlBKKqTLvl76mcps/HtDYKDPkMHqSMCaiRv1ntzoLjMcKTLXdqNpuHy52BoPsvsm9aLEIimip
XmszESwNZxhHEQliz2uKZ6uNKtaFgt8drsDrDrj41WcRFIwdiB6nvYr/pZJNhYfZnBsYDQIEAc04
qompe3DAaAfiCa9Zvi0SVdXEKkQ7jvujzgnj8SVk+fR6U7xtiDRh8O6HCqFEBsZDAXKpak7rIp9n
C5X6zwO9rrZlq7sbFZX56vvBd5iBSRv9RxU/wjafoMf2nCkRx2azTzO7gNRb5+o97v+8YAK6gF5o
J5/HEr0yMB0odcKlfJR6Z2CI2nyxqNy9EfRs9TEvFumos7VHpP2O6dXFxwKAqKI62l7aSzVVmyhb
lFVUUDDZqIvgJFmvx9imIBobKpoNZfYFog2RqRe4jY/hFtCrYT4MN4/nqeji9hdqCRl5n37qT7+J
vHIZRnfwGioVNko0NnsgtihxkqPYIEWuocPeYdPOfKu+bq7zMquatyfa7Jw/V3dR8qBbwtl2rRtc
DR8LQfrwE04AvxiCn8c8JVEL/y+3F+c15ZvtaqV9otiuuqptmL5uwrNHosp59ZzRpVcrGnEAKocC
RXH0HNBdGaowXUdleaPmOml0Yb97Hjam8ghsLCTAdgbBjqSDOD+EPc2TrQYCs1d5oOEyyIvraFuq
VE93k222gEFvVIGyOa1RHR6u7Y4hFxA0FBdO7edxrWHYvM3/VKvsf1Vxnufr0bPbZw+rBHq2FUxa
FxBvP5pxni9arn0N5GYwZIK6f6hbEHZcJMpAJDxQJElwOkCkQeJULQDjxxFLCD5CBiIWCqsBiM/m
4LDVGD4YOxbHtY1tSHyEDsQeYTjyLAxd6VZpHZC7YNR/zzYFNAJny/Xi3Q+VK0h53LupYwO4QZWO
szkSpBV1U5jTU5VOo03Uj3HysFHlo053mz4WGXS4kJ+TzzAgVzkCkt52VWZ3K5j2F/nqrolOc3SU
RyUFh06EDCp73CbOgYYPQQHytGI2+gY2R2M7OFr7KxOAaFCx41yxWKiniM7zKNWIgNQy27wEFINI
GR0er1A5RKPqlrDfsk1dCPtQpQkD305N6w/YWQ042o7VgLKKFq/M8BHV+JNOOwgUstt6slyOMcI6
2chhTMWcQ8qtmGrHvVFQ6ksQJqrKSaESld3X3jD+km0+6z/qXqQCgYHdqPdohUhiAOQMA4QVDJk1
oEdmHVUcwNI4HFTBeDyg2cPE/cqgaBh7jqO6R6v0WpvUW2RVF1NbYKNS/fHoiPu87kQZTNyVqyD6
aK422dp0upOgeKAXCzJH3/LiCmofIIJkr+vKSmtkKBQhouNQUrDLTWOzR715UfJZpTeqrCx2RG82
OhJhHNIpHZbrUcIZKLkLIPqywzAer/JNNn+oLVNqd/oYlXvk/clgZ2A9KzyhWNclDNmAsqFYyZw9
i7VJnJPtfN5uAmaAUqX1p3Un6NjHkOmCSQelc0GY4tG81elv46IhuTd3ljY60/iuigZh17xN/9pt
b9v4oa7+WGXb6ld7AgXC19HDAjjqqaLqaoQD00QXTV17GSQiag+V01bkhXLubNDI8/eFkeSoLAQa
NDpoOrJVImncmo5uvilId+cv0SqtnoG9QMQmIAR43c1T/Lat8Q8amgR3HOnM66Kgdx6icsupWkBK
31Sz8Uoluv50nNAtiuihKhW0ScTP0alysp7w6UHx8oJLtfmSF38+xSnm87kTMSeS0LqHoc2tPy5n
72/OvT2gXfkyQ11HHz93V+mO7ThfLR7cRL/RGn8K40We/Blmq3vomnUidAyGhqKxJTb/NhJdLCgx
GB7KnUvxLe41j34Mn6qnlQYjg/hyqZSKzbDDdvrUHUahFxzsAfcO4bNqcZ+o7vMsbf5HHZgGo0MV
oSIKlMP/uSTigGFdZ0JvAVN+lhAnTBvZwx7v9e+7LoH1Swo2TDtszl4EBsvKPjtjuCWMYv71b8l7
TGsU6zzTlgzur7HdVeT1b5R2Pqqpe9tCv6cNP1xEX/0DcUJSP9xlfJA8VKVKJebNdrWAwX6iCeon
deortGs7yhWbUcuOtVErcwow50Fd0GkhyLertG6An3CkCXNsm5mNm7hw6CHYrioZdZSCv4qhEqRR
2i/BWhXzvFjWj04oNZgcSjp2pHmxXWwyOPBVFU3rfkCYaJd2hhJ24qiPcLij3NYwR8M0LNII4SoU
b95fnl9dXYdns9Bzz8/PLn8Or97fhrdXoRvOrt7feD4Kr/2b4OrmIgzeX3q3Z1eXYVg9JjA4HsbV
nscyrbluV/ox0TSvpSqR1hLkX06GUsTxvE0R/tFeTgAcHUhKxak024Rma5Vk8yzR2Bzb4Ky6L2Ee
/zl4/SuhW2KJiao3nVRyijBhBucDiUB3nj4SIdR2qMHtgUQ4j0mLCMyxyOBiIBFJohYSSjjhBpfD
iERz5TwicbhgXBocQmORxenDIj2BX1l8jEhlKQczwRPHLDdRod+I4v2tAPzsbQDNoVm0ltEqulNF
dSsAPi8fyo1ahn9C1VSLQwgHnAmLoEybf6p7yLCQofTMWd0KaNHukaBFQyYSFGArM9ztD5d3RVhf
UgB6nOylIePh8ByHRRANOrH8Ve0v1GZbrA6ANtTWNc8DcodqpjFN01rN4Ze/9hAx3UOk/3yI7J8P
kf/zIdr/DkQmNcRSLb9E2SbUozy0pG2AyZs3J7g/4tu0SJKylEgAmEL1C7G+e5KVTcyMx+VCqXUI
FXH0uKF+pA1T17ao8v3b1kz4uKtae4sXPwKm3c/infmu/f6PD72dA70GBHjd034L8UtgaUB/U7KO
TFhAO0KHShXZ0JTHy2gB7VMjQgvWdpVBwg11a/V2v0m/W8+Siy10Wu9+aMP7d4VonlIPvTYE4AkU
0T0u7Y/vV5tsEUSLUv2/S1G/7vqhfvk99MISyIId51GWX1S0BnMkEZSkO/UfsYigQ+9KQW+bQtfc
EQI8NKmHl9lOnPqxLht6g0qlc4LxI/1qtLqNypYmNMtm8hx1cLx+NXr1rrrgBtHadIM1EmLzoZev
YHjSrxG+B5TqOti1nglHf4dcc6lr6J0upRAhpB7rWi4RNlktXBf514e3rYy3BbJvaxjA9+8h/vFv
KfC1TqH7aYlhWV0fG1QhFeJQzJqNYZynD1WBxNU9r0GUUn1BZU9p38QKu7p0NbBsq9TsEnos2mLc
bn87D2vqx4XDqzpjqTKXke5by7twU0Trvp7jBYSovne5I6Q7326lfcnwp2LWHv5mqrjPEnUBVK/z
Sh0Ed0vdS8hSET+dKTEVuFN5vsdQaQ58LIAYgfGp+8hvVNuzenH3+DxYs6yf8VHWydFd2F1OCOYz
PaqF4eWs9qcw1Pep69GfMl7l5O8TQ9L8bjHkmN83hpCZNPf19aM6/Z2I5uK+WV0cNEc2s+Js82ps
mGYRfR33XJ+HhXi/oNlyEEBQAaFXJMdOpAcLeo0mCGkmadZawVhxEROkaZXHFuJ1lzsjFfeyd0Ff
5i9kh321SS84j0dUmsxltQKfY/T0hKwWcN8JLQkmPUywXqBtSYgdz3kspV5gegGwzttH9ALvWSCa
SbZu09pf7DeL+aLDHSOC9HPKgvTZBGgZ5/ldlsAM412/r79FwQy/KPKi+mJF872K/UnbuNXJ8XK7
jHffzMHMMIxJtoqKB/NsGd2pcmw8/b6EaTWitH/MN51vDY1++umnV+ZbMmUep8yzuDuhFiU0sKSH
uTXxpUf9gGCO3Hff/g7RjvdXjFSEmFaqZXY+nM+F+QbiqHmxc6vKzexztmyCa4QATYA8JwioB0Ds
iUVdJizpcs/yhOdOJxPOMJZ9aI5R7eBynuKKSS+u+gZkGxoNEHKxN7VszJBFJ/BrgnxhceFObepS
gv3gBdDahA/QJVHaRYcRJXON7nibNbIRfQOH4B+YhNkbAOphn3kBIZbkPuiQcB/+mvoWoXyCbNeb
YIf2AT2kfDLXlyB0JTltvudUnrqdPS38mBDbfoKf4rjyvSe3O/pwY58IIQizPDCTRYOAWS7jjuVw
hxF7KiiXpA93TbEfb73WxsmU/VTPkqHkKc5jChbMDfxAepb0A2FRiYXleJxZ2LUnkgmbkak8AvS4
ZpvFNtQ0qnLdIdRUze2OSxxcmOlV7FS4PvFBp9OpRTnH1oQJZgVTRFzbmQTUf0axNd3n1FvvMGqE
uhDYLLbJI/L9h450CChZP6Y1R5TTE3LCtD6R9Ck4q8WRZ4PDutRyJOQARnxHTHwfeg8b8G3LQgfT
qT7eYiYT4iRdZvBhhCqLwgmt1w8XzU2eJqKFc4J19kMQtfY0ANagEOpNhOVSG1vUkV7gQGgTmwHr
WdUNnJ5ncQGp9zTY6aI8vVqr1c/n/dqpt2eg0l4QhzLEqEeGhHRMXSV9L1pvtto1nRN9An5rJQYT
m0+nzOL2hIORPWZJm3gWiDD1p9CoTHHwrCReVMT5ql+S1rY2gv7N7R2HMia0R8Z5vLNT03Ot6gZ2
ZymGyQlBJxRktDHiHrSOli0gvVEPuZAhPPAbH2o8pA8fe17LUWp6p0coH0Kb97gQF6STFEqVbIts
A1EmKtVzgSgEGTqRunZNCJVBEFiuS3XtgnIqUSAtMnXllLhTF3P3WQvMGur9at2tGocQaR9u2sGt
34BC46Gb9WbCKUGxEs4xjZxPAuFgNLE8SiSUNgA9cVlgeT4nEy5AxQg/i7yHfr8QPRs78rAeeWRU
hcGjIaNyNxqOiC207jGnrscnFuIMPIPbUPOkB7pHLgSBKxCrUtxRz9gTPEQj4x40jr1zWAj8BgXG
kGxt3SXICVQux4UwtKGIQQdrOdOJtLDn+ghaKihjzvdJKDvmh4iTPsTK7vEH9eHa3fMFCU7YCYeD
1b8gyIRggVkA9SLQlcOeSstxQK2+J5gt7MChtCefXBfZPUw1HdfQrI77g149FEKJp0LY1YhxkAuT
A28WJ1j7s6jyui/pNPAhDG1oGS0qqG059mRiQR/h8Sl06ijAL0Hf5nEk2yVHXNmOZI8UUdzJ6BfR
6q7I75W2gN6t0dvQ/SLCphb3pDaAboKYLS3XczGE4sQTyHsJ+h3tfuS71QPUYt6TUGRs7wLw/iIr
k53Xc6xdnmDmQJWRlpx6kPd88PbJ1PUsh3rgJJJMkPt83nOTRC1Uoe90fav63KsECPRvO0RnHArQ
41FSkV0gJ2/eRHG2D2aiA0BKlxAXwTgkdFcC06A1CSZQcTwUEInkRE6cVkrpUDlkr3qU6qB0p9TO
m98RY+SEo8qRXahrUGSgjkvmQhg6oFyYsy0BtR4TF0aPaX/JO6RpHHJWPXAEdMAHFx5+UdkyhWF1
xCrHJFWbIafYtoUXWFMGHS/1ETRMXEJawJw7eMJdh/svcc2GeL8lm8VD0ElPZXCS+d6E+XKZr7zi
Yb3Jd3qEgcTW/08PdUoQ0hEM4gmyM3TtHhTqCdWtO5oG9P+Iu5buuG0lvdevmGU2UPB+LPHM9Zzc
sSeOc2bbD8rWRJF8LelOcn/9VIFqNkGiW30SnZmV2k0arAIKVd9XVWBLG1h2qjuT65FbwfYd5IY9
XK23+jD23Gzud4O/39z98Xj7ON/yFOZNBxZJihziBmwlYp1ghGkqWaDSumgumdfOY/pz3LnxqtVA
ddSax75Pq+AnQ9TKuES8TqCEZw6iMAXj4K74DFTDZvNWwe9TZyk2zvRkdguA+bi5328ffj+ID7wS
AaaqHF8B5RCAfAxsd8HQi5kQAVUUAJ5OaaAl52BEM/JCtE1HtC07uIAfb++HzTd/93kALY8Ty+1o
uTEGD67HOQfwTCtgntERqlNgYDYmCvN/5GA7YrZq7vZrNXc7gAzjCjxs/3t37af9KRG7GeXQeyQS
ImK3JAG7ASsluiiTpDHMmNg62vkoV+2TbO/x4Gi39fFfRsdCNo/3bFp+ZxHB4yY0iYcsUiaaIrH3
AHe8A/STPM3FJSGZya0k6wEX8nQ87Q4o/Muqbx9/u6aTIMiFvfA8Kx0Jx2UWJhrg6gKWnhXHdWae
htCKMBujffb+pvfsZT7maBvojhj+h9lX+E2F18FpCEXEZAkhngXY4gLQdvAmF1aYzkX+JQs8Xm91
GDq+ddipw/zd7p53mFGZLEoBHVMocfTeeOAtRFLG0RUBGdOAqIDP6CADNbykdh4XY121j9RrOW4Y
Xczl394d8Si75hwZIkfi6hzQP8EVUQJIidAQML0qEM+LYyImzuUr1PBigjUPse/O33q8ftWqxTq6
qt0Ct8a7h+d9ethNUUzwF2PxlnPGHSWeezRhDSYcuCYxKlgSZpNMF6HX6Ql98afLc+n3tEPZ9oyZ
m6EJAROEZVRK3P64ShxcqUhOkywEYBvwBsQK2HsZCLUVIXhhzDnv30Ge8GjbkQdDklnWAT893d7V
2UQew9jokgQgzRiiIiwVIDKWM2K9z0SB06dJFsVkuGgyDw84MZmHy3PhB6bW7mvgih+2X3mYzp0e
plPI0Qh0LFJIz4kD5ksEuHEgBZkTBqZObQaPqtKbW7z/+WP/nsMZkoodllI3KnNjOiobu1ivr99u
72cp5+sP+G+0phEq6womIJ6VbApAdw9oCKyI2IKFFk4zuM0kdPFvkZH70MrSgDy8tNDP9fTbLjzZ
x2GHJamXF4hMFEBUpMTRv+rIuC6U6FCQB3AHoTIYYoJPwBFMzvKi9ED7oJOZr9k9jTpCrbf7IOUU
8H//7Y5f82Ou6JpVUuWk4gU8cYI9BOFMKcAeoEvOCghC0p5H1QaH+TiNAGbobBErpoTV7vnr41EA
SW2dvWx9YrY4AuwOPY1jJFhJiQJvpG3kSim94JazcRoBrFvzosHx5YLiBv/7sL/dTKRDadBI1lgZ
fbEKmG7gGaJTEYG4lB3EyiA1DC9yeiV1fBj8tHOplxvBndh1BBfDAaz/43nzbXP/BIBzytlrtL4K
1HwBM5aMcKNBYthgxHHlSbKCaWa10LKf7lsO2ki0tWvKA1/aZd7p/cfnbzebHSbgzbXEDLypdQyf
GYsF6IJMEjMGRZCQM/wzWiYYNU6482nUaeQTqabD5VbqoWMAO2XrFlinrm+ObRvf6TGJrWAno7+S
EsBSUQiZQHyfAd8V4KEx26yU1Em4clH++tgZcj6TfbzvqpW946J2w7AKmXcP3/DlE+idxkpI/Ytw
iykaOXgjiOiZCEUdcTp7cE4AuJQrVLr85sFnkufUJni53Oi6722CvdgvGeuwu72/nYpXrCbtLUs+
wa7VQQsslVsCH2DrMtgdBhBnqGm301x1PuZCqI5P29vtIj80bet37zHVMroVaTSuAJhLoCIU4rUF
JgXEhXgPgFcB+gvMG8GTvMylvHv/ilN5974VfsM7wm/pwnoevg73n+8OuYsKuF6SGCm4AlHSkiJY
IUKoTBz1YEGORwGsIkdv/3QSY7zWCrxlPYHZwutsnve3D9fPsGKP1x4/f7rHMjpIzWvWntW4okBe
6TjwtAKGz8DmQzacSO9iztriS0jPG/5h5BM07XC50WCgnSkfAHO3Uw6bCg/NbcD59hAF98B8i4SJ
LgJ8Oiua2EAtsTGayDEZUMSFBYfpMSeLDtMdrSIdsD7gkaN2KY6w79372svAgYDXVaCKHtShLlLF
bKz5RQiqUYAPSuBXZRKqGB5tLq8Eg5NdDfVSK3mH9gA/XdKMnzb/E2G8b5vr7TOepq4hQFbCARaP
gdVh2lsVgo0BsAgMjJ+7TIKhiWlpIAR09i3uxYOf/H75jO/rScn7JyxH7N5/PF6fK3DD3TpxBF9O
aCDdbj7fPzxi7/nw+IidT209H/ZQZXAQq6TQREUIXEICb3Lg8IkKngPxVNSURfbk/LiNiFJ3RJTb
YW3md8Mv89KaAvMQOMfjB+zIAPamFJg5WHbA8pQingVBspUWoHOiWtvLi2tna2u+1aGTILtBQteC
BXwXyH54GnZPD98ed2MbzEjyHUDoEcIqz6QBJqprv0ES4OF5pgCpiwcsCwyAXUQA6juMDo863R6z
uq1RS8k1BrqxCIK3y4g1xfORXY09PsC27UsUwA9Y53BKKMxdGwu8TYjAIYBpSZzlTlugDeKVKNA8
61XsMMlyIthN1xu1X15/3KrtzNIid5gp+RWcSU2ZjB7Lims9gtfDR1xTr7MMPBIPgQ6iNmyk4MBx
Fc2SyKUEy8N5pV8ecCZjs/Bc2Mm91mGzW6Ypa1PJHAv823fiWoxMhtc0clDZZw0BAwyPExEsgI+Y
OUlGaR9pCtqdX7HVI1ZNLS3UuNl0Kj/w5VRV/GkD8OR+NxzrilVQoYFmVUSkIwoKFNRJgEqJRatl
Bv7izZ8XtEl1tBI0wm9NZ963dgk7ftzcf57Xq8a+l/oXsRLLihugsFFh0xSQalAF9ku2UVEuAEaJ
+OZAey7SiVLR7I5G6Z1Y58Rv9ptlHnfzzzlL4lVla901r6ktTpngWPjUvtCRfAYDhqa0hgiPGV5z
vsXD//IaQ5rf0Sgw7NeJaDwweEg3xB/i3z8e0+HGWtgkmIwqisFa4EqB4yIiG+xZDMDxi+JCCitg
3Ff92Q/fNl+/3J5KyDaW1wiyUGHoqDC4gwq//j4d4v6OG1sr4eicKC0xGalIYRjbhcngppiDuXep
OM4CgKou3zkO2Mhxwzsb4IZP3Wg/lP8a35qzKnPGwGVQyZMYGJaJKJAuCftZeaA3PkVRQnqjMmcr
w0x+VzH3Qn78ctmydvfw+fb+cew6nheck/fJgCUD8HCJCKuAPpZiSMpAK4vWmAu4JH7X8V/ds3Mp
ThQXZ3e0ejLT0XOrB76GXf/+If/QNNJoblJKjniLfAgiNwlcwH7VnjvvhWPOX4yzcPAzSAsvt4Jv
N2vBhdksovN2s/v1+es8sIGVvbRi6bp3rQbJKZIiAYROUKmBIxlKqBNeJC2p6ZHptRZh8aS5CuO1
q1bUbUd+t2zD+mG4H8Yjn5u7j4DOIDYdfCanbky4ulJsSowRoBYBNcCukYDBggFjdUHkfFFJqPOs
vjqdG1vdnO3ptulkTdPz8JSG7fPnHx8+g4l+ntuXA8CkDKMke6zMaw1MqUhK4HuVIwtSe3ZpdWb5
nNNpj+WdrWbbzqrBXp7XbPCnOB6fvv3RVG3QsWXJkgVQEoCDAH1SEWvywF6NUTFSHXV1sf9fRZtW
7KtWQd7TeqpU/Tr88dvnqUpVuyqMsVJZCQAxw14SEbhiSJRBgEz4ylATc+r3A83HaoVgai0Etj60
RlWaDKyrrENhhJMuZ42BxBUlAE0lgIjSwqbJJUMkdIGr80mz87Aift8FFY5a0fGw1spLal4v/Al4
LSb/FKt2lDKezzSSUIvdl9bjgYOiidRJK5GlknVq39aOJnHOlMIWDAq1VD3Vp/INHi+d2smsRuLL
uI7AdBPYjWPY4VuItbBKwSWfo4haBN21m9lYjQxuXWWFL/UykP8c49z1xOglzwA7hcTTMlICN5VW
44ZVQCJocvKioADD9icMLrRimg7ewOzHupKNZB3xUs15cF2L68oDUaDJEpWVx7RqIEGATXBNWTTB
mVeroS8Dn/GLcHUuMlPr9hvHrNt3EtmVU42GXGMu5VwW5TUBEgziGgniSh0JE5lqrRx4wvMm/J/P
m29P/zptjwvN6vNPq1YvN7o5vlvr5oRcVA7294+PE4JVRiOaRit2OSoPsJkkmpCEJkz0BU2SMJjc
sFpFe656MBu3Fcvojlj4ZzHl2FPpn5++tO2lDhyeBC+Iv/GERY0ALjBLPFKhpAghgGMslwXUw/in
5vRwvZXe0o70dr+w8Y9fh2H35adh9/D5vr7Sf/SCHFNjVZUxRaYUEEUOWzTWKi8wRYJpSFKE5s6q
LLK4CPV0H3eitNa7daFiZ0+4jV0s0Kft7T+e60kXVl27YLiJU1EaoI0hMWJhLYBuVntKDCvUMI6n
9y7S6DB6X4nD1VbujVvLvVVuIfdx203tbELDB1dTljiE9wQoGh4wNEh+wMwolxS2RnRj1f3P7+nj
9atWyk1H9L24GV56BOA/7JrGZS7EoW1ZGQPoGeZYJgeOyCcJjLdwopkFkKI5kGF7om25HbUVaS97
IskO/j22tGk0bj12f0Cws96QoASWNLDQ50QhLAJZyzzqpP5qdnR+Ryv60HF8NQ41on8Z7r5W4x2R
SeXtHkIjK5LEXPCIHMBbW/D3+MCkE6J1St/kiNzf4NGnGtvvvrbK3HQczvZmyRH/Y3gafaWqDkaN
BbMQkpFgFDaDU4GAauGTBB8DJECayAAhXNQy/jJ4X+KXi43QN2ZNnuDL3cp40Md+2NwPY1sbrxl2
hytRIPxE6wtJLlYwQIkvQRLFmMA2Iuu8eouVmItwLhCMdyyU3HeUtEP1N7OePzDTJxh86iU/9BJj
R7PHujFHvi4ER2roBUnGGekVA+/DzjYTzgduJbM3HcmcXZyRG9+SfqR4eBy45kQYk7iAEIbwpEEC
fwggGJieT0UIq1Th7uwhytm4rVxu7aE5UIvq5lqf4j8BluU1oVZj//hpBNcSf4yCAMqCLWqxURbr
S9RJX720jflSQg0POe1a4OJVI6fTHeG3fDGp47uBjt3GBy+dwB06bgMERuwo49hRliw2+GZPneXB
OnpuUufjNnLV851LuYywvaLjx58+1GLjIfllC40QPkjGnlYhIWgEgwQ3CwoBRpsk08XJLxj7TO4L
ri6kdj2plz76saKV629HuDJPg2G11L1UTTF8h8CTwsMZ1FM80+cg6PAAc1wZT4oBCMdbOI0VhroQ
arUzIHvrZqdzdJvnY7RnFn2iByaEJJ/AsmD/A9AOJx0lQPqNNsF6VVhbuz6O0T7aruk8326Xebt/
3qIm12WDP1mGcEm8dMKIQ5pbBMuxEBg5FndMEkCBfCRRuQjUN1ouL0puHZ5wYuJfrjYqbG869rOT
ttPEs7tD4C1fgLccgbejisqCndtIbkzENmRAK9QVVahwxRn2aoI+nmnhiT9etZL1xNXTMY+aOW6L
gLHI6AowGwchD1/MQIn1DjanVsUBz/HylXPClxcBj09vhdY3HaFXncAve/Txj/unL0NTccMdCrYy
NjaIMdGbSjQlWSzSBAguzADEqscVOVeGxmBLcG+e+Rl34se1hOvtOt3UToUZelMxLAFN9R+whErW
BlpcRweUlGnDCdNW4jriyQ7YLgV2iedYzy32Tzul8Vorqu2J2pxknd6ICrZWY2pwStCSiEPvAmsC
DAJPGgbAvMopygyjq4Os16xjMoNd27nQw66TTzmUCms1g45t8cdqpPRgJR58iZcGXAsD12INYHKu
XLbacWmV+4vVyPkdV628a2AnLFPLpgn4/8+3ldSjT3xpC3GZZhfBNUNwVdhgxIBCgpE7zblOkrIL
Y2o9b/HuzFmMd1eteLons1sY6O9fd9fTG+zw/dT4ezzzpKF3yjMVAaEEjvV6LP+VYglLJmWRwO0w
/kqL72L0Ux2+i9sW2mw62khxgNa/P949zYxYjL2NzEH8d0zhCVmH7N0RZ5QGQJ0D+HtWcimLpv3Z
OK0A63Yh/HJC0D+8Kwt3bZRXQLUpCRGbQrEC7bF1K9GgnQlBZF3eyF1PD29FXr/jBr7cuQ5h/+V2
PzzgquP7PZhUIx2xKVCTQQEACPh2LTyehW9SERrwvk3MMfPqjqsjnzbaermVetdb6b2Zzj/+C3Nl
xxOQ9XUCqViBXfQqUsBBDushEjZbBG+q8KhEUIt1bkZpn79fM1XhlD6T5rh+/3GW8QAyh76+/sXt
n5iB7eNI4KZgv4sjlmtHtAaw7y2+oSq/XVfYUZITSORjL0EitjcdB3fjVCdR3y1FwX6r/eUw/Q6I
C/g2rHNIsHswHUeiF97IBOHNv94x8lqjS3vPVSux7qlhDl5ifPB1OO7UmqKUtTkjZCIVtoEpBTDa
C/AaUgCEZjoxuYh27UALGdb2I6lYlonD3fPw9PAwJrNFBdH17w0KxMBB0BTAZiielHLWAA1TgPQA
pgPxhXii6CuNwNP4p9qBpxuuWkHXpWCJP1i57orE36cF4ZUc8dz4Af1eVpzji3QsZn1F0AAbhMc2
yGBgWqlk+fWqDQ5+evnx6lUroeqIDXC1FbuHFP3PH9GL1KyvUXXLWmtLpoER2J2RiPqJ+kQU1Rrf
KUjFK2/4etOaNlxodV0f3nGSy9X7mzLsT8tqVwj+NTX9V4STShEW8a1ujgPU5hKs3RkedWAlKPN2
vsjnEwrlq1b0jskpMzGh34bdZvaCA6111YVm8J9ZZWK8AogqvcZm4kzA/SieNc2seX3TcqCr9mk3
HRE28iDCh/vPy+BuEmUZgnvhAg+rMI2lSQWxsfASuGPWhzcK7tPDW5E3HYtX+PK38RQjvpH37p/X
7ljHw/XXQdgMVAPCNyZBhIf1BzwqgsrwTfpf3q6kOY4bWd/5K3iZCM8BDOyLI3wobLbC1oxs+nnm
puiNVocoth7Zki3/+peJ6qVQhW62nxnWwaJYMJBZBSRy/VIlPsKnqaepKVi1vtsdG0UTt4+zYzqr
4ftyPCtpxu40xKO4FdTApUFB4qFKFjVm7bGzpUiDaWuq7qZZHei73FPlf+huR1gZ0oGGgK+hczaB
noOB+RQNAa0dhK5SPGv2N2FlHKmrmDIL1mDqjjau5/3pPLRj+4pzTL0tvo7+J/SLOYEwGSAIpAs7
iCCBhScBZJyBZ0qFS22S8YrPx2b2I2se75o8yv2GDt/+F5sothJVfRcCWDaMUMz1hBsGgRtMR4xO
ybGslbxAxfpTiaoVKSM2GufS8uOp2MG9sAaUjNbo/cCrkqL3FQGxvKZY/W0SqIuZdm6EJTKaraLE
yhYlelwnuH64O3gVpXL7WARPTAfpwdgTqPw7hcm/ksGGEY4xODEdS+fO53Hamii9ahG1OokwctOf
mOJqxP9v90/RQwaAZQKXNYjhFAUo11JQYjNINZ2UzhE4UPlvObr9sxGnjTtlqcb+7FKP+PNmcw+f
sVFnDdZqiqCMEB0dyCbYSZjcgP+EOw4xCvkzDA7nP4HpNhhRcVDyxicc2DEaXVwXMHhYt0IyKfKm
R0zVPAWRmCcKId+whxfs8JzBPEsO/gTe8e7l1I4pPSfKgybjhtwrcTf9fkrcHcDD0KfbwxqvH35F
HIzDrYIfD/2augOBqyMBjZEjJKKEn2CDZh0ptdxlJUeIASemrMhSeuqpV2opRv6016/D7SEPg5s+
nz84B+qehsOCOJNCRuKSk2D1iCxUynDdXVRBhnOf2ErwpKZ2OTXmNVPzaSiqB3ju7UnY5jcM9ZUk
rYoKXqHAilQhPQgh50uNeUo8UuPzs0mBJ0qLwu7ZVU3ZokGuHlelBkTn/2mFaeerx9tDnjztJZQu
5XpBSg72biAIAA70l7JC+Ke0wStO4ei6y7x+jbVO3LCNkTV3emqZar77GMXpz8cRh9glinGGBOxg
NhIlPipZcn0pKE2gIfkXizhMkSqQusYH4dbslYLZ4+Ld+vPqiJYh6B4FMYDRbkAdJ0pirq5ALEaB
glQxD9a+E2BAjGJj9WQ1Ibb17ibJL+gBvt8sdu4RBpcAbGTc0rC1QKIX25IroIOTRDFhN1HMVhOM
GCckXK0adrV+Vhb+sFvitKq1H1ExIZZTX7yWO43gyMT64X1VWtCHVHtXiU2Uw0SUMIX5UEYg4DqI
FCYESBGaTBdeJAvj1ZCGynHx8P6qJn/V4Mmyhmo8cLkc3ds2Gt8535HkMS2JgtqI+g2hXkRnBA8g
9J/9Hs84W6ohNfXurkH9gp6sHi+hc4tOoEMGNaOw6c0u/grSxoCChiiwaBR7MGUQWMRGLWUH1n1M
9OL4fVnmTAS/PK/YsVxM2XGYGj2f4hJsd0pJAQgYaEBDcAK47SxcW3hHYUptVpnA1+oIo8nrJDV3
zjwPTnBW/RmOuKrpnjeYcYu9uPzjqMOrHvw1mAAvmFDpSzA+E+sNnI8QXRYxsa4bBeP/aOntetaw
q/WcH8T0tz/0ib/jErOoYwyUScID4tKj7u4M7QjXGb5TzmAN5ZdC0hxQUNE+V1MjTi/M2I/8w+zT
w+Ld0Gcub5QuTnP8oRRMdl2JODqs1xMJdJWOcsz28jRGlUMU/uVUxpqeUwWiwzEV10vekEFLdcA9
/enVm5bZSnPIqMMQ57HpBtbEWp41ycqGyBKYsFK9pNk6IKMmfzFVKQ3FONG8LtraDBX8IkCpMTe0
9/1z77P1oCbEgmQkBSc2WAmWiu46SmXgQlxWr7U5/yEGA65qimcNNlYHJ97q9+3qoeSvHE5t0dOF
95RhTiFzmC2rMcQMmjtYuh7sMCbsRE8fzVRRwejUO2u4GPffKEYXolw8bu5vS0ucQwEcaArlhVpr
OChAmnSGgemHNbgdonx2vuPUOsWC4xep65OlztiB1birmofGLuGKjgwPzK952tswfV1iyXzYGUXY
NYDjng9Go0YPur3NWBINsiuFAPZI4i+hP1Sm1OmknMOQmtWGFDNC233y9ed4+6bGMwcTHYw8Rol0
EauXqCAIikKCZtHrTqog4t+FZ34gruKpVTFk3NxOJPPDr59Atr/eLFf3o8rFLmDCNqjQHU2gugqR
UHXFljYerj2FJQoXFVqM1zhdkD8cVXMzdy1uxm1BFpuHu/Wvu+6ihwCCK06uXr3ITsLGIxGLWQQo
6bAbKRY0a24oXNvWp/MJt5P5h2Ra3nDBWX0Ew/yhe9OF70fu6AwHhHXJEE/BLhA6ekQatHCZg73l
ZMom/F3u6CF9VzUPosWYG+cT981TJpKXIXhID6DqO2W9oJ5YYTBaCAqLhV1FZLYS9MvookwX9Gc5
I5KBrlmDWD0WySgP4vqxwMV8OZrzzJbICc9ZGs4IFZhpaZknGLwn3FMTtaPBmOdhyg+znxZIhyE1
B7rBQcFVr9H3Xx3UaMxuKBBNypZomWfM2pgiUQmzpzoviUN0UW3gPQfGdArpReoYXp1Vtg+PK/Za
ZYLWzcZXy7e3t6PKL5M5aIWWSBkww8Za4q0WJMsE1pwLPj4DqgAzntAxbm9rCmfTG8HO6Fh6Hu00
VM3+s85r9FuX0DLts0GY49oFFsHcxIwkbNBgRRYEIQdQjLrYXZwMhvOfNjjxacXD7G6qmdi5WbaC
SF8+zDf7CHZxvfeNi3Y4ZTl22VrQVA3W5wtEu/ew0QjYPUJlLPby3cXRo+FSZ0JHw2FXNQerBlvz
MZZlKX7vZ0H1lak+cQW905kKA/c0MRgPFcFSYlHygrkWWBfBpmt5ZBqoVIMVTnicByNqHhrXmZ0v
5LQFz20f8Glg4fmUu1Ll5ZmFneUY2hU8kpyzSIl7Y7y+0PTfLXLS9N89r1m4a32Go7v8Hq7z9QAX
pYdfkp0E44DwhL4wDZLJ0awwv9AwFsDGH8e7hrNUyy8ayCbwSzUGxdzOtk/HW6jUYuDL051LOVpP
mPagCFisExBYFyWCs0wpLPw7C4x5nHdElm6RNduT9XH2YQA1TAvML1XC2Uhc57CdBFz8llKFjXJA
vnmgUY/eyWCO0drzxtpysqnWj2/uZ18ObuyRFdKZUk4CHwWx5wRNQA9TnhgOKqWJRgbrLtpW1TIn
tlY1pmampUkt5Lh+bN+tDb/HGhH6nmqQFL6vc2FeMAaquskMy/pK37UoMboAKp+j6LO5sA4Of7ht
LDeqiKuHjXhbNngzrZLz7pfwXcQkelPyepRBoKMe9D0pUB9NIMkZxObBsv4EFyKIabAjQfJboy+u
gsJVztRB4eOag5YMXqyWE4RwdLF/32OQyh0qmOx7BFFrhYcPEtAXK4yTBKzcRKQpKnq0cBxezt9z
IORUKvLucc3kqsXknWhZ9qiCPz2t5+v7XT10CQyVpj20E4l6uDsxGiSsScRzjOp2MfuoDCia+vmA
bjX/GXO+GldxsxTTPBmLYcR607153Gw3i829/3R3hz4KVsK69mbXaUBylzxFbCGKoMnonnWdJ9nA
VnQMRIe7KKJYr3IKjGM4pualUThll1OA+lqrYcUxoTSVqnhPpTLMM9AlLRbXJLhIozakc0xgaxcH
Au+iwvvn9ZmTuoyjfOpjcdTYJq5vOYr4U59BSncZpOU0JQ02FMfvIhDT1yIzLpGMxfiMM+x7+exp
KnOfkQL4uKa+UW4Pv5yPjEKMkT3tT+ru6sNaPcm8CcpYxESDL8ACliVr7KsEBwYsROqEfa76tZ53
RN2iQd1i3KPk9af77Xq7+bR4N7mqsBmALJm65e9SsCtcRtRh3Xf/AEXeBcUJ5Yh8mWEnqYu0+TOL
Vkd6PKxmcNpHCXvNu5OxpGIl/ND9a18ACjfsjeh9olRoZ5h0u0RRjo3PlJZYrJ+w31VS4fmoGM59
xj6Bp1c1qbMG/bu81uNn/rh997iaHTVJeiif7kLCxClDUsBWYlxhaDV5IjVLImjJZD7bi6WauSat
UfwBvzzUJGB74WM+175HMcLBCBUU0UkoTAGAO81hdRt10oUkpUxteo7TjaiwDSpmYk/Fz6/yuAZF
OsGtRYUAEe0Edsq2EiunkgmwR7VLwr5QAP+4ekU0F1NPkStu4+qrvl89PqzuWxiOkWss9rIkxITI
iVbBhSkz4TJQwVMAcXa2Tetw5poyxRuU6SMu5k/59tN6u6p6bcE1YSUHG8F4UBdFpIE4BARjkVOe
4aV2ahTkq6epKWjErh3cNsdWVZuHz4NOID3kOdURlsLYogb9AQ6lxVptrBpUXlIfdBg3qRrMclUv
xRrr23HVb3j36eH9+uHX3fbY17eh+VRCdS7K4J3C3tuYgxc0WAjlxvE6G+9ZMhfp0qNlTkiOelDF
jqSN1ynFuB82omMWzzYcjT47o/8BJQhmQGPrNI+V4iIaj8aXB1U0ONexkNNlLWB3S5y4/vuHNela
NUjXLRPgoOTm2/QZMdJLGUvBkC9fZf9zybEGvSUK3KwK1IDg4OBLA3JAgX7dicy4esHSoz09Jwbu
ntZsLxtHUHG1T+/pfsm9FnJwG/QllVxKFrGQMlrEhozYaiFGQ0BEgqogGZg//C/C6Vayrabjqqb2
rsGCOGQoLTYfv9yt71dDFnqoJxq0jQLLFsodm1B5cKwjIVgeBO+8FfoESs9wypoa0bgilDy4QX6f
PR6zFnhJWzAhaue9wq6VXQ/qajvrCc8Cd4hLurql6knqxaVuLK7VCYDMYWhJ6K5zOSrCNch3wWQk
Xmgsju6ktjZa7eOfAcU8D4RZUa1VQ23S+hCj+fTw2/phcLv3UYtkwN7uKPHYI0Z0SoLiFzrYhegX
tfBVY/vbDWerydCiRYaYvLzFZoaJkrY4aQoAe6CpwwhxwIgqGJOgZUhGVMT+tNSq/Fw1OU556oXB
oxGZDU1IT53I+Ww0JTNLFfZJjiqAEaw6S5wAbZNKHpWNjFtP/2o0ZchhvmD8aFDFtZk3draZjw3M
uH563z3O19vHAwx4sRaKzKIxZxkdHKwuCMSahxsSlUNBM1zdPvL4DMzBaPZTSc3VoIoLO2tYl3Y2
BgGa328W7w+WWWlLh5mxkdGO5IB9kH2S6B3vCNjLTkXQu1l3FphoOOWIpIbJaJdjLCu0/eGzrJal
HcABMXgAqhuNzthKInAsbIo+oOGeSbIG6wOk9ple6oiYLHTaHzEZWjHnGlCSbqYXkwqA7WzZo1/S
HVa+Y+amFDZTGkC3UpEkw9FDzjjc4NihVIClY7GAL8aXu8H3lJxyKPVPr2p2li0el0fpeUA+4q5P
6AOlEGRmYNjihoOa5SnVJMKVRzn3Jhp6QnA2oI5gpcYrnk9cp8vV0/vt5uPTIH3J9bmT+DcKpJQY
E6DHKx/QkIddbpl2JHbS+sSMd8FdFgMqC+3fOA44FQqaDLyqeWgydiiKvC/ZaMdMpkPdjsyWYbk1
vlG4E6igpLMugnKeQU/CZFebmy94OOOIlIaGM5+PC5p/jJh93QNf9AnwkXeRCgJ6DKqcID06bH7g
ZUctJlbEZyLm/58i2h9PuK1/rPzVbsEaYmfBx6WLH+9nW2x4fpCFuFXA0BKSghYdDXYJjlrD1Z84
kcxqLjsVqDwL21VPWpPFG5frUpsDWf97D4akOMav+s6QPniWjUlgEiOeTPEzMNClWIeRDKC142JU
NjacqCJhaVsk7PoZou45W7xbHTNpcMOp5DqesDIDj472BQpcEJBccKY0k11s3w2DqSoSVrSx31Zs
nNG9b074bn39lds1JQRJUrxyUVjHsIGfg9sqoT2HfSvgw3HDfODBvEiuw74n4Xevzvcs/O5VzV8j
28Gt7PjO+371OF89bp72GQSltN5ommjgYJByBKmiiCoBFoTXjkfY0iH586lB+0nbBO+f1uTOWuTO
Dr4voPgjGCOPbx+3RyW5ZPrZHJgQBERrwQyEc+IdJY5T4RK3mNl9wrwZTTgip+ElXB0zvxYfPh7E
YpGHOgUByhqJxQa2XSIe/pCOgtqpYHOKMEYyOsxQLzxv+I9Xi7F34b9vwk5a7UOpxTXZgWQQYH+z
rBAlXyvSSWZA4WXSgwoVqLool/M4e/sLHp/XtC9Ei/axCP/Xaptv9227+rhc4FoEENckc5QtDMtV
AoarnOksM0xTfd4RXOY8GRXNtzWdjRDbDOz5u0X1jj/vkLdt32WnECpAKzUeC2lAkSYCjUeP/V7A
kuZYwirtM4UpfyZr7gzy9ucJ7DYwwBtc6UMSAEIwTS9yBa8ZzgpHnKiEaOKSWK8ooQi1HYK1ycrm
+TlMVxPhWq92OYa1+Wn1AdTaX9ar34653v02dijsg+s0R2wXT9GfjAV53jDE5ALawLwJSl2U5D1d
5pQXZjyuZmo5tWhmajWp18u7ADwCENAbdYNOv91PeDglaJ0xgvLnEEDcIa5e5IaoziQeGQOj/pnG
o/v5T1mWu8dXNZm2QfsExvfQvGO2QtDZXRC0QvVPLnfeY3AGZUt2mPjjLQHTWtEgkkrizzUUqVZ6
pqVINbbiT9upZTBzd+NYZgGAOl3/7JOPCTRIxK4GewHURthwoJ2rRJ32ktv4TAuA4fxtXoYjrmpi
p1ribMYO8Zb7Pz7MYAvt6zpQ8wB9F0xOEO4mwJ2HqYmWyUBE4CYbD780I3yN4RzV4neNkNPszoyx
+j8cCx+x1hBpSIx3XiqsGNeYPoyoXVyDAJfRZTy3J1xT9Yw1MUa1iNFHsJEPm8+roZuzqABCWoVi
geiATcLRPwXfKxJrhE5RJ6tO4BmP5xsRMz30czobRy3+59UQqep4XKTWHjaNJdSjj7/zFEEOI8nO
GCc5yFx9UfLicP4TmPSv2jBVc9FQsuGXh3qh8Mvr2zf3n35dP+zDweNar2w56FegbzMesYq0i6RL
MRElRBcoKDlgZb1MrdcJWkb8NL5IKZWvAy+FmjDMmS/1frKvEIEfcM/EnCMcFuIjejwynJ6Og54b
wGyMzmWtzHmFo7HKqTSMycCKK9lIKYRfHkyh17Mt2MtHb7os9yPDxDgQwwL7NFp0bPoYCQgv4blM
um/zNhAA1SxXV+n3HWzL681yfbfPVbn99OEDsPk10Bdm9/dP1x9my9X1/Mv1Zvtu9Xj98XGDaT5w
V29nj7+uSuXN9t36af/g68LXdvb0/i1Ynm8/rpdfX/eFm33E++0C/rtdfX1Nh798Wm1LXuPu9/XC
z01P/9r08I8BV/AGynrYDWf9sGqtx5XR7s+tefXL62tsDzV8vz/BqH8/3H+5xp2OTzZ314fj8PX1
z5vt7P4bKd2NeH39uHqCm+Nh+41Q7Ia//srYf/zz+uk32Our5dvNp+1boO3TQwHphhWX3zh7w15/
xfk//nn1HzALZ/P7FcyB6x9mZjfi2/+r7Gx+E4ShAH7vX/GOmCxEEAQOHhogBEtlkbqPE3FiFg+y
ZWiW/fd7D9Q5s0LWG+2v7z3eB7RJk8InDh629QyL3ZGGhUIvmqypOe26rvTMxsIYY9e1LhJkBAGq
AraMkzRfgHq+j0HTHtKlWvGMzX6aDj0NszABuoWOUq050Mmbv2DL96aC0F27YO9rF7RpLy/sZjQa
ltBo17xT7eAHpsaMP7aVcjvBwc2BZPMC5qmC1+6CNxS+eaturbHsHtToThZtqxGhfoA7JHmeeB4C
TKd1VeFjA2gZ7f+uIjJioj2HAJx6IK83Onf4gkmeZXnY6y6wMRcm8owa62q/q0daemILVigeCkhW
fBnpxbr0aqw4YGhhoNHPSGIRla0JXMU9qEfo4/aFzn7K1ila1CEDyjLiig8ZEJguoankSTzAujb6
tSyzdCHiCAOs96s9MT2SquInNRAC28VyRHS1SMM86jfBdTEE+7ZogRY2etLzSeqpDPa4Evr46pHr
iP9UrcoVz2AwsmaQdOgdYFodm19J3iX3BR0n+I1h31BLAwQUAAIACAB1iB1JyoiGhNpBAACeMAEA
IgAcAER1bXBSZW5kZXJUcmVlLTEyMzg3LWNyYXNoLWxvZy50eHRVVAkAA13NxFddzcRXdXgLAAEE
9QEAAAQUAAAA7F1rc5tIs/58+BV8OJVXToI9N24qH6ckhHa961tZtrO1WymKy2BzIoEWkGOfX396
AEkISY7ZJO+7tYWypSjMTPfTPT09/cBodZUmPs+yvrz5Gi1m82seBzy9STmX/8CEGvon6crNH5pd
4XV0l0wXM54d3V2e3Z7bR2+PNsdLpwGP8yiMeNrfr0W642kWJXFTwYcPHyQrCbh88zznm42/GZqi
Mbl34ebRIz8AfCkokq8aRl095w9JDFZgTPEn6Zpn8yTOIm+6IS57kP8gmvlJus14Kp+OmjhUhCVp
5Ob86CaaNYAQhDUFGQoxZaz3EekzemiomqwgHSHpciLvsu3c9WVo+k3G6BD+U+UeZmNsIvMAIM6T
NN8ahbE0iJP4eZYsMvn2toZxSPSRati2Ypl4rNhDOlDYeKAr5ogglSINUX0oSZJALg++uJ+5PIli
n8vDJMn7sqohhOSM+0kcZJJkpW72wAP55iHlbrDSgWDGomzu5v6D/OeCL8AHfjI7dOfzKT+cuVGs
5MUASbKffD7PAfnmnNm/Wc5wMHIGlmVPJnJvcvrTxP7p7qDWX0z0auJ+ta8vnNOLu8HZKQwaja7F
KDeX0ROqXp7nBh7noSTdncvX/B5EZPIFd1Pos2zrS4pyIktCoOPc2L/dbMVvJQwjDwUBfFDWF7AZ
Ctf8Icu6rv36SU6Vp6P0y5M8Of8f6/LjjtAHHxdOAG9Vbuz3X+k28G+t5Rf30Z34aTTPrSTlJdD/
WlmOka8jPdR1+ePNuFAkv5OpKeFWMjzN0Ghoyr9MrH7/l8mdOwV0fTez+HTaOwBBcZaDXJ1KpJ3c
UKU6Mkq54I/ky8RPIBD6ufi8mu1e0W4/cX+Sw7p6+34DyAFoZkii7TSbgQ9/SkGv0raG92aHflVi
7WaFhGEQqPJ0GsW5k02TLw7M/INTQAGBBCSq7SRSFGgsrCRCekufxVQjU8eS1laS6lEuP85sIeUm
WQ8QEimT9HbyUGAy3a2cdnoj1m6/z8HBi5yX3r47X7oZcnKeWO50Ok7dGX8rnEuwIRktNao+0cJS
4mmc83SecnhvaAVd96DFLq65kOaXIHaE2qX3v9zPCzxMU1XJbBluHmUqKoXxRwgbdwliS9ckWaQ+
L3ayYmE1wu29WMn9/gXk5uAqT48rIVXwnrwpEBpIwqgtQNXgpaZ5moTRlAf2y0Cvim5RfH/N3SyJ
vx98k0kY19F/5N4atryFHlMDqbrnyVU/oewcEmaZYVe4//OG6bB374R2+NA30IGESUurYc6MtdXL
CYZVm0ynRbhXhp7GH5N0GvQaXXeYtOoxujz/mAIQnhZD600rq0Y8d6NpVqwKCuB7TQSH/nzexxoF
02hb0zTYHF9hWhubdgLX8D7cOlRYmLXDjUkY6E3c9pTPICOv0k959avIi5BhdAmvklJgo0RgU1ti
w77p78UGKXIOdfESmwjmG/6UXyVZVJRcW95sjD/j967/LAq5yWIuylIBH+s62YWfqATwa23wE4YZ
cWv4f745PyslXy/iWMREuoibrq2Uvq2W5w6LiuAV7KApr3Q0UgGo3hYo8tyXgC63oQLTlZtl1zwU
SaMJ++Rl2DCne2Bj3QDYRivYlCGkqpuwR4m/EECAMWUbHs7GSXrlLjIeCE42XERToGe9ApSm0hLV
5uBy3rHIBWZbXDjQXsY1B4p4k3zmcfR/PD1Lknnvxe6T59iHSisGfnQO6+297CXJtBbaVyBuAtQQ
3P2mLEHYfpMoO5AIamcSDQkOWpjUypyiBGDqfsQGLD6CWyLmHPMWiE9DCNiCPLfGjvX93sYaJD5C
WgaQeHsZu9jp4qBckMvFKD5P8hQKgdPZfHrypggFw9gf3dTUAFyrnQ4HLqTI2qobAbsOeDByc3c3
xuFzzrO1T5edPqYRVLiQn/0HoLVFjoCkt4iz6D4Gjj5N4vtqdcq9vToKK1SoREirbQ9zjjY8vAkK
kAeFst5XsJkC28bQMl6ZDojUdohMz9P5NqKzxA0EIhA1i/LXgGIQbb3N4QUqkwhUzS3s1ygvN8Jd
qFwWMp0FsvIH9CwIjpjHgqDE7vRAdtao+p9E2kHgkGXXw9msjxEWyUZvpVSlsNuiUqkI3GsOW30G
xrjFdpJyn0ePZTT0v0T5g/hQ1iIFCEyMAsT20AKRgQGQ0c4LAUahWwJaK2u4YgOWwGGiAsZ6gFAP
PBnUm+38gZhb1miFX8sptaZRUcWUM5DzQFzu7Qmft41VBoy7CBVE19NVF1tOnagkKGoZxZyE6GtR
XEDdBYggY2foGsJrFLeFouvufigBzMt1NWdrv1mu/8CDa54VM7bHbxras8JUSKe0Va7Hpu4zsKwJ
wP2yxNDvx0kehc/lzGQinD662Qr57mSwnGDBFbYklvsShmxAaVusJGQvYq0S53ARhvUiYAIoeVBe
LStBU9uHTGyYtB2L8aAOdMNapb/w0krkarqjoPKZwHeZVgib01vVr83yto4f9tX3RbYt3uoMFARf
uc9T0ChYRVHV6CawiSaacu9lkIio2tZOjZNX2rmcg8qebzfGIHttIVCg0VbsiOp6SL0aO7r+qiHN
nj+7cVDcA3uFidWC0CHqrrfxa5rA34o0Ua4iwwzLTUH03EQ1yEZ8Cik9L7hxzH2x/zSCcJCm7nOx
VdAqEb8kp8jJguHTjc3LGl/w/EuSft7GqYdhaLrMdA0o3R1HU5U/Lia312fWCtBy+5IdsY+urw/i
YKm2n8TT54EvnkP1PzneNPE/O1H8CFWzSISmRM22aDQDy9+MRGwWlEgMtdWuGvrXtJc6dmP4VNyt
lBhupVc1OOee7DTUjrbDoedY440+EN4OXCsaV4nqMYmC6h/lwpQYaesI7lKQ7Px+QfQNheU+41hT
YPmRT0wnqGx3dkSv/dgMCSweLdB23oEq81VgsFHMz3IyBhlQMfvqV/8WMmOBYp5EYibHj1dYazry
6ldKG5dK6dYiFU9Xnbtz98neMMch5c1dxlrZQ3nAuS9fL+IpEPuhECju1PEnKNeWkgs1vdo8lpNa
TKcO07mxL4i0ME4WcVAWwFsaqc9MTWNyFSYDGPQ8XsSFjWKVQrxqbS0I3GC3BXOehkk6K2+dUCox
va1ozzTk88U0j2DAE0+r0n1DMBEhbbQVbHruLsHOUvKGh812HtYDF+FiKV7fXpxdXl45pxPHGpyd
nV785Fze3jg3l87AmVzeXls2cq7s6/Hl9bkzvr2wbk4vLxynuE0gqaidVi30jKDUuojFbaJRUlqV
IeElyL8qbisRe2FdIvwlopwAONJSFPcCQ64Lmsy5H4WRL7CZmqTS4pSDvP+18UgHhdxkvoyKu0EG
lHQmoyCEtRQSIBLUhFDgMZKqthTiqx6pCUFQ4Uiq1lJISNwaEg0bFJystxKCNY2baySmoek6klRY
GtPIC56nwSG8Rd4+IcVMmZjpqm/KWe6m4okoXj3Lxy8+wxcaqkZl5sbuPU+LZ/lwPXvOcj5zPsOu
yaebEDY0E+bCNi1/5o+QYSFDCc5ZPMuvyd5hQU2G4RvgAI3LzrK/M7tPnfJoAchTycoa0m8PzzSZ
C6tBJJY/i/4pzxdpvAG0kjYvdW6I23Qz9WgQlG52vvy5gojpCiL9+0Nkf3+I6t8fovZXIDJDQMz4
7Isb5Y6g8lCS1gH6794d4t0rvi6L+AELiAEAA9j9HCxOjERZtWb6/WzK+dyBHbG37lDe0gbWtUiL
fH9c44TrXkXbMZ6+B0zL1/REPqk//1NbnqnxdZPAAi9r2q8hfg0sAegbLWvYhHUoR2hLq4xQgzrY
m7lTKJ8qE2qwFnEECdcRpdXxqpN4th755wuotE7e1OH9VSOqu9RtD/sAeAKb6AqXiMfbOI+mY3ea
8X+7FeXjrjflw++2x4zAFmyaa1t+5u4cpsN3YUu65/+RGdFp2xNOugHVrdE0AiLUL8nLZGlOeVu3
9Ykn3WQE47X8glrduFnNE0JlxTx7DRxvD3oHJ8WxNFitVTVYIiGa2vYolG5S8Rjhe0ApjoNdCU7Y
+xZx1aGulkeowBCVEFLSulpIOFVWc+Zp8vR8XMt4CxB7XMIAvd+G+P03OfCtSKErtsSwUZzOarVD
cqTCZlZ1dLwkeC42SFyclGolKRAHVFaSVkWsrhXHj1pu2zyQm4LWm7ber5e/jZs15e3C9rs6YwGX
Z66oW7N7J0/d+a6a4xWCqDgtuRQkKt/mTvsa8sc9Vid/E54+Rj4/B6lXSeEOgptb3WvEUt3b5pSY
6rix83wPUim3vC2AGAH61Lzl1yvns3hwt74fLFSW9/goa+ToJuymJsRUKqia41xMynhyHHEKuqT+
lKlFTv4+a8iQv9saMuXvu4YMWEO/nN7IH2FOplGWFx94Wp25/wtFMaYa+HQuktiD4z+KUuSv1cQm
cGC1voMncVAcUHIe3TQSx2nLQmdPSbC+OiurgfL5Tutql5ka9uTqIFX6OYrvzxJxWw0+W0tEkJGf
xRGOzRuE5fkOcaI7OHNnXuAei7JIhny9Puu21aVM8rUu2yVMHs14eev0eLsR5skNnh1f+OBb658a
YSgrU4zVtufg/YCrKt/2n/h8zbPFNH+Fb0vHFf1W14duxmuVbnma5gysPumtPv6N3Nfv/2tazPC/
egdlffwPsQeBQSc7Ar/A++YfZ+qbv9mSJFpLsihWJDP5P2BeikPhRkt+KcynjJXF9D7zd1te+NtA
bbkgoYbL199OWW60xVnXcpctuZfamgUSaoamsUNy7R89CN//dlC/D3sM+DJJewe1b1QR1pbuCZ1a
IDu/X0xyCjNEDGf5jEy41Clv0zlfyqP9p4+25jg+5PDTX65/v6AAFeMaOgvbjzYFfLZtP47mlzdO
+WUnsz0o5G+QtrB6nrb8fPwaL9UDr2BZwmGvGnmypGeCzW64WjwIaPtlmUDVXM+tgVlac7xHyWo+
tcY3W75e3+gGM6r9eYuFryglVo3Gl0deIdgMxUEpIfhLHt7slU0Ms/j2xneiq+z70VX1+5baJpTa
4A4ZSh0ILj6Vf+bTeVdqd6V2V2p3pXZXaneldldqf2OprTON03CV5Ypdttxkr2AKSoXjpDo0/zHK
H8Rt9rVanq7RCIQbzxSJ3vohDdN8D+1H81B8Lnf/IVQwRbGota7IdXFYxdivJoiCc/czFwXr4NGN
pm7xlamv2vwV2mC2B0mC5kPjl6hDsT2fiD6CPhz/EPPenPR+jNzyq1xAZNoV/uAmPfS/QmR+COLd
zOeHqPoaVcL/PqpEfhRVoj+QKrHvRpXU70eVtO9LlTDquFLHlTqu1HGljit1XKnjSh1X6rhSx5U6
rtRxpY4rbXEl3HGljit1XKnjSh1X6rhSx5U6rtRxpY4rdVyp40odV9riSqTjSh1X6rhSx5U6rtRx
pY4rdVyp40odV+q4UseVOq60xZVox5U6rtRxpY4rdVyp40odV+q4UseVOq7UcaWOK3VcaYsrsY4r
dVyp40odV+q4UseVOq7UcaWOK3VcqeNKHVfquFKTKyHZT93sAfqIH4eTfzO0iiXJ4scbuNzTmOJF
+UFfkuXUferLK3ciz3MDj/MQGrxVg1CrMo8gqsOCTP19I4KNBniZFPZCoSSIai0Yu5yqLhKysn0N
3ryhHQfEK0bsbAAlcmo01BedRIO5HsI9RvyiBa5jtD3CKBrwrhHCEkx2KMGigdYtIVTn1ESGaGCi
AbCG9SGiQd3RQISSaF6XBSEOMHSwJA2nDe0YESR+yS4lu+YEZElnyX0Ee4BsXd32i1gyJDtNk1S2
koCXV9YjNelG/O/4LxYzj6dlI2aSJA2j2E2f5dOZe88zETaNF5KVypT6S343Wszm1zwOYKNOOQTe
hw8fDuRjMmKWSpmlqIMhVSihY8WwsKoMbcOi9phgFQ1O5KO7ZLqY8ezo7vLs9tw+enu0KW2JAj1B
IiOeJpyqyI2LYajL72AdVT8lesOzfPIQzarF1UOAZowsczymFgDRhgodMF0xBqqlWLo1GA2HKsPY
2IVmn9QGLm8bFw124lrM50ma16HRMUIDbI0UDTOk0CG8DZGtK6o+GGl0QAm2x6+AVhe8gU7VyBY6
3+NMoNufgnsaou9gEPx1iA/ZOwBqYZtZY0IUQ7XBh0S14dPIVghVh0gbWENs0l1ANyUfhuJnt8Vv
FxzdcUgNsNccDRp96vi5h7e9G7o6E7G39Xviu3Bjm+i6TphimQgcPB4zZcBUUzFVkxFtpFPVILtw
lxJ34y3bajgxBg1NnJj5Pt3Guc/BOhuM7bFhKYY91hVqYF0xLZUpeKANDaZrjIyMPUD3e7ZqrEN1
qbvlUuzqrtkIiY2faN/p2JE+sIkNPh2NFKqqWBkynSnjESIDzRyOqf2CY0u5L7m37CGVCMVGAJFc
D+bVRdMwCThZ/DCg3KMqPSSHTPgTGTaFYFVUZGkQsAOqmAbkAEZsUx/aNqNMA3yLLBWL6UgMrykz
fGL6TWVw0UXFjMII4de78+q346sVrZuHWGQ/BKtWG41BNTiEWkNdGVANK9Q0rLEJS5toDFRPimrg
6CzyUki9R+OlL7KjyzmPfzrb7Z2yewQu3Qli0wYP7bDBJ42pLpK+5c6BXkBomodiBLwLJ46Hmjoa
MUXVhipMssUUQyOWAiaM7BEUKiM8ftESy029JN5tSa1bHcHuzvUemzb6dIeNobecp6rmisufTFnO
FMPkkKBDCjZqGKkWpkzRdEhv1EIDyBAWxI2Nifb/xF1ZcxtJcn7nr/DjRGwUp+7jsc5ZOWYsWVyt
/dpoNCR6KFDLQx751zuzmwC6GgUQMcuwnwShm9WZVXl8X2Y2CeEjsxhnhjKt9/OJlWvRNg0TUoYv
gsLj0D8/3D6Bl5lx65WhApyMXlvMXYELW0oh3gvMXZBOLS2W8ORt4j55pvzZE7h5Wb29rburV7WI
oiX3Mpjh39wF4IFk4uVv6jzCxlr4OYmSq1CMYzSQKLiF1AZCBy8LiVnxoAxsMWVnJW+s31aiceNC
H9nQx3ajGxwOsnvc9RN+4trg3jMlfFSBUCXBMpSGnGcj7D314ATeUDmGuJOWsV+wlsauGtI4vTNY
cPwXKRiDYKsRJdgAmct5cEMNSQwQLHEpWMKizxQgFaQx9zYBZffwWuK+JfGgG/Yw/P2D3z8XNLiW
1wp+cPwXFAmcGSYL5IuCmUMnS5yDbc3RSG10cUI04smHh9vvwGoWpoGPOm0PeLVWYjDHSuiRYlSx
sK+s2VwztGczxvVsRSoZ3FADZCTCCE2cDoEAjogqAVKnhV0i/fwZJ6Jdf8KUdWcbWnSrRUT/rdt+
frj/PuAJ4N0ovQb0S7lMREWLB4AgSGpLfPQMXDFEQ+Ml0u/Wbku+u1pJbTaNgGIn7I4m//2328d+
Z/WKoclzJh1kGUtsihD3Mlh7SD4SJyIYieWB+vNxz/f9cId1jeHV7PN96GGB9m21dFe1Ag2LsgPf
OXL/l790q9u9M3N0AGs9554CHTKISoANklACZJxIC7fUBhvcLKQsVqkfPzQ21dH1blMXf2v4Jyn5
taKjIXvIa5BkII9b6cENHWyuYoIYyPWMe6AeqZ3y6jWv6icPDXFMv9lUxZ6/Drdf10BWf5KjYfIR
ZtjEtDaxkCQB8YpMATApC2GBKeVYUN6pfIlpvizePsmXi7XQfSMzuH6zP8L7r1/vt/Hhx7en+90+
Ag3V7FpMO5mNdUaCP0F0BtQeIVEHgdCdpiKkDSw71dzJ45VrwdYN5NapJe/5MP2V927bD37b3f14
vH2cuzyFfdOBRZIih7wBrkSsE4wwTSULVFoXzSX72nhMe48bN17VGqiGWvPc9+ko+ckQtTIuEa8T
KOGZgyxMwTi4Kz4D1bDZvFXy+9Q4is6ZlsxuATAfu+16df/HTnzglQgw1cjxFVAOAcjHgLsLhlHM
hAioogDwdEoDLTkHI6qVF6J1DdFWbBcCfr3dDt2Dv/s8gJaHjeV2stwYg4fQ45wDeKYVMM/oCNUp
MDAbE4X5PwqwDTFrNfv1sZo99o+mE7hf/Vd/7ff+KRG7GeUweiQSImK3JAG7ASsluiiTpDHMmFgH
2vkqV/WTbOvxEGhX4+O/TIGFdI9btj9+ZxHBoxOaxEMWKRNNkdh7gDveAfpJnubikpDM5FqS4wUX
8jQibb8edqe+evx6TfeCIBf2wvOsdCQcj1mYaICrCzh6VhzXmXkaQi3CbI362etN69mbJRTc2waG
I4Y/MPsKvxnhdXAaUhExWUKKZwFcXADaDt7kwgrTuch/ygIP12sdhkZsHXq127/b/rnHisreohTQ
MYUSR++NB95CJGUcQxGQMQ2ICviMDjJQw0uq93Gx1lX9SH0sx4bRxV7+9d0Bj7JrzpEhciSuzgH9
E1wRJYCUCA0J06sC+bw4JmLiXL5CDS8mWPMU++78rYfrV7VarKGr6he4Nd7dP6/Tfb/PYoK/GIu3
nDPuKPHcowlrMOHANYlRwZEwm2S6CL3un9AWf395Lv2aNijbmjGzGaoUsIewjEqJ7o+nxCGUiuQ0
yUIAtoFoQKwA38tAqK0IwQtjzkX/BvKER9uGPG5ZwsPq0Ken27txN5HHwCGMIUkA0owhKsJSASJj
OSPW+0wUBH2aZFFMhos2c/eAE5u5uzwXfmDqOHwNXPGd+5X77dOH7uFxeNhvp5CTEehYpJCeEwfM
lwgI40AKMicMTJ3aDBFVpTe3eP+3m/Y9H1/+iO6IHZZSVypzYxoqG7s4r28Pt9tZyfn6A/4frWmC
ynoEE5DPSjYFoLsHNARWRGzBRgunGcJmErr4t6jIfahlqUAeXlro51r6rRaR7GbosSX1H9MAw54C
iBEpcYyvOjKuCyU6FOQB3EGqDIaY4BNwBJOzvKg8UD/oZOVrdk+ljlDH7j5IuU/4f3y949f8UCu6
ZiOpclLxApE4gQ9BOlMKsAfokrMCgpC051HVyWG+TiWAGRouYsW+YNU/f3s8CCCpHXcvW5+YLY4A
u8NI4xgJVlKiIBppG7lSSi+45WydSgDrjnnR4PjyQNHBfxvWt92edCgNGskxV0ZfrAKmG3iG7FRE
IC5lB7kySA3Li5xeKR3vFj8dXMbLleBO9A3BxbAD6/947h667RMAzn3NXqP1jUDNFzBjyQg3GiQG
ByOOK0+SFUwzq4WW7XLfctFKopU9pjzwpV3Wnd7fPD9suh4L8OZaYgXejH0MnxmLBeiCTBIrBkWQ
kDP8N1omGDVOuPNl1P3KJ0pNu8u11EPDAHplRxc4Ll1vDn8o/Cc9FbEVeDLGKykBLBWFkAnE9xnw
XQEeGrPNSkmdhCsX1a8Pf4v8fCX7cN9VLXsjRPXDcJQy7+4fbn5se4xOUydk/BfhFlM0cohGkNEz
EYo64nT2EJwAcClXqHT5zZPPXp5TTvByudJ13XKCtVgvGevQ325v980rNhbtLUs+gdfqoAW2yi2B
D+C6DLzDAOIMY9ntNFedr7kQqhHT1na1qA/t3frdeyy1TGFFGo0nAOYSqAiFeG2BSQFxId4D4FWA
/gLzRvAkLwsp796/ElTeva+F73hD+BVdWM/9t2H7+W5XuxgB10sRIwVXIEtaUgQrRAiViaMeLMjx
KIBV5Ojtny5iTNdqgVesJTBbRJ3ueX17f/0MJ/Z47fHzpy220UFqPlbt2ZhXFMgrHQeeVsDwGdh8
yIYT6V3MWduk7CuGv1v5BE3bXa40GGhjywfA3PWWg1NFgF4dBN8WouAemG+RsNFFQExnRRMbqCU2
RhM5FgOKuLDhsH/MyabD/o5akQZYHwbsPlVHcYB9796PswwcCPh4ClTRnTrURaqYjWN9EZJqFBCD
EsRVmYQqhkebyyvJ4ORUw3iplrxBe4CfLmnGx+6/I6z30F2vIPTeDWMKkCPhAIvHxOqw7K0KwcEA
OAQGxs9dJsHQxLQ0kAIafou+uIuTPy+f8TPu9bB9wnZE//7mcH2uwIa748IRfLlHA+m2+7y9f3y6
7X8bHh9x8qnu54MPjQwOcpUUmqgIiUtI4E0OAj5RwXMgnoqasqienF+3ElHqhohyNRyb+d3w93lr
TYF5CNzj6QNOZAB7UwrMHCw7YHtKEc+CINlKC9A5Ua3t5c21s701X+vQKJBtkNDVYAGycrcenob+
6f7hsZ/GYCaS7wBCTxBWeSYNMFE9zhskARGeZwqQunjAssAA2EUEIMGj0u5Rp8djjm6r1FLyGANt
LILg1TJj7fP5xK6mGR9g2/YlC+AH7HM4JRTWro0F3iZE4JDAtCTOcqct0AbxShaonvUqdtjLciLZ
7a9XagP6P1bbmaVF9lgp+R2CyVgymSKWFdd6Aq+7j3imXmcZeCQeEh1kbXCk4CBwFc2SyKUEy8N5
pV8ecKZis4hc+PrfsQ5dvyxTjkMlcyzwLz+JazExGT6WkYPKPmtIGGB4nIhgAXzEzEkySvtIU9Du
/IkdPeJoqKWGGpuu0fmBL/ddxY8dwJNtPxz6iqOgQgPNGhGRjigoUFAnASolFq2WGfiLN39e0KrU
UUtQCb8yjX1f2SXs+LXbfp73q6a5l/FfxEosK26AwkaFQ1NAqkEV8Jdso6JcAIwS8c2B9lykE62i
2R2V0r04rolv1t2yjtt9n7MkPqpsrbvmY2mLUyY4Nj61L3Qin8GAoSmtIcNjhdecH/Hwf3+NIc3v
qBQY1seFaPhy30mOv8Tfbg7lcGMtOAkWo4picBZ4UhC4iMgGZxYDcPyiuJDCClj31Xj2y0P37cvt
qYJsZXmVIAsVhoYKg9up8Psfd+t9wcbYsROOwYnSEpORihSGuV2YDGGKOdh7l4rjLACoavKdw4KV
HBvecIAN30+j/VL+8+ZL9zCsj9qcMXAZVPIkBoZtIgqkS4I/Kw/0xqcoSkhv1OasZZjJ70bMvZAf
v1yOrN3df77dPk5Tx/OGc/I+GbBkAB4uEWEV0MdSDEkZaGXRGmsBl+Tvcf1XfXYuxYnm4uyOWk9m
Gnqu9MCPYde/fsi/VIM0mpuUkiPeIh+CzE0CF+Cv2nPnvXDM+YtxFi5+Bmnh5VrwVXcsuDDdIjuv
uv7352/zxAZW9jKKpUfftRokp0iKBBA6QaUGjmQooU54kbSkpkWmj7UIiyfNVZiuXdWirhryu+UY
1i/DdpjexezubgCdQW7axUxO3VRwdaXYlBgjQC0CaoBTIwGTBQPG6oLI+aKWUONZbXUaN9a6OdvS
rWtUTdPz8JSG1fPnX+8/g4l+ntuXA8CkDKMke+zMaw1MqUhK4HuVIwtSe3Zpd2b5nNNlj+WdtWar
xqmBL897Nh+Hz7ePTw8/qq4NBrYsWbIASgJwEKBPKmJPHtirMSpGqqMeQ+z/V9OmFvuqVpC3tN53
qn4ffnz9vO9SjVMV+A6cshIAYgZfEhG4YkiUQYJMTHJuYk7teaD5WrUQTB0LgaMPtVGVqgLrRtah
MMNJl7PGROKKEoCmEkBEacFpcsmQCV3g6nzR7DysiD83QYWjVjQirLXykp7XC38CXovFP8VGO0oZ
f6mHkYRanL60Hl84KJpInbQSWSo5bu3b2tFenDOtsAWDQi1VS/V9++Zr13/Zj5NZjcSXcR2B6Saw
G8dwwrcQa+GUgks+RxG1CLppN7O1KhnccZcVvtTLRP63GOehJ0YveQbYKSS+LSMlcFNpNTqsAhJB
k5MXJQVYtr1hcKEW0zTwBlY/jjvZSNYRL401D67H5rryQBRoskRl5bGsGkgQYBNcUxZNcObVbujL
wmfiIlydi8zU8fiNY9atG4XskVNNhjzmXMq5LMprAiQYxDUSxJU6EiYy1Vo5iITnTfjfn7uHp/85
bY8Lzcbnn1ZtvFzp5nh/rJsTctE5WG8fH/cIVhmNaBqt2OWoPMBmkmhCEpqw0Bc0ScJgccNqFe25
7sFs3Vosoxti4T+LLceZSv/89KUeL3UQ8CREQQKLYFMjQAjMEl+pUFKEECAwlssS6m79U3u6u15L
b2lDerte2PjNt2Hov3wc+vvP2/GXQExRkGNpbFRlKpEpBUSRg4vGscsLTJFgGZIUobmzKossLkI9
zcedaK21bl2o2PAJ19nFAX1a3f7jeXzThY2hXTB04lSUBmhjSIzYWAugm9WeEsMKNYzj23sXabRb
va3E7motd+eO5V4pt5D74Hb7cTah4YMbS5a4hPcEKBq+YGiQ/ICZUS4puEZ0U9f9z/v04fpVLWXX
EH0tNsPLjAD8QF8NLnMhdmPLyhhAz7DHMjkIRD5JYLyFE80sgBTNgQzbE2PL9aq1SGvZEkk28O9h
pE2jcetp+gOSnfWGBCWwpYGNPicKYRHIWuZRJ/XPVkfnd9SiD43AN+ahSnT8lSSj8U7IZOTtHlIj
K5LEXPAVOYC3trAC4F2rhGid0jd5RQ5/vcSpwfa7b7Uym0bAWW2WHPHfhqcpVqoxwKipYRZCMhKM
wmYIKpBQLXySEGOABEgTGSCEi0bGXxZvS/xysRJ6Y47JE3zZHxkPxtgP3XaYxtr4WGF3eBIF0k+0
vpDk4ggGKPElSKIYEzhGZJ1Xb3EScxHOJYLpjoWS64aSdhjjzWzmD8z0CRbfz5LvZolxotlj35gj
XxeCIzX0giTjjPSKQfRhZ4cJ5wvXktlNQzJnF+/Ibe+fbjczioevA481EcYkHiCkIXzTIEE8BBAM
TM+nIoRVqnB39iXK2bq1XO44QnOgFmOYq2OK/wRYlo8FtTH3T58mcC0VZEcCKAtc1OKgLPaXqJN+
jNI25ksJNTzkdGiBi1eVnE43hF/xxaZ+HX+jzGHaeBelE4RDx22AxIgTZRwnypLFAd/sqbM8WEfP
bep83Uqu8f3OpVxG2FbT8ebjh7HZuCt+2UIjpA+ScaZVSEgawSDBzYJCgtEmyXRx8QvWPlP7gqsL
qV1L6mWMfhzRyvXDAa7My2DYLXUvXVNM3yHwpPDlDOopvtPnIOnwAHs8Mp4UAxCOtwgaRxjqQqhV
74BsnZvdv0fXPR+yPbMYEz0wIST5BI4F5x+AdjjpKAHSb7QJ1qvC6t71YY360faYzvPValm3+36L
mlyXrh8muCReJmHErswtguXYCIwcmzsmCaBAPpKoXATqGy2XFxW3dk84sfEvVysVVpuG/fTSNoZ4
+jsE3vIFeMsJeDuqqCw4uY3kxkQcQwa0Ql1RhQpXnGGvFujjmRGe+OtVLVlLXL1/zWOsHNdNwFhk
dAWYjYOUh7+YgRLrHTinVsUBz/HylfeEL28CHp5eC603DaGPJoFffPTxx/bpy1B13NBDwVamwQYx
FXpTiaYki02aAMmFGYBY4+uKnCtDY7AluDev/EyeeHMs4bG77m+qt8IMra0YloBmjB9whEqOA7R4
jg4oKdOGE6atxHPENzvAXQp4iefYzy32Twel6Votqm2JWr3Juv9FuWBrY04NTglaEnEYXeBMgEHg
m4YBMK9yijLD6NGLrNesYTKDPbZzoYe+UU/ZtQrHbgadxuIP3UjpwUo8xBIvDYQWBqHFGsDkXLn8
v7xdyXIdt5Ld8yt62RswMA9LjDbD8mvZVLjfruNOtG6IJtUUpbb99S8TdYdCFe7w2gx7Q4pVRiWq
gMTJ6aTVjkur3F+MRo7vuGnlnQM7YZmaJk3A//91W4161Im7tBCXaXYRVDMcrgoTjBiYkLDIneZc
J0nZlWdqrbe4O1OLcXfTiqd7MrvJAv398+p2t2t+XDyBfvht89QE/bxTnqkICCVwjNdj+K8US1gy
KYsEaofxCym+k9FPZfhObpvMZtGZjRR7aP37l8fX0SIWQ24jc3D+O6awQtah9e6IM0oDoM4B9D0r
uZRJ0v5onFaAeboQ/vGAoL+7KxN1bZRXYGpTEiImhWIE2mPqVqJBOxOCyLq8kbo+PLwVec5xA39c
uY7B/st2vXnGr478HkyqwRyxKVCTYQIAEJBdC8uzkElFaMD7NjHHzMUdV0c+vWjr5VbqVe9Lr82h
/vFP9JUdKyArnUAqVmAWvYoUcJDDeIiEzRZBmyoslQhq8p2bUdrnr+eWqnBKn3Fz3P7X/cjjAcYc
6vr6E7d/Yga2jyOBm4L5Lo5Yrh3RGsC+t8hQld8uK+woyQkkct9zkIjlQ0fBPTjVcdR3Q1Gw32p+
Obx+B4YL6DaMc0hY97B0HIleeCMTHG/+csbIpUSX9p6bVmLdm4bZa4nhwbfhuFOri1LW5IyQiVSY
BqYUwGgvQGtIARCa6cTk5LRrB5rIMF8/koppmDg8ft28Pj8PzmxRQXT9+YACMVAQNAVYMxQrpZw1
YIYpQHoA08HwhfNE0QuJwIfxT6UDH264aQWdh4IlQ2aCWVbkh83vcFCAHTXgueEX1HtZcY5EOha9
viJogA3CYxpkMPBaqWT5ctQGBz/9+fHqTSuh6ogNcLUVu4cU/Yd71CLV62tU3bLW2pJpYAR2ZySi
/kZ9IopqjZyCVFxg+HrTmDZcaOc6L95xkssZf1OG/WlZzQrBn6a6/4pwUinCIrK6OQ5Qm0tY7c7w
qAMrQZm300U+n5hQvmlF7yw5ZQ6W0G+b1WJEcKC1rnOhGfRnVpkYrwCiSq8xmTgTUD+KZ00za+ib
pgPdtE976IiwkHsR3j/9Oj3cTaIsw+FeuMBiFaYxNKngbCy8BO6Y9eGNDvfDw1uRF50Vr5D8bahi
fIEhHr/dumMcD7+/DsJmMDXg+EYniPDw/QGPiqAy/CWpzCf8NO0wrQSb3nd7YJNo4uvL4pjOavi+
HM9KWsDEYCSguhXUwKFBQeMhJEsas/bY2VKk0bCtVA/zrA70Xe6lCu/8/YQrQzpACPgavLMZcA4G
5nMyBFA7KF2leNHsb+LKOErXTMqsWGdSD7RzPO93593T6+blCal4OMfU2+rrGH5Dv5gTSJMBikC6
uKMIElh4EkHHGbimVLzWJpk+8XJsZn9nO8eH7hzlfkHH7/754Y/Pm16iavAxgmXDCMVcTzhhkLjB
eGJ0zo4VreQVEOvfSlRtRJlMo7MvLT/uih3dC+tQyWiN3g88Kil6X5EQK2iK1d8mA1ws1LsJl8hk
tEYSK3uS6Gmd4Pbp4eBVlMrtYxE8Mx1lAGNPIPh3CpN/JYMFIxxjsGM8y+f253HYVii96Qm1Ockw
cjvsmOpqxP9v908xUAaAZQKHNajhnASAaykosQW0ms5KlwQzUOVv2brDtclMO2fKWk392bUe8cPz
8yN8xk6dNVirOQEYITo50E2wkjC5Af8JZxxyFPILExyPf4LTbXRHM4OaNz6bgZ2y0aVtZZyH5zZM
JlXfDIypmucoMgtEIeWb4IrDCi8FzLPs4L/IPfdvBzvm8pwoD5rdN569Eg/z76fEw4E8DH26A63x
9ulX5ME4nCr48dCvqT0oXJ0IIEaOlIgSfoMFWnSi1HJXlJwwBpwYshFL6bmnXqm1mPjTfvwx3h/y
MLgZ8vmjcwD3NGwW5JkUMhGXnQSrRxShcoHj7qoKMhz7xFKCK62067kxr5lazkNRA8HzYE/CMr9l
iFeytCopeIUCK1KFDKCEXKg15jnzRE0oF5MCT5QWxd21m1ayVUdcPa1KjcjO//MG0843L/eHPHk6
aChdy/WilBzs3UiQABzkr2WF8E9pY1CcwtZ113n9Os86ccJ27mxnp+eWqea7j1Gd/nwacUg+U4wz
ZJgOZiNREpKSNdeXAmgChBTeLOIwZ6pA6TofhFuzBwWLl9XH7bfNkS1D0D0LYgSj3QAcJ0pirq5A
LkaBilSxANa+E2BATGJj7WCtILb37mbJL+gBru1DqnuEwSEACxmXNCwt0OjVtuQK5OAkU0zYzRSz
1QQjxgkJR6uGVa0v6sJ3u0echlr7O5pJiPXcF6/lDhEcJ7F9+tSUFgwh1cFVYjPlMBAlTGE+lBFI
uA4qhQkBWoRm4+ObZGHcjWVoHBdPn25a8TedOVnWgcYjl8vRvW2TCd4FT3LAtCQKsBHxDaFBJGcE
j6D0L36PC86W5pZWevfQkX5FT1aP19C5RSfQIYOaUVj0Zhd/BW1jAKAhCywaxQFMGSQWsUlL6cG6
T5leHb+vjzkTwa/Xm+lYLubTcZgavZzzErzuQEklCBghoDE5AZx2Fo4tPKMwpbaoQuBrecJoDjpL
zZ0zl8kJzsKf8R03rdzLzmTcaq8u/zxieDWQv0YT4QUTKkMNxhdig4H9EZMrImXm/SQY/2cPt+tF
x67WS35Q09+9GxJ/pyVmSacUKZOER+SlR+zuDPWE6wLfqRSwhspbMWmOJGhkX6q5EadXZupHfrf4
+rT6OPaZy1ulq9Mcf6kFk97XiKPDej2RAat4yjHbK9CUVIlJhLeDjK08pwpEx/c0s17zjg5aqwPv
6c9373tmKy2xIIYhLmDTDayJtbxoUpSNiWUwYaV6S7N1JEYr/moOKQ3FONGyLdp6HgP8qkCpMbd0
8P3zEIoNABNSZTKSghMbrQRLRXtPqYxciOvqtZ7Pf4jRDTetxIvONDYHJ97m99fNU81fOezaitNF
CJRhTiFzmC2rMcQMyB0s3QB2GBN2htMnIzVSMDr3zhou9JTCG40uZLl4eX68ry1xDgVwgBTqC7XW
cABAmnjDwPTDGlyPLJ8+eE6tUyw6fhVcnz3qjB3Y3HfTzqGzSriiE8MD82u+7G2YoS6xZj7sjCLs
GsBxzUejEdEDtrcFS6JBd+UYwR7J/C3wQ2NKnU7KOdzSTrWjxYzQdp98/S3dv2/5zMFEByOPUSJd
wuolKgiSopCoWQraSxVF+rv4zA/CNXPqVQwZt7Qzzfz061fQ7T8+rzePk8pFHzFhGyC0pxmgqxAZ
oSu2tAlw7CksUbiq0GL6jNMF+eO72tksXW8207Ygq+enh+2vu7afhwCCq06uAV4UJ2HhkYTFLAJA
OqxGigXNmhsKx7YN+XzC7Wz8sZiWd1xwVh/JMN/59z7+MHFHF9ggzGdDAgW7QOgUkGnQwmEO9paT
uZj4d7mjx/LdtHMQvYm5aT7x0DxlpnkZkocMBKrBKxsEDcQKg9FCACwWVhWRxUrAl8klma/oz3JG
JYNci46weqqSUR+k7Uuli/njaM4zWyMnvBRpOCNUYKalZYFg8J7wQE3SjkZjLtOUH0Y/rZAOt7Qz
0J0ZVF71ln3/7gCjMbuhUjQpW6NlgTFrU05EZcye8kESh+yi2sB7jozpHPOb1DHcnQXbh8vN9Hpl
gtYtpkfLd/f3k8ovUzigQkukjJhhYy0JVgtSZAZrzsWQLpAqwIgnMMb9fSvhYn4i2AWdas+jnYbQ
7L+3ZYt+6xpapkM2CHNcu8gSmJuYkYQNGqwogiDlAKpRl/zVyWA4/mmDE682c1g8zJGJXZp1L4j0
x2/L530Eu7reh8ZFO56yknyxFpCqwfp8gWz3ARYaAbtHqILFXsFfHT0aP+pM6Gh82007g01nWssp
l2Utfh9GQfjK1JC4gt7pQoWBc5oYjIeKaCmxqHnBXIvMJ7Dpeh6ZDivV6AknPM6jO9o5dI4zu1zJ
eQue+yHg0+HCC7n4WuUVmIWV5RjaFTyRUorImQdjgr7S9N895KTpv7veTuGh9xmO7vJHOM63I16U
gX5JegnGAeEZfWEaNJOjRWF+oWEsgo0/jXeNR2kev+owm8Af1ZQU83Xx+uV4CtVaDHx52rtckg2E
6QBAwGKdgMC6KBGdZUph4d9ZYszjuBOxdE+sxV6sz4vfRlTDtNL8UiWcTcR5h+0k4OC3lCpslAP6
LYCMevJORmNMnr3sPFvOFtX25f3j4o+DG3tihXhTy0ngoyD3nKAZ5GEqEMMBUppkZLTuqmXVPObE
0mruaSfTQ1IrOa0f23drw++xRYa+Ly1JCt/XubAgGAOobgrDsr7ady1JjC4A5HMUfTZX1sHhL/ed
x00q4trbJnNbd+ZmeiXn/pf4fcIkelPzepRBoqOB9D0rgI8mkuwMcvNgWX+GAxHUtK3tK63RV1dB
4VPO1EHh5XYGPR282qxnDOHoYv9h4CCVO1YwOfQIotaKAB8koi9WGCcJWLmZSFMherKwHd7O33MQ
5FQq8u5yO8lNb5IPomfZIwT/8mW73D7u6qFrYKg27aFeZBrg7MRokLAmk8AxqutTCUkZAJr6ckC3
Gf+MOd/c18xmLeZ5MhbDiO2ie//y/Pq8en4MXx8e0EfBaljX3u46DUjucqDILUSRNBnds84HUgws
RcdAdbirIortU06RcYzvaefSKZyy6zlBfYtqWHVMKE2lqt5TqQwLDLCkxeKaDAdp0oZ4xwS2dnGg
8K4qvL+MZ05iGUf53MfiqLFdXt+6FfG3IYOU7jJI627KGmwojt9FIKevxcm4TAoW4zPOsO/lxd1U
xz6jBfByK32n3B7+uJwYhRgj+7LfqbujD2v1JAsmKmOREw2+AItYlqyxrxJsGLAQqRP2UvVrO+5E
ulVHutW0R8mPXx9ft6/PX1cfZ0cVNgOQNVO3/qwFu8IVZB3WQ/cPAPIuKk4oR+bLAitJXYXmzzy0
2dLT29oJzvsoYa95dzKWVK2Ed/4f+wJQOGFvxeATpUI7w6TbJYpybHymtMRi/Yz9rrKKl6NiOPYZ
+wSu3rSiLjry7/Jaj5/58+vHl83iiCTpoXzax4yJU4bkiK3EuMLQag5EapZF1JLJcrYXSzNyK1qn
+AP+eKhJwPbCx3yufY9ipIMRKiqis1CYAgBnmsPqNuqki1lKmfvyHIebSGE7UizEXooPd2VagyKd
4NYiIEBGO4Gdsq3EyqlsIqxR7bKwbxTAPz69EZqLuafIVbdx81U/bV6eNo89DsfENRZ7WRJTRuZE
q+DAlIVwGangOYI6O9umdTxyK5niHcn0kRfz53L/dfu6aXptwTFhJQcbwQSAiyLRSBwSgrHEKS/w
Ur2aBPnaYVoJOrFrB6fNsVXV89O3USeQgfKc6gSPwtiiBvwAm9JirTZWDaogaYg6TptUjUa5aR/F
Os+306rf+PHr06ft06+75bGvb0PzqYbqXJIxOIW9tzEHL2qwEOqJE3QxIbBsrsLSk8ec0BztTc10
JO28Timm/bCRHbN6tmFrDNkZwy+oQTADGlunBawUF8kENL4CQNHonGex5OtawO4eceL4Hy62omvV
EV33TIADyC33+RtypNcylsohX7/K/veaYw24JQlcrApgQHSw8aUBPaAAX3tRGFdvWHq0l+fEjbur
7bTXnS2ouNqn9/hfyoBCDm6DoaSSS8kSFlImi9yQCVstpGQIqEiACpKB+cP/Ip1uo9taOW5aaR86
UxCHDKXV8+c/HraPm/EUBqonGrVNAssW6hmbETw45kmMlkfBfbBCn2DpGQ/ZSiM6R4SSBzfI74uX
Y9YCr2kLJibtQlDYtdIPpK7W20B4EbhCXNbNKdUO0j5c6s7DtTpBkDkOLQntvStJEa5BvwsmEwlC
Y3G0l9raZHVI/w4p5nkizEZqrTqwSetDjObr0/9tn0an+xC1yAbsbU9JwB4xwisJwC96WIXoF7Xw
VVP/241Ha8XQoieGmL281fMCEyVtddJUAvZIs8cIccSIKhiTgDIkIyphf1pqVblUTY5DnnphcGki
ZgcJ6bkTuZyNphRmqcI+yUlFMIKVt8QJQJtU8qRsYtwG+lejKeMZlivun9zUzNosOyvbLKcGZtp+
+eRfltvXlwMNeLUWqs6iqRSZHGwsHwVyzcMJieBQ0AJHd0g8XaA5mIx+Kqm5uamZhV10rEu7mJIA
LR+fV58OllltS4eZsYlRT0rEPsghS/SOewL2slMJcDfzZ4mJxkNOROqYjHY95bJC2x8+y2Zd2wEc
GINHpLrJ6IKtJCLHwqYUIhruhWRrsD5A6lDotY6I2YNO+yNmtzaTcx0qSbfQq1kFwOtiPbBf0h1X
vmPmthY2UxoBW6lEsuHoIWccTnDsUCrA0rFYwJfS253ge0lOOZSGqzftdNa9Oa6P2vPAfMTdkNAH
oBB0ZmTY4oYDzAqUapLgyKOcB5MMPaE4O1RH8KTOK17OXKfrzZdPr8+fv4zSl9yQO4k/USHlzJgA
HK9CREMeVrll2pHkpQ2ZmeCiuy4GVB+0f+N4w6lQ0OzGm3YO3YkdiiIfazbaMZPpULcji2VYbo1v
FM4EKijx1iUA5wVwEia72tJ9weMRJ6J0EM5yOS1o/ilh9vVAfDEkwCfuExUEcAxCTtAeHpsfBOmp
xcSKdCFi/v8pov3phNv6p8Zf7Vaso3ZWfFq6+Plx8YoNzw+6EJcKGFpCUkDRyWCX4KQ1HP2ZE8ms
5tKrSOVZ2q520FYs3jlc19ocxPrfRzAkxTF+NXSGDDGwYkwGkxj5ZKqfgQGWYh4jGSCr52JSNjYe
qBFhbXsi7PoZIvZcrD5ujpk0uOBUdp5nrMzAraNDpQIXBDQX7CnNpE/9s2E0VCPChnbW24ZNM7r3
zQk/bv/jP92uKSFokuqVS8I6hg38HJxWGe057FsBH44bFiKP5k1yHfY9Cb+/O9+z8Pu7dn6dbAe3
sdMz74fNy3Lz8vxln0FQS+uNpplGDgYpR5IqiqwSYEEE7XiCJR1zOJ8atB+0L/D+aivuoifu4uD7
Aok/gzHy8j8vr0eQXDP9bIlMCAKqtXIGwj4JjhLHqXCZW8zsPmHeTAaciNPxEm6OmV+r3z4f1GLV
hzpHAWCNpGoDW59JgP+IpwA7FSxOEadMRocR2gcvO/7jzWrqXfjn+7jTVvtQanVNetAMAuxvVhSy
5GtFvGQGAC+TASBUpOqqXM7j6P0veLzeyr4SPdmnKvwfm9dyv2/bNcTlItcigromhaNuYViuEjFc
5Yy3zDBN9XlHcB3zZFS03LdydkJsC7DnH1bNO/62Y962Q5edKqgAVGoCFtIAkCYCjceA/V7Akub/
au3qfhvFgfg7f4VfVkqkIwKDwVTKA2ATZVOaVUq7d08RKbQbXT6qQrbb++tvhiQECCRb3fEQJTAZ
jz/GzNgzP2MKq8mvJKZ8JmruAvL2zzPYbagAbamVVQYBIATT+YucQTODrlDEiZKIJm6q3GOaqiHU
tu9zLrnZqj8lu7oQTlvTJk1Ym1m6BrP2cZm+n2K998PYwcned1yLIraLp+F6MibkebaOmFwgG7g3
PmO/FeR9XkzXKkyTrl6p5NyjiVl6lq8XHDbgEYBAG7ABLvodvqFymmB1CgHGn4MA4g7i6glqq8y1
JRW6Dk79lYNHj/y7PMvDY6UuJm+R/QzGtzy8I04RdPawCVpD9ZdO4Hoebs7g3BI4GPjjcRVca6b5
hmTS+NyBIrWSrhwpUqOt1c/i555B7Dw39zILAKju/GdPekKCBYnY1eAvgNkIAw6scyY1x/JMysWV
IwCq/NvrUqVQ6sKeW4lxrJf7Lat/1jEMoWNeB1oeYO+CywmTu+3DOw9DE7lu+qrhUzuwPbhpN/A1
qjxqhT+3bDnFz3YTq399SnzEXEOUQerU9UyGGeMWhg8jahe1YAI3hROg3nYsTdU51oWxWZsw1gls
ZL39mVaXOQsTwDA5w2lBtXw8JBzXp6C/hMptw5LCkpx14Bk3+TWEOVf6hRY3dy0exlWkqpO6mJbl
waDhqubhGr/raQhyKNTAsW3HpDDnWr8VvFjl34FJP26HqVoYLUY23CzzhfzH8P7bavey3By3g5u5
XgGnYF+Bva1TgVmkrlBdKaTKDMP1NTBywMv6f3K9OmRp1KelR4pU+frGSyGNX42ZL/L9zH2GCHzB
MSOCQICyqJ7AFY8AtMelYOf64DYKxwksZl82OFpK6QrDOCOs1cpsCSmEm6UrFMY5+Mun1XSzeD/q
GBgH07CB5zRyXNj0hFBh8jI8akprf8xbZQKocVEU+esA2xJuk+XzMVblfrdeQzVvQD4/Xq0yso6T
lCw+yDb/kb6R17cthvnAuzqP317SIvMm/7HMjg9uinrlcfb3HDzP+esyuSH7xM39jvf8CT7z9IZo
1ZtZmhdxjYf79YKvsdf+G3v4UakVtEBRHp6Gs9ykbeVRZlvO58pUHkOCx0NV23cGVNPN6oPgSMcn
22dSqsMNibZ5vBqapjMwQvKWZvDm2ORDg+kDGvZs/qVPsncY62ky3+7yOci22xQg3VBiMnT4QA97
lH7pK9/BLYwXqxR4YPklZ31gjMg7PMzTzVAHwzbs6cC0LIkaAxNY1MsZapOeBreqZSGjngMCKUSZ
ydF4ekeiv75J0nE9jmfRg3urDE9XF+nhseKPCJ5Ch0MtyzHypo1Y57Y1QdJlYbBfukrSrDi8cP+P
rIMWScUye0XdgQlmAyN+V2hK8w8mtqHy9Z58HUfkZX/AGzB/2iZNaXR6gbS3jyxKkz6Scgc8pPD4
x+MjAsMpThL4mRGQDP2/So/0lUkRh0BcvEOmm6eu5uATJXRvb6f+xeYiVLdgEB5Je3GyXm76ndQG
nSj3ketPyOjBnYlutgyMiFC5z6FryZUL5m07BCWaFyK4kbxAaiPX7+kCYz/DolE666Uh6Xwu3Mi9
JoAzYEg6Dt2RvELLKLTrfH47vptIAR3c3a6gYzZyjeSf0ZUuoGxgIenD3difissiMAZdsC6UlqBh
003JNZhNlIMarMESevu4wNecfEZro2nk3pKrPTtwRnvSPwgMq11WG+T7wV2SaiOYY5R/AVBLAwQU
AAIACAB1iB1J87gJSyE+AACJ1QAAIgAcAER1bXBSZW5kZXJUcmVlLTEyMzg5LWNyYXNoLWxvZy50
eHRVVAkAA13NxFddzcRXdXgLAAEE9QEAAAQUAAAAzFvrc5vIlv+8/BV8mlIe2P2kG1U2KYTQjO/4
VZaTTO1UiuLRSrgjCQ1ITrx//Z4GJANGjrlJ7b2qlKzQ3ef8zunzhOY6z2JVFGOz/ZnuVpsbtU5U
fpsrZf6JCZXOJ+M63H7pToXP6YdsuVup4vTD1fn7C//05Wl7vXGWqPU2XaQqHx/nYnxQeZFm6y6D
d+/eGV6WKPP2fqPag39I27KZOboMt+mdegH4cmBkXneEur7ffsnWIAXGBH8yblSxydZFGi1b5Iov
5p/EBinfFyo3z6ZdHBxhw5iGW3V6m646QAjCtoWkRRwTizEiY4ZPJMWmhQRCxtXc7JPtIoxNGPrD
xOgE/nFzhNkMO8h5ARA3Wb59tApjw11n6/tVtivM9+8bGCdETLn0fctz8MzyJ9S12MwVljMliFNk
IyomhmFo5Kb7NfxLmfN0HStzkmXbsclthJBZqDhbJ4VheHlYfFGJefslV2Fy4IFgx9JiE27jL+bf
O7UDHcTZ6iTcbJbqZBWma2tbLjAM/1usNltA3t4z/w8vmLjTwPU8fz43R/OzX+f+rx9eNObrjT5s
3O/+zWVwdvnBPT+DRdPpjV4Vbk30DdWfKAqTSKmFYXy4MG/UZyBRmJcqzGHOfmxsWNZb09AEg+DW
/+P2kf3WxDCKaBTDD+vhAhNKq+ZP0xTC/v2TmVvfTvOv38z5xX97Vx97TB90XCoBtFWrcTx+ptpA
v42Rf4R34TzO083Wy3JVAf2vg+QYxY6SCyHMj7ezkpH5yqSOgQfRiBxb0IVj/mPujcf/mH8Il4Bu
HBaeWi5HL4DQutgCXUENMgwboUwgWdEFfWRf53EGhjDe6t+H3R6V4/43Fc+34FcvX7eAvADODBl0
mERxlCRxUhF6FrcHeL/08OcGGyY5VyhJuLlcputtUCyzrwHs/JeghAIECVDkQykqmy1qihDe8nu9
1cgR2LCHUrIjqsy7la+p3GYPCzRFygwxjB6NQibCWmlnt9p3x2MFCt5tVaXtDxd7NUNM3mZeuFzO
8nClXmrlEiwNOZAjTYi9qCierbcq3+QKvjtcgddn4OKX10II83sQPaZ2Ff1TxdsSD7M5N5yB5uYw
xlFFTN2B2YR7EI94zbNdHqsyk5WO1TG319qTx+NLiM3J9TZ/UxOpjfftLyVCiQyMhgLkUlWcNnm2
SJcq8Z8Gel1OS9efb1RYZOufB99hBsZN9B9V9ADbfIQe0zBRIorMep5mdgEBs4qwB9z/fsEE5O5e
aCdfxhK9MDAZKHXMpXyQer/B4LXZclmaey3o2fpjli+TUWdqj0iHGdOri485AFF5ubQ5dJBqqrZh
uixKr6AAftRFcBJvNmNsUxCNDhXNhuT4DNGGyNQL3MbHcAuosDAbhltFi0R0cftLtYKIfAg/1dXv
Ii9NhtE9vJpKiY0SjY0PxBbGTnwUG4TIDdTFe2zamG/Vt+11VqRlyfVIm5315+pzGN/rQm6+2+iy
VMPHQpA+/IQTwG8PwU9slZCwgf+324vzivLNbr3WNpHv1l3V1kxf1u7ZI1FpvLo76NKrFI04ABVD
gaIofAroPg2VmK7DorhRCx00urDfPg0bU3kENhYSYMthsKGn4LwNe5rFOw0EOqaipeFiluXX4a5Q
ie7JJrt0Ce3ZqARlc1qhai+u9h3rWOAMxYUT+2lcG2gRb7O/1Dr9X5WfZ9lm9OT0+f06hkprDf3R
BfjbazPKsmXDtK+B3BxaQ1D3L1UJwo6LRNkLg6CBIkmCkwEiDRKnLAEYP45YgvMRPBCxUFgNQHy2
AIMtm+fB2LE4rm1sQ+AjZCD2EBP6NHad6dZJ5ZB7Z9S/59scCoGz1Wb59pfSFKQ8bt3UsQHcoExH
kESCNLxuCt11opJpuA37MU7ut6p40Ol+0sc8hQoX4nP8BdraMkZA0Nuti/TzGnr0Zbb+XHunOTrK
o5SCQyVCBqU9giOnpeE2KECelMxG38HmaGytpZW9MgGI+DBEgkVCPUZ0nkGtCIiA1CrdPgcUA2sb
tZeXqByiUXVT2O/ptkqEfahCESvBEtP6E2aWDY7ex7JBWYfLF2bwgGr8SYcdBArZTz1ZrcYYYR1s
xCCmEjo6iE8lU224NwpSfQHChGU6yVWs0rvKGsZf0+0X/aOqRUoQmMgSxOOlJSKJAZAcpoUwQouw
AvTArKOKFiyNw0EljIcFmj30ycDeGcY+gdK7rNFKvVZb6i3TsoqpdmCrEn15dMR8Xna8DDru0lQQ
fdiuJtlq63QlQdFAKxZkgb5nxSXUPkAQXHpNV2qtUTwUihDhcSgJ7MtNvWcPevPC+ItKblRR7tgR
vdnoiIdxCKd0UKzHMecMJOsCCL/uMYzH62ybLu6rnSm0OX0MiwPy/mCw32DdKzyiWOUlDNGA0qFY
yYI9ibUOnJPdYtEsAuaAUiXV1aoSdOxjyHTCpMO6mCRRPFw0Kv1dlNckD9udJrXONL6rvEbY3d66
fu2Wt038kFdfl9G2/Gp2oED4OrxfAkfdVZRVjXCgm+iiqXIvg0BE+VA5bUWeKed+D2p5flwYSY7K
QqBAo/aw7o5LGjW6o5vvCtKd+Vu4Tsp7YM8QsXYIAVZ38xi/bWv8g5omhokjnUWVFPTMNiq3mKol
hPRt2RuvVazzT8cI3TwP78tUQetA/BSdMibrDp+2kpc3u1Tbr1n+12OcYrFYOCFzQgmlexDY3Prz
cv7+5tw7ANqnLzPQefThurtO9mzH2Xp578b6OdT4UxAts/ivIF3fQdWsA6FjUGcoGlti84eR6GRB
icHQUO5ciu9xr3j0Y/hU3q00GB7El0ulVGQGHbbTx+YwCrxZaw6YdwDXysFDoLrL0qT+T+WYBiND
FaFCCpSD/7kkosWwyjOBt4QuP42JEyS17EGP9fp3XZPA+tECHaYdtmDPAoNluT/7zXALaMX869/j
95hWKDZZqndydneN7a4ir3+ntHOpou7tcv10NfhwEX7zW+IEpLq5y9ggeahKlIrNm916CY39RBPU
d+rUNyjX9pRLNqPGPlabWm6ngO1s5QUdFmbZbp1UBfAjjjRmjm0zszYTFxbdz3brUkbtpWCv9lAJ
kjDpl2Cj8kWWr6pbJ5QaTAwlHTnSvNgttyks+KbyunRvESbapOVQwk4U9hEO9pRbGnaGaVgkIcKl
K968vzy/uroOzuaB556fn13+Gly9vw1urwI3mF+9v/F8FFz7N7Orm4tg9v7Suz27ugyC8jaBwdEw
rvYikknFdbfWt4mmWSVVgbSWIP5yPJQijhZNivBHWzkBcGQgKRUl0mwSmm9UnC7SWGNzbIPT8pSD
efzTeqQD5Y3DYhOVd4Mk5bbjaCJsIJEYkaRBBP5xg/OBRCIekQYRJMEguT2QiCJhA4kg1AEli0FE
GOPKeUDiOIJSZHBwjWUaJffL5AS+0ugYkXKnHMwEjx2z2Ia5fiKKD8/y8ZPP8DWHetBahevws8rL
Z/lwvbgvtmoV/AVZUy3bEFqcCQshTZt/qTuIsBChdM9ZPstv0O6RoEFDxhIUYCsz2M8PVp/zoDpa
APQ4OUhDxsPhOQ4LwRt0YPm7nJ+r7S5ft4DW1DYVzxa5tpqpNuFKzcHXvw8QMT1ApP/5ENl/PkT+
r0BkUkMs1OprmG4D3SdDvdcEGL96dYL73alJi8QJS4gEgAmklgDr4xhpURvkeFwsldoEkG5GDxOq
+8XQ0uzyMpi+aTRcD7PKsTd4+Row7T/Lt+bb5sM1PvTASigoeE9VMH4P8XNgaUA/KFlHJiwgtNKh
UiEbisxoFS6hNqlFaMDarVOIZoGuW94cJukH12l8sYMy5u0vTXj/qhD1LeChJ2kAPIEMdcCl7fH9
epsuZ+GyUP/vUlTPkn6pniwPPcMDsmDHeZDlNxVuYDviEOL9Z/Vv2RFBhx4fCu1FAiVpRwiw0Ljq
DOZ7cap7poOPE4WCE4wf6Jd9y21YNDShWdZt3aiD4+WL0Yu35Zkv8Na61KqQEChs5FAoTN+j/xlQ
yrNW17rhGv0IufrE1MDzSSCITQipeqaGSQR1VAs2efbt/k0j4u2A7JsKBvD9McSvf0iBL3UIPbQi
DMvy6NOgDKkQh2RWTwyiLLkvEyQujyENopTo0x8HSocKUdjl2Z6BaVslZpfQQ9K2x83asnMnpLoX
NzyrM5YocxXqorD4HGzzcNNXczyDENVHEfeEdFnZzbTP6axUxJqd1Vzld2msLoDqdVaqg+BuqnsO
WSqixw0bpgJ3Ms/P6NjMgT03gnhivureTxtV+1k+FXu42apZVjfQKOvE6C7sLifEONV9UBBczit7
CgJ9xLjqqynjZUz+OT4kzZ/mQ475c30ImXF9hF3fB9OvCdRn2c3yVJ45spkVpdsXY8M08/DbuOdE
OQxEhwHNljPJwJjA9fL42IqkNQCfJEIx0kyStDGCcYSRYyNNqzg2EG063Cm0yeWK3gF9vj2XHfbl
JD3gPCxRiXCccgSuY/R4hSwHcN8KLQkmPUywHqBNSaCJV8JGUg8wPQBYF80leoD3DBDNJN00aR3O
upv5YtnhjhFB+qZdTvr2BGgZ59nnNIYexrt+X71YYBt+nmd5+a5B/arBYaVt3OrgeLlbRfuXVTAz
DGOSrsP83jxbQXdfjI3HrxCYVi1K82O+6rxIM3r37t0L8w2ZMo9T5lncnVCLEjqzpIe5NfGlR/0Z
wRy5b7//Ws2e9zeMIu6U73BYZufiYiHMV+BH9VOTW1Vs51/SVe1cIwRoZshzZjPqARB7YlGXCUu6
3LM84bnTyYQzjGUfmmNUO7iix7jsqBdXdbywCY3OEHKxN7VszJBFJ/A1Qb6wuHCnNnUpwf7sGdCa
hFvoJKOP0MUq5hrd8TJrZCP6ChbBH+iE2SsA6mGfeTNCLMl90CHhPvya+hahfIJs15tgh/YBbVM+
WegTBjqTnNav/hSnbmdOE79KFo93fZGw0vYeHZ3ow419IoQgzPLAwy06mzHLZdyxHO4wYk8F5ZL0
4a4o9uOtxho4MXYWSRcnZgsnfozzmIIFc2f+THqW9GfCohILy/E4s7BrTyQTNiNTeQTocc3Wg02o
oS35I6hhKGnHJFqnUXoVOxWuT3zQ6XRqUc6xNWGCWbMpIq7tTGbUf0KxFd2n1FvNMCqEOhHYiC/w
A/L9RZsIh4CS9T1Qc0Q5PSEnTOsTSZ+CsVoceTYYrEstR0IMYMR3xMT3ofawAd+uyLUznerlDWYy
Jk7cZQYXQ1TuKKzQev1wUR+TqT1aOCdYRz8EXmtPZ8AaFEK9ibBcamOLOtKbOeDaxGbAel5WA6fn
aZRD6D2d7XVRnF5t1PrX837tVNNTUGkviLYMEeqRISadrS6Dvhdutjttms6JXgHfWomzic2nU2Zx
e8Jhkz1mSZt4Fogw9adQqEzx7ElJvDCPsnW/JI1pTQT9k5sz2jLGtEfGRbTfp7rmWlcF7H6nGCYn
BJ1QkNHGiHtQOlq2gPBGPeRChPDAbnx9ABMsHHtew1AqeqdHKLehLXpMiAvSCQqFind5ugUvE6Xq
uUAUnAydSJ27JoTK2WxmuS7VuQvSqUQzaZGpK6fEnbqYu0/uwLym3q/W/ajRhkj7cNMObv14EQoP
XazXHU4BipWwjmnkfDITDkYTy6NEQmoD0BOXzSzP52TCBagY4SeR99DvF6JnYkce1iOPDEs3eNjI
sNi3hiNiC617zKnr8YmFOAPL4DbkPOmB7pELTuAKxMoQd9QyDgTbaGTUg0YXMpXBguPXKDCGYGvr
KkFOIHM5LrihDUkMKljLmU6khT3XR1BSQRpzfk5A2TNvI477ECu7xx7Uh2v3wBckOGEnHBaWf0GQ
CcECsxnki5nOHPZUWo4DavU9wWxhzxxKe+LJdZ7eQVfTMQ3N6rg96NG2EEo8FsIuW4xWLIxb1ixO
sLZnUcZ1X9LpzAc3tKFktKigtuXYk4kFdYTHp1Cpoxl+DvomjyPRLj5iynYoe6QIo05EvwjXn/Ps
Tukd0LM1ehuqX0TY1OKe1BugiyBmS8v1XAyuOPEE8p6Dfk+7H/l+tIVaLHoCiqxqZG3ydxdpEe+t
nmNt8gQzB7KMtOTUg7jng7VPpq5nOdQDI5Fkgtyn454bx2qpcn1g6nvZ507FQKB/Whud0Ragx6Kk
IntHjl+9CqP04MxEO4CULiEugnZI6KoEukFrMptAxvHQjEgkJ3LiNEJKh0qbvepRqoOSvVI7j1VH
jJETjkpDdiGvQZKBPC6ZC27ogHI5ppaAXI+JC63HtD/ltWkabc6qB46ACrh1COg3la4SaFZHrDRM
UpYZcoptW3gza8qg4qU+goKJSwgLmHMHT7jrcP85plkT79/JerANOu7JDGXVXm9htlplay+/32yz
vR6hIbHxCa006QvpCAb+BNEZqnYPEvWE6tIdTWeUyQn2Hd6ryceU28CSnspNH5BqR6vr6kBLuI6V
uw6X90VaNF3+/4i7tu42biT9rl8xj3mBgvvlEVeP92TW3ijO2VdemrY2iuSxpGwyv36q0GKT6AYp
nkRn90k0u42uahSqvq+qAFJ4bzqwSFLkEDdgKRHrBCNMU8kCldZFc8l77Tym/447N161GqiOWsex
79Mi+MkQtTIuEa8TKOGZgyhMwTi4Kz4D1bDZvFXw+9SZipUzPZndDGA+ru6364ff9+IDr0SAqSrH
V0A5BCAfA8tdMPRiJkRAFQWAp1MaaMk5GNGMPBNt1RFtzfYu4Ifb+2H1zd99HkDLw4vldrTcGIMH
1+OcA3imFTDP6AjVKTAwGxOF+T9ysB0xWzU326Wamw1AhnEGHtb/s7n20/qUiN2Mcug9EgkRsVuS
gN2AlRJdlEnSGGZMbB3t8ShX7ZNs7/HgaNf18V9Gx0JWj/dsmn5nEcHjIjSJhyxSJpoisfcAd7wD
9JM8zcUlIZnJrSTLAWfydDztZjvsZ339+Os1nQRBLuyF51npSDhOszDRAFcXMPWsOK4z8zSEVoSj
Mdpnb3e9Z8/zMQfbQHfE8D8cfYXfVHgdnIZQREyWEOJZgCUuAG0Hb3Jhhelc5F+ywMP1Voeh41v3
OTFQ+HbzvMGMymRRCuiYQomj98YDbyGSMo6uCMiYBkQFfEYHGajhJbXvcTbWVftIvZRjx+jsXf79
/QGPsmvOkSFyJK7OAf0TXBElgJQIDQHTqwLxvDgmYuJcvkINLyZYxyH2/flbD9evWrVYR1e1meHW
ePfwvE0PmymKCf5iLN5yzrijxHOPJqzBhAPXJEYFU8Jskuki9Do9oS/+dPlY+i3tULYtY2Y3NCFg
grCMSonLH2eJgysVyWmShQBsA96AWAFrLwOhtiIEL4w55/07yBMebTvyYEgy8zrgp6fbu/o2kccw
NrokAUgzhqgISwWIjOWMWO8zUeD0aZJFMRkuepn7B5x4mfvLx8IPTC3d18AV3y+/8jBt6ty/TiFH
I9CxSCE9Jw6YLxHgxoEUZE4YmDq1GTyqSm9u8f6nm/49+w0aFTvMpW5U5sZ0VDZ2Nl9fv93eH6Wc
rz/iv9GaRqisK5iAeFayKQDdPaAhsCJiCxZaOM3gNpPQxb9FRu5jK0sD8vDSTD/X028982Q3wwZL
Ui+nc0wUQFSkxNG/6si4LpToUJAHcAehMhhigk/AEUzO8qL0QPugk5mvo3sadYRaLvdBying//7r
Hb/mh1zRNaukyknFC3jiBGsIwplSgD1Al5wVEISkPY+qDQ7H4zQCmKGzRKyYElab56+PBwEktfXt
ZesTs8URYHfoaRwjwUpKFHgjbSNXSukZtzwapxHAuiUvGhyfTygu8H8M29vVRDqUBo1kjZXRF6uA
6QaeIToVEYhL2UGsDFLD8CKnV1LH+8FPO5d6uRHciU1HcDHswfo/n1ffVvdPADinnL1G66tAzRcw
Y8kINxokhgVGHFeeJCuYZlYLLfvpvvmgjURru6Q88KWd550+3Dx/2602mIA31xIz8KbWMXxmLBag
CzJJzBgUQULO8M9omWDUOOHOp1GnkU+kmvaXW6mHjgFslK1LYJm63h3aNr7TYxJbwUpGfyUlgKWi
EDKB+D4DvivAQ2O2WSmpk3Dlovz1oTPkfCb7cN9VK3vHRW2GYREy7x6+4ckO6J3GSkj9i3CLKRo5
eCOI6JkIRR1xOntwTgC4lCtUuvzmwWeS59QieLnc6LrtLYKt2M4Z67C5vb+dilesJu0tSz7BqtVB
CyyVWwIfYOkyWB0GEGeoabfTXPV4zJlQHZ+2tetZfmha1u8/YKpldCvSaJwBMJdARSjEawtMCogL
8R4ArwL0F5g3gid5mUt5/+EVp/L+Qyv8ineEX9OZ9Tx8He4/3+1zFxVwvSQxUnAFoqQlRbBChFCZ
OOrBghyPAlhFjt7+6STGeK0VeM16ArOZ11k9b28frp9hxh6vPX7+dI9ldJCa16w9q3FFgbzSceBp
BQyfgc2HbDiR3sWctcVzOc8b/n7kEzRtf7nRYKCdVz4A5m5fOSwq3JG2AufbQxTcA/MtEl50EeDT
WdHEBmqJjdFEjsmAIi4sOEyPOVl0mO5oFemA9WHA6lMzFQfY9/5D7WXgQMDrLFBF9+pQF6liNtb8
IgTVKMAHJfCrMglVDI82l1eCwcmuhnqplbxDe4CfzmnGj6v/jTDet9X1+hm3KtcQICvhAIvHwOow
7a0KwcYAmAQGxs9dJsHQxLQ0EAI66xbX4t5Pfj9/xvd1G+L9E5YjNh9uDtePFdhxt0wcwZcTGki3
q8/3D4/Yez48PmLnU1vPhzVUGRzEKik0URECl5DAmxw4fKKC50A8FTVllj05P24jotQdEeV6WJr5
3fDzcWlNgXngAbx/Gz9gRwawN6XAzMGyA5anFPEsCJKttACdE9XaXl5cO1tb860OnQTZDgldCxbw
oI3t8DRsnh6+PW7GNpiR5DuA0COEVZ5JA0xU136DJMDD80wBUhcPWBYYALuIANQDgvaPOt0es7it
UUvJJQbaWQTB63nEmuL5yK7GHh9g2/YlCuAHrHM4JRTmro0F3iZE4BDAtCTOcqct0AbxShRonvUq
dphkORHspuuN2oD+l2o7M7fIDWZKfgFnUlMmo8ey4lqP4HX/EefU6ywDj8RDoIOoDQspOHBcRbMk
cinB8nBe6ZcHnMnYzDwXdnIvdVht5mnK2lRyjAX+9p24FiOT4TWNHFT2WUPAAMPjRAQL4CNmTpJR
2keagnbnZ2zxiEVTSws1dqtO5Qe+nKqKP64AntxvhkNdsQoqNNCsioh0REGBgjoJUCmxaLXMwF+8
+fOCNqmOVoJG+LXpvPe1ncOOH1b3n4/rVWPfS/2LWIllxQ1Q2KiwaQpINagC6yXbqCgXAKNEfHOg
fSzSiVLR0R2N0huxzInvtqt5Hnf12zFL4lVla901r6ktTpngWPjUvtCRfAYDhqa0hgiPGV5zvsXD
//waQzq+o1Fg2C4T0fDlVEmO7+I/bg7pcGMtLBJMRhXFYC5wpsBxEZEN9iwG4PhFcSGFFTDuq/7s
3bfV1y+3pxKyjeU1gsxUGDoqDG6vwi+/Tzukv+PG1ko4OidKS0xGKlIYxnZhMrgp5uDdu1QcZwFA
VZfvHAZs5NjxzgLY8akb7V357/FImkWZMwYug0qexMCwTESBdElYz8oDvfEpihLSG5U5WxmO5HcV
c8/kxy/nLWt3D59v7x/HruPjgnPyPhmwZAAeLhFhFdDHUgxJGWhl0RpzAZfE7zr+q2v2WIoTxcWj
O1o9menoudYDX8Ku//iY3zWNNJqblJIj3iIfgshNAhewXrXnznvhmPMX4ywc/AzSwsut4OvVUnBh
VrPovF5tfnn+ehzYwMpeWrF0XbtWg+QUSZEAQieo1MCRDCXUCS+SltT0yPRSizB70rEK47WrVtR1
R343b8N6N9wP45bP1d0NoDOITXufyakbE66uFJsSYwSoRUANsGskYLBgwFhdEDlfVBLqPKuvTufG
Vjdne7qtOlnT9Dw8pWH9/PmHh89gop+P7csBYFKGUZI9Vua1BqZUJCXwvcqRBak9u7Q6M3/O6bTH
/M5Ws3Vn1mAtH9ds8NcpHp++/dFUbdCxZcmSBVASgIMAfVIRa/LAXo1RMVIddXWx/19Fm1bsq1ZB
3tN6qlT9Mvzx6+epSlW7KoyxUlkJADHDWhIRuGJIlEGATHgep4k59fuBjsdqhWBqKQS2PrRGVZoM
rKusQ2GEky5njYHEFSUATSWAiNLCosklQyR0gavzSbPzsCJ+3wUVjlrR8bDWyktqXi/8CXgtJv8U
q3aUMu7PNJJQi92X1uOGg6KJ1EkrkaWS9dW+rR1N4pwphc0YFGqpeqpP5RvcXjq1k1mNxJdxHYHp
JrAbx7DDtxBrYZaCSz5HEbUIums3R2M1MrhllRW+1PNA/lOMx64nRi95BtgpJO6WkRK4qbQaF6wC
EkGTkxcFBRi2/8LgQium6eANzH4sK9lI1hEv1ZwH17W4rjwQBZosUVl5TKsGEgTYBNeURROcebUa
+jLwGb8IV49FZmrZfuOYddtOIrtyqtGQa8ylnMuivCZAgkFcI0FcqSNhIlOtlQNPeN6E/+t59e3p
X6ftcaZZff5p1erlRjfHN0vdnJCzysH2/vFxQrDKaETTaMUuR+UBNpNEE5LQhIm+oEkSBpMbVqto
z1UPjsZtxTK6Ixb+mb1y7Kn0z09f2vZSBw5PghfEnz3CokYAF5glbqlQUoQQwDGWywLqfvxT73R/
vZXe0o70djuz8Zuvw7D58uOwefh8X8/LH70gx9RYVWVMkSkFRJHDEo21ygtMkWAakhShubMqiywu
Qj3dx50orfVunanYWRNuZWcT9Gl9+8/nutOFVdcuGC7iVJQGaGNIjFhYC6Cb1Z4Swwo1jOPuvYs0
2o/eV2J/tZV75ZZyr5WbyX1YdlM7m9DwwdWUJQ7hPQGKhhsMDZIfMDPKJYWlEd1Ydf/za/pw/aqV
ctURfSt2w0uPAPyHTdO4zIXYty0rYwA9wzuWyYEj8kkC4y2c4PH+3GgOZNieaFtuR21F2sqeSLKD
fw8tbRqNW4/dHxDsrDckKIElDSz0OVEIi0DWMo86qb+aHT2+oxV96Di+Goca0b8Md1+r8Y7IpPJ2
D6GRFUliLrhFDuCtLfgTdWDSCdE6pW+yRe7v8OhTje13X1tldh2Hs97NOeJ/Dk+jr1TVwaixYBZC
MhKMwmZwKhBQLXyS4GOABEgTGSCEi1rGXwbvS/xysRF6Z5bkCb7cLIwHfezH1f0wtrXxmmF3OBMF
wk+0vpDkYgUDlPgSJFGMCWwjss6rt5iJYxHOBYLxjpmS246Sdqj+5qjnD8z0CQafesn3vcTY0eyx
bsyRrwvBkRp6QZJxRnrFwPuws82ExwO3ktldRzJnZ3vkxiPIDxQPtwPXnAhjEicQwhDuNEjgDwEE
A9PzqQhhlSrcnd1EeTRuK5dbemgO1KK6udan+E+AZXlNqNXYP34awbVUEB0JoCxYohYbZbG+RJ30
1UvbmC8l1PCQ064FLl41cjrdEX7NZy91PBvo0G2899IJ3KHjNkBgxI4yjh1lyWKDb/bUWR6so+de
6vG4jVx1f+dcLiNsr+h48+PHWmzcJ79soRHCB8nY0yokBI1gkOBmQSHAaJNkujj5BWOfyX3B1ZnU
rif13Ec/VrRy/e0AV47TYFgtdS9VUwzfIfCkcHMG9RT39DkIOjzAO66MJ8UAhOMtnMYCQ10Itdo3
IHvzZqd9dKvnQ7RnFn2iByaEJJ/AtGD/A9AOJx0lQPqNNsF6VVhbuz6M0T7aLuk8X6/nebvfblGT
67LC3wNDuCReOmHEPs0tguVYCIwcizsmCaBAPpKoXATqGy2XFyW39k848eJfrjYqrHcd+9lI22ni
2dwh8JYvwFuOwNtRRWXBzm0kNyZiGzKgFeqKKlS44gx7NUEfz7TwxB+uWsl64uppm0fNHLdFwFhk
dAWYjYOQhwczUGK9g8WpVXHAc7x8ZZ/w5UXAw9NbofWuI/SiE/hljT7+cf/0ZWgqbrhCwVbGxgYx
JnpTiaYki0WaAMGFGYBYdbsi58rQGGwJ7s0zP+NKvFlKuFyu003tqzBD71UMc0BT/QdMoZK1gRbn
0QElZdpwwrSVOI+4swOWS4FV4jnWc4v9005pvNaKanuiNjtZpxNRwdZqTA1OCVoScehdYE6AQeBO
wwCYVzlFmWF0sZH1mnVMZrBLOxd62HTyKftSYa1m0LEt/lCNlB6sxIMv8dKAa2HgWqwBTM6Vy1Y7
Lq1yf7EaeXzHVSvvEtgJy+bn7CD+er6tpB594ktbiMs0uwiuGYKrwgYjBhQSjNxpznWSlF0YU+t+
i/dn9mK8v2rF0z2Z3cxAf/+6uZ5OsMPDn/HHbo6Tht4pz1QEhBI41uux/FeKJSyZlEUCt8P4Ky2+
s9FPdfjObptps+poI8UeWv/+ePd0ZMRi7G1kDuK/Ywp3yDpk7444ozQA6hzA37OSS5k17R+N0wqw
bBfCLycE/e59mblro7wCqk1JiNgUihVoj61biQbtTAgi6/JG7np6eCvy8owb+HLjOoT959vt8ICz
jud7MKlGOmJToCaDAgAQ8HQt3J6FJ6kIDXjfJuaYeXXF1ZFPG2293Eq96c301kz7H/+FubLDDsh6
nEAqVmAXvYoUcJDDeoiExRbBmyrcKhHUbJ6bUdrnb5dMVTilz6Q5rj/cHGU8gMyhr69/cfknZmD5
OBK4Kdjv4ojl2hGtAex7iydU5bfrCjtIcgKJ3PQSJGK96zi4nVOdRH23FAXrrfaXw+t3QFzAt2Gd
Q4Ldg+k4Er3wRiYIb/71jpHXGl3ae65aiXVPDbP3EuODr8NhpdYUpazNGSETqbANTCmA0V6A15AC
IDTTiclZtGsHmsmwtB9JxbxMHO6eh6eHhzGZLSqIrn93KBADB0FTAJuhuFPKWQM0TAHSA5gOxBfi
iaKvNAJP459qB55uuGoFXZaCJcOTCRZdkfjjryC8kiOeGz+g38uKczxIx2LWVwQNsEF4bIMMBl4r
lSy/XrXBwU9PP169aiVUHbEBrrZi95Ci/+kGvUjN+hpVl6y1tmQaGIHVGYmon6hPRFGt8UxBKl45
4etNa9pwodV1uXnHSS4X5zdlWJ+W1a4Q/Gtq+q8IJ5UiLOKpbo4D1OYSrN0ZHnVgJSjzdr7I5xMK
5atW9I7JKTMxoV+HzerogAOtddWFZvCfWWVivAKIKr3GZuJMwP0onjXNrDm+aT7QVfu0XUeEldyL
8PH+8zy4m0RZhuBeuMDNKkxjaVJBbCy8BO6Y9eGNgvv08FbkVcfiFR7+Nu5ixBN57367doc6Hs6/
DsJmoBoQvjEJIjzMP+BREVSGb5LKfHY+TTtMK8HQm7cdm1UTn76tDu2shu+341lJC1AMRgK6W0H/
zduVNMdxI+s7fwUvE+E5gIF9cYQPhc1W2JqRTT/P3BS9UeoQxdYjW/Ly618mqpdCFbrZfmZYB4ti
wUBmFZDI9UsDlwYFiYcqWdSYtcfOliINpq2puptmdaDvck+V/6G7HWFlSAcaAr6GztkEeg4G5lM0
BLR2ELpK8azZ34SVcaSuYsosWIOpO9q4nven89Dr7CvOMfW2+Dr6n9Av5gTCZIAgkC7sIIIEFp4E
kHEGnikVLrVJxis+H5vZj6x5vGvyKPcbOnz7X+xQ2EpU9V0IYNkwQjHXE24YBG4wHTE6JceyVvIC
FetPJapWpIzYaJxLy4+nYgf3whpQMlqj9wOvSoreVwTE8ppi9bdJoC5m2rkRlshotooSK1uU6HGd
4Prh7uBVlMrtYxE8MR2kB2NPoPLvFCb/SgYbRjjG4MR0LJ07n8dpa6L0qkXU6iTCyE1/YoqrEf+/
3T9FDxkAlglc1iCGUxSgXEtBic0g1XRSOkfgQOW/5ej2z0acNu6UpRr7s0s94s+bzT18xkadNVir
KYIyQnR0IJtgJ2FyA/4T7jjEKOTPMDic/wSm22BExUHJG59wYMdodHFdwOBh3QrJpMibHjFV8xRE
Yp4ohHwTXHHY4TmDeZYc/Am8493LqR1Tek6UB03GDblX4m76/ZS4O4CHoU+3hzVeP7xDHIzDrYIf
D/2augOBqyMBjZEjJKKEn2CDZh0ptdxlJUeIASemrMhSeuqpV2opRv6016/D7SEPg5s+nz84B+qe
hsOCOJNCRuKSk2D1iCxUynDdXVRBhnOf2ErwpKZ2OTXmNVPzaSiqB3ju7UnY5jcM9ZUkrYoKXqHA
ilQhPQgh50uNeUo8UuPzs0mBJ0qLwu7ZVU3ZokGuHlelBkTn/2mFaeerx9tDnjztJZQu5XpBSg72
biAIAA70l7JC+Ke0wStO4ei6y7x+jbVO3LCNkTV3emqZar77GMXpz8cRh9glinGGBOxgNhIlPipZ
cn0pKE2gIfkXizhMkSqQusYH4dbslYLZ4+L9+svqiJYh6B4FMYDRbkAdJ0pirq5ALEaBglQxD9a+
E2BAjGJj9WQ1Ibb17ibJL+gBvt8sdu4RBpcAbGTc0rC1QKIX25IroIOTRDFhN1HMVhOMGCckXK0a
drV+Vhb+sFvitKq1H1ExIZZTX7yWO43gyMT64UNVWtCHVHtXiU2Uw0SUMIX5UEYg4DqIFCYESBGa
TBdeJAvj1ZCGynHx8OGqJn/V4Mmyhmo8cLkc3ds2Gt8535HkMS2JgtqI+g2hXkRnBA8g9J/9Hs84
W6ohNfXurkH9gp6sHi+hc4tOoEMGNaOw6c0u/grSxoCChiiwaBR7MGUQWMRGLWUH1n1M9OL4fVnm
TAS/PK/YsVxM2XGYGj2f4hJsd0pJAQgYaEBDcAK47SxcW3hHYUptVpnA1+oIo8nrJDV3zjwPTnBW
/RmOuKrpnjeYcYu9uPzjqMOrHvw1mAAvmFDpSzA+E+sNnI8QXRYxsa4bBeP/aOntetawq/WcH8T0
tz/0ib/jErOoYwyUScID4tKj7u4M7QjXGb5TzmAN5ZdC0hxQUNE+V1MjTi/M2I/8w+zzw+L90Gcu
b5QuTnP8oRRMdl2JODqs1xMJdJWOcsz28jRGlUMU/uVUxpqeUwWiwzEV10vekEFLdcA9/enVm5bZ
SnPIqMMQ57HpBtbEWp41ycqGyBKYsFK9pNk6IKMmfzFVKQ3FONG8LtraDBX8IkCpMTe09/1z77P1
oCbEgmQkBSc2WAmWiu46SmXgQlxWr7U5/yEGA65qimcNNlYHJ97qt+3qoeSvHE5t0dOF95RhTiFz
mC2rMcQMmjtYuh7sMCbsRE8fzVRRwejUO2u40GMIbzS6EOXicXN/W1riHArgQFMoL9Raw0EB0qQz
DEw/rMHtEOWz8x2n1ikWHL9IXZ8sdcYOrMZd1Tw0dglXdGR4YH7N096G6esSS+bDzijCrgEc93ww
GjV60O1txpJokF0pBLBHEn8J/aEypU4n5RyG1Kw2pJgR2u6Tr7/E2zc1njmY6GDkMUqki1i9RAVB
UBQSNIted1IFEf8uPPMDcRVPrYoh4+Z2Ipkf3n0G2f56s1zdjyoXu4AJ26BCdzSB6ipEQtUVW9p4
uPYUlihcVGgxXuN0Qf5wVM3N3LW4GbcFWWwe7tbvdt1FDwEEV5xcvXqRnYSNRyIWswhQ0mE3Uixo
1txQuLatT+cTbifzD8m0vOGCs/oIhvlD96YL34/c0RkOCOuSIZ6CXSB09Ig0aOEyB3vLyZRN+Lvc
0UP6rmoeRIsxN84n7punTCQvQ/CQHkDVd8p6QT2xwmC0EBQWC7uKyGwl6JfRRZku6M9yRiQDXbMG
sXosklEexPVjgYv5/WjOM1siJzxnaTgjVGCmpWWeYPCecE9N1I4GY56HKT/MflogHYbUHOgGBwVX
vUbff3VQozG7oUA0KVuiZZ4xa2OKRCXMnuq8JA7RRbWB9xwY0ymkF6ljeHVW2T48rthrlQlaNxtf
Ld/e3o4qv0zmoBVaImXADBtribdakCwTWHMu+PgMqALMeELHuL2tKZxNbwQ7o2PpebTTUDX7zzqv
0W9dQsu0zwZhjmsXWARzEzOSsEGDFVkQhBxAMepid3EyGM5/2uDEpxUPs7upZmLnZtkKIv3+cb7Z
R7CL671vXLTDKcuxy9aCpmqwPl8g2r2HjUbA7hEqY7GX7y6OHg2XOhM6Gg67qjlYNdiaj7EsS/F7
Pwuqr0z1iSvonc5UGLinicF4qAiWEouSF8y1wLoINl3LI9NApRqscMLjPBhR89C4zux8IacteG77
gE8DC8+n3JUqL88s7CzH0K7gkeScRUrcG+P1hab/bpGTpv/uec3CXeszHN3l93Cdrwe4KD38kuwk
GAeEJ/SFaZBMjmaF+YWGsQA2/jjeNZylWn7RQDaBX6oxKOZ2tn063kKlFgNfnu5cytF6wrQHRcBi
nYDAuigRnGVKYeHfWWDM47wjsnSLrNmerE+zjwOoYVpgfqkSzkbiOoftJODit5QqbJQD8s0DjXr0
TgZzjNaeN9aWk021fnxzP/v94MYeWSGdKeUk8FEQe07QBPQw5YnhoFKaaGSw7qJtVS1zYmtVY2pm
WprUQo7rx/bd2vB7rBGh76kGSeH7OhfmBWOgqpvMsKyv9F2LEqMLoPI5ij6bC+vg8IfbxnKjirh6
2Ii3ZYM30yo5734J30VMojclr0cZBDrqQd+TAvXRBJKcQWweLOtPcCGCmAY7EiS/NfriKihc5Uwd
FD6uOWjJ4MVqOUEIRxf79z0Gqdyhgsm+RxC1Vnj4IAF9scI4ScDKTUSaoqJHC8fh5fw9B0JOpSLv
HtdMrlpM3omWZY8q+NPTer6+39VDl8BQadpDO5Goh7sTo0HCmkQ8x6huF7OPyoCiqZ8P6FbznzHn
q3EVN0sxzZOxGEasN92bx812s9jc+893d+ijYCWsa292nQYkd8lTxBaiCJqM7lnXeZINbEXHQHS4
iyKK9SqnwDiGY2peGoVTdjkFqK+1GlYcE0pTqYr3VCrDPANd0mJxTYKLNGpDOscEtnZxIPAuKrx/
Xp85qcs4yqc+FkeNbeL6lqOIP/UZpHSXQVpOU9JgQ3H8LgIxfS0y4xLJWIzPOMO+l8+epjL3GSmA
j2vqG+X28Mv5yCjEGNnT/qTurj6s1ZPMm6CMRUw0+AIsYFmyxr5KcGDAQqRO2OeqX+t5R9QtGtQt
xj1KXn++3663m8+L95OrCpsByJKpW/4uBbvCZUQd1n33D1DkXVCcUI7Ilxl2krpImz+zaHWkx8Nq
Bqd9lLDXvDsZSypWwg/dv/YFoHDD3ojeJ0qFdoZJt0sU5dj4TGmJxfoJ+10lFZ6PiuHcZ+wTeHpV
kzpr0L/Laz1+5k/b94+r2VGTpIfy6S4kTJwyJAVsJcYVhlaTJ1KzJIKWTOazvViqmWvSGsUf8MtD
TQK2Fz7mc+17FCMcjFBBEZ2EwhQAuNMcVrdRJ11IUsrUpuc43YgK26BiJvZU/Pwqj2tQpBPcWlQI
ENFOYKdsK7FyKpkAe1S7JOwLBfCPq1dEczH1FLniNq6+6ofV48PqvoXhGLnGYi9LQkyInGgVXJgy
Ey4DFTwFEGdn27QOZ64pU7xBmT7iYv6Ubz+vt6uq1xZcE1ZysBGMB3VRRBqIQ0AwFjnlGV5qp0ZB
vnqamoJG7NrBbXNsVbV5+DLoBNJDnlMdYSmMLWrQH+BQWqzVxqpB5SX1QYdxk6rBLFf1Uqyxvh1X
/Yb3nx8+rB/e7bbHvr4NzacSqnNRBu8U9t7GHLygwUIoN47X2XjPkrlIlx4tc0Jy1IMqdiRtvE4p
xv2wER2zeLbhaPTZGf0PKEEwAxpbp3msFBfReDS+PKiiwbmOhZwuawG7W+LE9d8/rEnXqkG6bpkA
ByU336YviJFeylgKhnz5KvufS4416C1R4GZVoAYEBwdfGpADCvTrTmTG1QuWHu3pOTFw97Rme9k4
goqrfXpP90vutZCD26AvqeRSsoiFlNEiNmTEVgsxGgIiElQFycD84X8RTreSbTUdVzW1dw0WxCFD
abH59Pvd+n41ZKGHeqJB2yiwbKHcsQmVB8c6EoLlQfDOW6FPoPQMp6ypEY0rQsmDG+S32eMxa4GX
tAUTonbeK+xa2fWgrraznvAscIe4pKtbqp6kXlzqxuJanQDIHIaWhO46l6MiXIN8F0xG4oXG4uhO
amuj1T7+GVDM80CYFdVaNdQmrQ8xms8Pv64fBrd7H7VIBuztjhKPPWJEpyQofqGDXYh+UQtfNba/
3XC2mgwtWmSIyctbbGaYKGmLk6YAsAeaOowQB4yogjEJWoZkREXsT0utys9Vk+OUp14YPBqR2dCE
9NSJnM9GUzKzVGGf5KgCGMGqs8QJ0Dap5FHZyLj19K9GU4Yc5gvGjwZVXJt5Y2eb+djAjOunD93j
fL19PMCAF2uhyCwac5bRwcHqgkCsebghUTkUNMPV7SOPz8AcjGY/ldRcDaq4sLOGdWlnYxCg+f1m
8eFgmZW2dJgZGxntSA7YB9knid7xjoC97FQEvZt1Z4GJhlOOSGqYjHY5xrJC2x8+y2pZ2gEcEIMH
oLrR6IytJALHwqboAxrumSRrsD5Aap/ppY6IyUKn/RGToRVzrgEl6WZ6MakA2M6WPfol3WHlO2Zu
SmEzpQF0KxVJMhw95IzDDY4dSgVYOhYL+GJ8uRt8T8kph1L/9KpmZ9nicXmUngfkI+76hD5QCkFm
BoYtbjioWZ5STSJceZRzb6KhJwRnA+oIVmq84vnEdbpcPX3Ybj49DdKXXJ87iX+jQEqJMQF6vPIB
DXnY5ZZpR2InrU/MeBfcZTGgstD+jeOAU6GgycCrmocmY4eiyPuSjXbMZDrU7chsGZZb4xuFO4EK
SjrrIijnGfQkTHa1ufmChzOOSGloOPP5uKD5x4jZ1z3wRZ8AH3kXqSCgx6DKCdKjw+YHXnbUYmJF
fCZi/v8pov3xhNv6x8pf7RasIXYWfFy6+Ol+tsWG5wdZiFsFDC0hKWjR0WCX4Kg1XP2JE8ms5rJT
gcqzsF31pDVZvHG5LrU5kPW/92BIimP8qu8M6YNn2ZgEJjHiyRQ/AwNdinUYyQBaOy5GZWPDiSoS
lrZFwq6fIeqes8X71TGTBjecSq7jCSsz8OhoX6DABQHJBWdKM9nF9t0wmKoiYUUb+23Fxhnd++aE
79fXX7ldU0KQJMUrF4V1DBv4ObitEtpz2LcCPhw3zAcezIvkOux7En736nzPwu9e1fw1sh3cyo7v
vO9Xj/PV4+Zpn0FQSuuNpokGDgYpR5AqiqgSYEF47XiELR2SP58atJ+0TfD+aU3urEXu7OD7Aoo/
gTHy+PZxe1SSS6afzYEJQUC0FsxAOCfeUeI4FS5xi5ndJ8yb0YQjchpewtUx82vx8dNBLBZ5qFMQ
oKyRWGxg2yXi4Q/pKKidCjanCGMko8MM9cLzhv94tRh7F/77Juyk1T6UWlyTHUgGAfY3ywpR8rUi
nWQGFF4mPahQgaqLcjmPs7e/4PF5TftCtGgfi/B/rbb5dt+2q4/LBa5FAHFNMkfZwrBcJWC4ypnO
MsM01ecdwWXOk1HRfFvT2QixzcCev1tU7/jLDnnb9l12CqECtFLjsZAGFGki0Hj02O8FLGmOJazS
PlOY8mey5s4gb3+ZwG4DA7zBlT4kASAE0/QiV/Ca4axwxIlKiCYuifWKEopQ2yFYm6xsnp/DdDUR
rvVql2NYm59WH0Gt/WW9+vWY691vY4fCPrhOc8R28RT9yViQ5w1DTC6gDcyboNRFSd7TZU55Ycbj
aqaWU4tmplaTer28C8AjAAG9UTfo9Nv9hIdTgtYZIyh/DgHEHeLqRW6I6kzikTEw6p9pPLqf/5Rl
uXt8VZNpG7RPYHwPzTtmKwSd3QVBK1T/5HLnPQZnULZkh4k/3hIwrRUNIqkk/lxDkWqlZ1qKVGMr
/rSdWgYzdzeOZRYAqNP1zz75mECDROxqsBdAbYQNB9q5StRpL7mNz7QAGM7f5mU44qomdqolzmbs
EG+5/+PjDLbQvq4DNQ/Qd8HkBOFuAtx5mJpomQxEBG6y8fBLM8LXGM5RLX7XCDnN7swYq//jsfAR
aw2RhsR456XCinGN6cOI2sU1CHAZXcZze8I1Vc9YE2NUixh9BBv5uPmyGro5iwogpFUoFogO2CQc
/VPwvSKxRugUdbLqBJ7xeL4RMdNDP6ezcdTif14NkaqOx0Vq7WHTWEI9+vg7TxHkMJLsjHGSg8zV
FyUvDuc/gUn/qg1TNRcNJRt+eagXCr+8vn1z//nd+mEfDh7XemXLQb8CfZvxiFWkXSRdiokoIbpA
QckBK+tlar1O0DLip/FFSql8HXgp1IRhznyp95N9hQj8gHsm5hzhsBAf0eOR4fR0HPTcAGZjdC5r
Zc4rHI1VTqVhTAZWXMlGSiH88mAKvZ5twV4+etNluR8ZJsaBGBbYp9GiY9PHSEB4Cc9l0n2bt4EA
qGa5ukq/7WBbXm+W67t9rsrt548fgc2vgb4wu79/uv44W66u579fb7bvV4/Xnx43mOYDd/V29vhu
VSpvtu/XT/sHXxe+trOnD2/B8nz7ab38+rov3Owj3m8X8N/t6utrOvzl02pb8hp3v68Xfm56+tem
h38MuII3UNbDbjjrh1VrPa6Mdn9uzatfXl9je6jh+/0JRv374f73a9zp+GRzd304Dl9f/7zZzu6/
kdLdiNfXj6snuDkett8IxW7466+M/cc/r59+hb2+Wr7dfN6+Bdo+PxSQblhx+Y2zN+z1V5z/459X
/wGzcDa/X8EcuP5hZnYjvr3+FR5uVw/fwGHXr79iMOlhJaZvTP+rwTrf0O+/+r/KzmS3QRgIw3c/
xRwTqYoSlgYOPViAEDFLlZguJysNUcWBtCrJoW/fGZOtUQ2qb5jPwzDzj2VLljzFrutvkaGR7+On
gC2jOClykK+PERjaU7KUJU/Zw6WZ0ONrFsRAt9CR1No9nbz5C55583tBaK0X7H3tjLb68sJuRGtg
CQ3r9pNqByeYHSr+oCvldoCDm4OMLVawSCS8dxe8ofHNR3XrzczqQUfdyaJtNSbU83GHlJ0Gnl4B
ymldVfjYAnpG+7+rjIyZ0OcQgFMPFLuNKRyeYBlP0yLoDRdYqAU7O6GjddXUu7GRti3BVpIHAuKS
L0OzWZd+ja32mFoYaLMp6hOLSGkXuIx60DlKnz1v3+jsZ6aDYkQdckCpkEs+5IA/cQlNMh5HA6xr
YVyVSpNcRCEm2BxXy8YaQ1RGL3IgBZZLEVCqzJOgCPtdcF1MQaOLFmhhYybnHlk9lkGDK6Gv7x67
jvhP1cpC8hQGMzvx4w69A5TVof0l8k7cZ3Qa4xzDfgBQSwMECgAAAAAA2IYdSQAAAAAAAAAAAAAA
AAgAHABlZGl0aW5nL1VUCQADSMvEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA54YdSQAA
AAAAAAAAAAAAABMAHABlZGl0aW5nL3Bhc3RlYm9hcmQvVVQJAANhy8RXX83EV3V4CwABBPUBAAAE
FAAAAFBLAwQUAAIACADYhh1JfqnxIOkAAACCAQAAMAAcAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LXJlc29sdmVzLXVybHMtc3RkZXJyLnR4dFVUCQADSMvEV0jLxFd1eAsAAQT1AQAABBQAAAB1j0FL
w0AQhe/9FXOSRKTjQS9LCRRtLhaVpDTnye4kLqSZsDsR+u9NbEQRepz3vvdmZlcUb4WBnHzHDlSA
gv3wnwxxrANHGYNlaCRAMwEGEY/SjSeO+ExKuKtKrLh+8Yp7OsuoB44akZ1X37c4UFSuhYLDn66I
VPN66NvV1abyG5ynJwmMnZDjgMtdaBvcc0v2PPnbi7a2w5A8PtynYCAqqbdQcPOuYbN0GPM/ksFV
yxgbmJQTK31UqA65MaWG6R+4ufuN5YFOPCsX7MhW5c/CV3EMt9kMRHXGNGNv1Uu/qUU6SJZ0mqWr
L1BLAwQUAAIACADmhh1JVxgTSdoAAABQAQAALAAcAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1u
b3BsdWdpbi1zdGRlcnIudHh0VVQJAANgy8RXYMvEV3V4CwABBPUBAAAEFAAAAHWNT0vDQBDF7/0U
c5JEpJODggwlULS5KCqJNOfNZtIsbDNhd1Lx29vYgCJ4fH9+7+3K8rUkKIzz3IIKmGB7d2KIUxM4
yhQsQycBetWREL1Y43uJSvdZliGfnF/Hj26Fe/HTkSM+GjW4qyusuXlyitX3xKweJPCZNy0HXF7Q
dvjMB2M/z/n24q3tOCZ3t1kKBFGNOgsld28aNssG0V8kh38jIhvYKCdWhqhQvxdElQY3HODq5gcr
gjny7Fxqe7Yqvw5fpGW4zudC1JaomwarToZNI+IhWeg0T1dfUEsDBBQAAgAIAOaGHUlXGBNJ2gAA
AFABAAAyABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vcGx1Z2luLXhodG1sLXN0ZGVyci50
eHRVVAkAA2DLxFdgy8RXdXgLAAEE9QEAAAQUAAAAdY1PS8NAEMXv/RRzkkSkk4OCDCVQtLkoKok0
581m0ixsM2F3UvHb29iAInh8f37v7crytSQojPPcggqYYHt3YohTEzjKFCxDJwF61ZEQvVjje4lK
91mWIZ+cX8ePboV78dORIz4aNbirK6y5eXKK1ffErB4k8Jk3LQdcXtB2+MwHYz/P+fbire04Jne3
WQoEUY06CyV3bxo2ywbRXySHfyMiG9goJ1aGqFC/F0SVBjcc4OrmByuCOfLsXGp7tiq/Dl+kZbjO
50LUlqibBqtOhk0j4iFZ6DRPV19QSwMEFAACAAgA54YdSXdNix3jAAAAdwEAACwAHABlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQtc3RkZXJyLnR4dFVUCQADYcvEV2HLxFd1eAsAAQT1
AQAABBQAAAB1j0FLw0AQhe/9FXOSRKTjQS9LCRRtLhaVpDTnyWY2LqSZsDsR+u9NbEQRepz33vdm
ZlcUb4WBnHzHDagABfvhPxniWAeOMgbL4CSAmwIGEY/SjSeO+ExKuKtKrLh+8Yp7OsuoB44akRuv
vm/xpyAi1bwe+nZ1FS+/g/P0JIGxE2o44HIMWod7bsmeJ3970dZ2GJLHh/sUDEQl9RYKdu8aNkuH
Mf+RDK5axtjApJxY6aNCdciNKTVMT8DN3S+WBzrxrFxiR7Yqfxa+SsNwm82BqI0xbuyteuk3tUgH
yUKnWbr6AlBLAwQUAAIACADnhh1JSi4+MOIAAAB7AQAAMgAcAGVkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1ub3NjcmlwdC14aHRtbC1zdGRlcnIudHh0VVQJAANhy8RXYcvEV3V4CwABBPUBAAAEFAAA
AHVOTUvDQBC991fMSRKRjge9LCUg2lxaVJLSnCe7k7olzYTdidB/b2IjitDj+37rongrDOTkW3ag
AhTsh/9kiEMdOMoQLEMjAZrRYBBxL+1w4ogvpITrqsSK641X3NJZBt1x1IjsvPrugD1F5VoouB9q
eYyLqxXl99qEniUwtkKOA86H0Da45QPZ86g/Xbil7fvk8eE+BQNRSb2Fgpt3Dau5w5j/kQyuSsbY
wKScWOmiQrXLjSk1jK/h5u43lgc68cRcbHu2Kn8GX8Ux3GaTIaozphk6q166VS3SQjKn0yxdfAFQ
SwMEFAACAAgAYIgdSbECliGHCgAAhTcAAA0AHABlcnJvcl9sb2cudHh0VVQJAAMzzcRXAsvEV3V4
CwABBPUBAAAEFAAAAO1bbU/jSBL+vr+ihW5mQBq/v1sanbiQneGWZTgCOyeNEOrYnaTBdnu727zs
6f77VdtJCCEOSQANNzNCckiwq6ueqnqqqjt8/Z0VaLcaIjtClh97TuyEehCFke8j27T8M/RViCy+
xryAX0uaIssyg+gM7X4yrciMYmTZgW7CjxW7rhObSBB+RThKCJd0QBMsCUoZEejw8wmiRZJVKUG4
QPt76HpEkxHKsUxG8Hc5IpNnC5yTX74u0iwMwyCw2jULzUazMHBitF9QGaMeEYKCqA6GZRAVqGAS
JawY0GHFSYq+jmihbusdjO+sbzxrXT/yvcfX/wbIRKbpuxPN8jI/LzkZMH4Zg700IQ90hBsBo91S
WWvYuqtbPto+LejNDjr6dGR4uqc7PvpckgKgMUw90sO/hrPAaRriRFQ5LYaAKc9xhlhJOJaAoWhX
MoomSiaMk1btzMiNUYflOS5SlNGCxOidUQluiD4tjJGUJWgwQMYfLKtyIow9LLHR/dIzvpD+b1SO
X/5R0Sw19ki/GhoZvmWV1CQRUlOKZ1I0cnRlFNI6aI8lIKuQxwxCZKtV9EEt6ATkNAIMJVJsIS1B
J7clEZ0ao3UEKAWMnOZEl0pALQqcsH+4v0f5uoLqpzuVkCw/YMvUWA0inCSQF+cZG+ryRm5BBOQ5
uBbW6HLO+HMsQZSguxWU8TT9lWYEGTIvJ7IaX6kwgRt2M4oFMi7EVBKrOCi6IljT+7dmhOUkpXht
UfVTs2KmAuq4GAE/AH56ItbWbf75xxe5eNoaF48vwUnJuHziQlMhWyrrToHb0FZfxUifyfqjAyok
KWYINARCmPnD1zi2zuY/nL07XHR32HI3sPPDu+sPE1UWOnd83cTkeml9TfqXVGrj6CX5uwfU6Meu
r/tW4HvTmhvXKTFlRSus+TKjQE4zmntBZAFdioTTUgI9rkdYBoTUjH9SAqlJ0g7lSUb0clS+qyvl
gFVAwIyjqsB9sF4yJCSW74H7B4QTHiMlMTaM+86qhbP+BUmkNgDzx9I1mg81cTXURzLPFgERQNGx
I9dsAcL2whYg7GhzIFJ2XWQMp9qFYIV2TeWo0ffpKAwIlHAjyVhBFLGUUBmJ1mfpbRsAnq0HthV4
9rRIDukcBo4ZnKHtAMSHO0cYYhMK75hJEeYEXeEM7utXEpWcKe5WBRr6HmgxWF5mREIpXQhhGDTN
i217cUPuIBen6nFO/qwAKgTPUHmLUsB1kfKB7gWh44dt3vPbwtjxNvfevRAG67QSNH666wp8RYd1
M2MogRqWklNAlRi4SEaMawljl5S0OjLQI9/17prF+ZSOFkdyaDrWmSr+6AuQJSwcI9AcGqDLbeMK
c2PAspRwYQSFIXw7sa2R55aeG2VJWXhX4Lw8Ae3NYWGcGNqdDdp9G7SJDZwJoTFOh7TQBpzlNU+J
2ii9xhEq8k6MDgG0ClrSgSJAwDKlHDKb8VuIKrSuw2aQbfUdAjxV14fcOUeJ+54Cml7BU0usXOS6
ULdM23fMjcL4W7juFftrk8Sat2yxj2xXIf6qfSRgXPsuXTRv2GIPOVCVbes7LwZQIh8rBaHuRQH0
nxuVgm+KxHpsW0OxNtcGrmkGzo8QJavxWuD7vjnNmoIMGbR4SuiDXthrCRvbavZQ/DAAnpkRACQj
EnZF1PaN4p1tsdPsMs30ePHa5JOD0BlIcUJTxxBVqYY8DeslyN4+hA4YJazKoDMlaGIUSXf0R1Gt
xddCl4AWRpBHwQ8QRI8ybxCbHkyTpmtHrUNU0BY4zkvURprjIdHqAQs4oYQ3I5oSbYSLNCP8/7Uw
rmDVIt/4uhn4Tmi1z3e2b7dFqzUe0CwY0E4FoDMAB9GCqhmQ/gVJDbNfRdDfuod//Gfr08nJ0fnp
0cfj3b3u+f5hr9s5Pe6eH3f/ddrtnfS2/qvgTFih9jWK2iS0re8owAUEHOQslmujLUhScRgQ1c4H
SJW98fsjltHk1qjKIceAES3qG9VIXFPObC4R6C+akqGNYPgEJMus8U6ox69FoUfjZON1ZxfSRNWf
6LEknmwXhhXvVeZ61WyrfFeZvsCmBX6xLD2yAteJ2vPcCqPFeR5G3tp5/vl4/+P+4csmdVN1PtWx
OYNxCYLlpCSBmc+QrSuutHoa3hM4bk7HSTaAcWZIZKsjA2jILCcKlxC2O5Njcayyy3bgo66q/4NJ
fwEGl5WE7gcWJKhZXMSoOV7RFE9wlml9LGii9NEGmGZaASklqNq1W8nemzxTfxiziXHN+KVK4tne
bMXVLsRiLKIwMJdh4QfeQyyitcO51z0573z+/Nt+90VCupnXZoERRHaaD+9CGHI4fnbRTy0dzdnJ
/TGrYOMJVGjXIwLNCKdXgJbW5+xa7f5qpG5BU0WBi9wa6r5jRsESrrI9c3EZse1gbef++/wEOpDz
T11oTI6tF3HwfCKQvobLUhim6dYHhndOdjfw8SrS187VGSFtXGRbuh/Y9vLDgehB/pmvgYtWlt1m
ewS2+25ro+NGLRHqBs7mM96cEXdJDRN03aw8fd6bW+JeYk9WmZ4dnR4fLAEoMB3H8n8C1A6Qbfvh
zwhqAcjxdNMLLLP13KMNIN81XwCgcf17dnxU+w7PQRElVyBfU7WqFZJID70o8Fo3sb3Fs3roeNH8
eNV0nyjHt5OvoEkMle/w9AD1bwGLTYaeVvDm6BZnGbvWMgrP3JuD/IfgZSzB2YgJuRC8uxXGAUZu
METXZBNRowOOc7IEzsh0TPsnnM8Cp+vorgstmL2scXPn+wEvcGdati80JSgZYQ7rApwAWj1lPWlQ
vBFit0opTPLz+yggmXCJh1pKEpYSzfL7VMJITdW76U5P4D9leNx89dV785k1Gt7TlNj6myP3hDqt
rot02/Rcu61a26Ez77cgesJp0FTzO0iGnMCsQAdabTRYrdHp6cRjnNtikeu4YWv1CFtOuYLIfo5N
eNd0642aDXX3XcezzNbWwG3T/QkHCOJqOKM/DGuXZLyBtqkNMJ1HfjsZuF6bC/xZSujUxzRqdejP
ERAVv42fj0pL4EJNpeMmU4QgRQq5lZIB8ESqYXhXVFm2JMsCy3WXEeQPh4kHkiLfM6M1D8sgtMKX
4Z+CTSlok8BvDAqjttM/t92g4DUTKtjlRI5puq+sRAwguLSKZxvZZOmhE3h3CTlnk9eWjX7oPINl
bVtqE3sLVhB1IvH0mWONbgQaj78rPT8sfAh+1UrOJMxw9feMMK939MabRG/Vv08MbvdA7w/W2/qb
n+N97Q/u2z8/vHE6DWZvnC7OYLXtXr2lpqsvZnSg6etAj7Jt3njhe7g49WVnB54ypo/BmxJe9gdv
bBPAhasgBK5yRAW8gBcEFCz4DXgHrgWDyz/xFe41AuDzet2d+hFSNC/qChbDy9Fur9fd09WSapkH
IRPGlg0zg2+HbjuHt0VN5LnODIdvW87OEeE5bf4hKCUFJWmMyA1J1N7Y802uBes0gXZAiqEcKVJ/
h9Q+l1ruJVdZt3Tcf9vsI9citayWqbHiiDNgAdHyBZ6Je6Dx29Q9K+1MfnNbg9i0QWOw1fLdNf/N
KopRgqvhSKLe/seT7vHv75EYVVKqvW311fNf/gdQSwMECgAAAAAAWIgdSQAAAAAAAAAAAAAAAAUA
HABmYXN0L1VUCQADJ83EV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA9oYdSQAAAAAAAAAA
AAAAAAwAHABmYXN0L2NhbnZhcy9VVAkAA3/LxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
APCGHUkszWv+rgAAAN4DAABMABwAZmFzdC9jYW52YXMvY2FudmFzLWNzcy1zaXplLWFmdGVyLWhl
aWdodC1jaGFuZ2Utd2l0aC1kaXNwbGF5LWZsZXgtc3RkZXJyLnR4dFVUCQADdMvEV3TLxFd1eAsA
AQT1AQAABBQAAADtj8EKgkAURfd9xSxroaOTmggtSgpaREJLCXmND5uaHHlOwfx9RouCfsHduatz
TxkmWRxnc+FHoTgxZfEOvWtllZvOFWQ6JOtYr5oWtMaaIdHSC8Uijdn0tlXNGno8nK8o7YbIULVr
n6BVDRbrGZuq3wWW8aN5kMQc5AV5bgj3WCv4khfGifBFFPBBbY11Hfa80OCQ+CD7ULV6H/Ql06pF
JoI0nZRjxVgxVvxVvABQSwMEFAACAAgA9oYdSaNZgMaGAAAAGgEAACYAHABmYXN0L2NhbnZhcy9j
YW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUCQADf8vEV3/LxFd1eAsAAQT1AQAABBQAAADNzj0K
wkAUReHeVdwNGDJqFAcRQiI2VmonFqO56MDkjbxM/Fu9WYbl+apT9jdMljBzWxR2NgVfnTGLLMSr
C6j79rGnNNSjkidjTJ6fsdqoRl1bVNsqSuI7HZh2Xli77m7h5emCb9AMBafqPhYuIdB1CVEIBraU
hLYf4EJIlPGXGrNR+U8zP1BLAwQKAAAAAABDhx1JAAAAAAAAAAAAAAAACQAcAGZhc3QvY3NzL1VU
CQADDczEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAQ4cdSULQGHexAAAAzgEAADYAHABm
YXN0L2Nzcy9wZXJzcGVjdGl2ZS1vcmlnaW4taW5pdGlhbC1pbmhlcml0LXN0ZGVyci50eHRVVAkA
Aw3MxFcNzMRXdXgLAAEE9QEAAAQUAAAAzY8xC8IwFIR3f8XbtIMGwaF0bTuIg9KgnWv6LIEkLySv
Yv69FUVxd3C84+7jrm6afVNAi+edZugJIzhiSMigrTdo0TEMyCVZPzL2kpNBuFCAuccQPSrWV1xS
0IN2y9t8NRMnMqPFKKqOO1G3UjzhQtIYFD5USQGFilGUUn6BK1SmCx1rcivl/WKd55sMCriS7uFV
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
G6/NoAUtaPF+h4MN3ODGjgxa0IIW9wgcbOAG99+53wFQSwMECgAAAAAALYcdSQAAAAAAAAAAAAAA
AAwAHABmYXN0L2ZyYW1lcy9VVAkAA+bLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAC2H
HUko2Xk2sAAAAO4AAAAvABwAZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLXN0
ZGVyci50eHRVVAkAA+bLxFfmy8RXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luU
XSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOx
B0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs
4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwMECgAAAAAA+YYdSQAA
AAAAAAAAAAAAAA0AHABmYXN0L2hpc3RvcnkvVVQJAAOFy8RXX83EV3V4CwABBPUBAAAEFAAAAFBL
AwQUAAIACAD5hh1JKNl5NrAAAADuAAAAQAAcAGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdlYmRh
dGFiYXNlLW5vLXRyYW5zYWN0aW9uLWRiLXN0ZGVyci50eHRVVAkAA4XLxFeFy8RXdXgLAAEE9QEA
AAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiR
sQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqw
oLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfm
etI699LSHebx7A1QSwMECgAAAAAAAocdSQAAAAAAAAAAAAAAAAwAHABmYXN0L2ltYWdlcy9VVAkA
A5PLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAAKHHUkhj704MgAAADMAAAAsABwAZmFz
dC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAkAA5PLxFeTy8RXdXgL
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
/c0EYXDmfpIqYW3duOFIhfMdfH4AG+zqIllQftP4S+iQhec36hyFD8dP4t6L+Zzbu90XeQqkV0z8
oZvo0H8AZJ5E8XbyeZKmHkIl+nyoxJ4KlfgTopLYGyrp+0MlY7+oZCAqISohKiEqISohKiEqISoh
KiEqISohKiEqlVHJRFRCVEJUQlRCVEJUQlRCVEJUQlRCVEJUQlQqo5KFqISohKiEqISohKiEqISo
hKiEqISohKiEqFRGJRtRCVEJUQlRCVEJUQlRCVEJUQlRCVEJUQlRqYxKVENWQlZCVkJWQlZCVkJW
QlZCVkJWQlZCVkJW2mCl7Fdj+r/i100jKyErISshKyErISvt9eum7SDwhjL/UmiItM3mti+cXh3N
X+i6qZtnObZW9Vuo7cDzTLG1wTwR6M8zt1W+w43KvzLEuOXZeQ/6YDSVc0+Wv7+TG89zUNgU/Gs3
nu8QX0YevfLvBIEU66uR53FOLMDmkVc/Fl+Uy2wXfHmcri9AyuMMIoogijyIIgxQpH95iiiCKIIo
giiCKIIogiiCKIIogiiCKIIo8pwowhFFEEUQRRBFEEUQRRBFEEUQRRBFEEUQRZ4fRQSiCKIIogii
CKIIogiiCKIIogiiCKIIosjzo4iOKIIogiiCKIIogiiCKIIogiiCKIIogijy/ChiIIogiiCKIIog
iiCKIIogiiCKIIogiiCKPD+KmIgiiCKIIogiiCKIIogiiCKIIogiiCKIIs+PIhaiCKIIogiiCKII
ogiiCKIIogiiCKIIosjzo4j6vfpVD/rQb+4sCKPD1r/zH4WqDiNCBJKMXQCRcXLlpLD411Bkd0Pc
EMOlIbCh6yWOUKPcj2aTIAtlmza4bwylJ4CMOv2L2eQ0iqYDGd+EvjwDq+dR1hmMslJ6vYtZbnpF
s/An61eTlhKDHWxJL7BI0dJgKv1wGPpKnG2UQm0+OinkEV50d9hS/7rM/1E0a1hcD5hLfpUTGYf+
3HY+5s1mNuMLC8kWpfC6eyMQ9Eindb5ueflCbl6zs2C6n7Vkkb2tJZvsdy0xbWMtjWUQuoeJfy2D
2UgGw3Akw2jffL8+285Uk9v53pKWbwoTNkC4/t1kmYNllLllbT1kipmS9MOrgRy702s4X5m9kCOY
6jcy26CNLSvry0Y93xdWZnTRZ33os5N38y4Go2LbEntIqRzqZBhe5VbO3FC5LKiZra39zEtjf/PS
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
DeWMjq4/qRdlaauhLAayU8D1uT7y2rsxofjID142fXzeBarVJbINlDT0aDZkYQbEOJSbMKDZEts8
TdV9plT9Wnoj+htbw36zdzDpAtsv4z50oZCL6a1weQzht5L/s/4rWXv2UpF3hV4SqO5oeLztwURm
MjWVMvOCwdvmHVBLAwQUAAIACAAXhx1JpHcNtoQAAADAAAAAPQAcAGh0dHAvdGVzdHMvY2FjaGUv
bmV0d29yay1lcnJvci1kdXJpbmctcmV2YWxpZGF0aW9uLXN0ZGVyci50eHRVVAkAA77LxFe+y8RX
dXgLAAEE9QEAAAQUAAAAncwxCgIxEEDRfk8xpTZiRKMbRFjWxkIQLBTEImbHOBAmkkwUb2+8gu3n
87riYdaC0mahzVwDvrNSy0mIzgZI4hI+YxJif1Fq2q6usN7irfiNgYw87DFn6/FE8uitoI/pY2DE
JYRx0/0tE5P8yGPVKfKO79HA+dCDi8zopLb6vGygofkCUEsDBAoAAAAAABSHHUkAAAAAAAAAAAAA
AAASABwAaHR0cC90ZXN0cy9jYW52YXMvVVQJAAO4y8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAAAUhx1JAAAAAAAAAAAAAAAAGAAcAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL1VUCQADuMvE
V1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAFIcdSdnHaL3KAAAA3QEAADsAHABodHRwL3Rl
c3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2Utc3RkZXJyLnR4dFVUCQAD
uMvEV7jLxFd1eAsAAQT1AQAABBQAAAClkDFrwzAQhef4V9wYLyYObUpFKKTO0EI7lg6hw1k6yyLK
yUhnSv595DZbpuDb7uB9797bjRbWz1Bv1ONGPayAflNdP1U+aPQQRUcaQhTH9lDnWf/A9p278KLA
B2vzGZJglFRVVbG7G7WndrSZlUg+KSW09PFPfc2io4Is9GTmgKfnmsCds2NEcYG/nfRNOA2epu0N
2XiKChrUPRnIbMY2e0KL+khs0rxUX4ni1NfeaVE3bAXLYlHOcmBzLe4vFwrZEM+Zy6P3ZXEBUEsD
BAoAAAAAABaHHUkAAAAAAAAAAAAAAAAvABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25h
dHRhY2htZW50c2FuZGJveC9VVAkAA7vLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIABaH
HUll0RmIfwAAAJUAAABRABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50
c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC1zdGRlcnIudHh0VVQJAAO7y8RXu8vEV3V4
CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKqqYQd2a4Evye64U63mdXgXD/c
O9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Yc5OalFoxd7uG4RoutwDTC8Z5
fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAFYcdSWXRGYh/AAAAlQAAAGoAHABo
dHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVh
ZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLWFsd2F5cy1zdGRlcnIudHh0VVQJAAO5y8RX
ucvEV3V4CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKqqYQd2a4Evye64U63
mdXgXD/cO9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Yc5OalFoxd7uG4Rou
twDTC8Z5fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAFYcdSWXRGYh/AAAAlQAA
AGsAHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVy
ZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLWRlZmF1bHQtc3RkZXJyLnR4dFVU
CQADucvEV7nLxFd1eAsAAQT1AQAABBQAAAANiDEOwjAMAHde4Q/QpAUEyt6lC1LhA2niqqmEHdmu
BL8nuuFOt5nV4Fw/3Dvf6MPDe+8SkyFZLlpZixWmaBbT9mlTI+WFv05Q+ZCE2mpFQTlvGHOTmpRa
MXe7huEaLrcA0wvGeX7O8P5VHEVYAhyUcS2EGYoCsUEk4GXHZKc/UEsDBBQAAgAIABWHHUll0RmI
fwAAAJUAAABpABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJv
eC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1uZXZlci1zdGRlcnIu
dHh0VVQJAAO5y8RXucvEV3V4CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKq
qYQd2a4Evye64U63mdXgXD/cO9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Y
c5OalFoxd7uG4RoutwDTC8Z5fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAFYcd
SWXRGYh/AAAAlQAAAG8AHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRz
YW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLW5vLXJlZmVy
cmVyLXN0ZGVyci50eHRVVAkAA7rLxFe6y8RXdXgLAAEE9QEAAAQUAAAADYgxDsIwDAB3XuEP0KQF
BMrepQtS4QNp4qqphB3ZrgS/J7rhTreZ1eBcP9w73+jDw3vvEpMhWS5aWYsVpmgW0/ZpUyPlhb9O
UPmQhNpqRUE5bxhzk5qUWjF3u4bhGi63ANMLxnl+zvD+VRxFWAIclHEthBmKArFBJOBlx2SnP1BL
AwQUAAIACAAVhx1JZdEZiH8AAACVAAAAfgAcAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9u
YXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVy
ZXItbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUtc3RkZXJyLnR4dFVUCQADusvEV7rLxFd1eAsA
AQT1AQAABBQAAAANiDEOwjAMAHde4Q/QpAUEyt6lC1LhA2niqqmEHdmuBL8nuuFOt5nV4Fw/3Dvf
6MPDe+8SkyFZLlpZixWmaBbT9mlTI+WFv05Q+ZCE2mpFQTlvGHOTmpRaMXe7huEaLrcA0wvGeX7O
8P5VHEVYAhyUcS2EGYoCsUEk4GXHZKc/UEsDBBQAAgAIABWHHUll0RmIfwAAAJUAAABqABwAaHR0
cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRl
ci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1vcmlnaW4tc3RkZXJyLnR4dFVUCQADusvEV7rL
xFd1eAsAAQT1AQAABBQAAAANiDEOwjAMAHde4Q/QpAUEyt6lC1LhA2niqqmEHdmuBL8nuuFOt5nV
4Fw/3Dvf6MPDe+8SkyFZLlpZixWmaBbT9mlTI+WFv05Q+ZCE2mpFQTlvGHOTmpRaMXe7huEaLrcA
0wvGeX7O8P5VHEVYAhyUcS2EGYoCsUEk4GXHZKc/UEsDBBQAAgAIABWHHUll0RmIfwAAAJUAAABu
ABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVy
LWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci11bnNhZmUtdXJsLXN0ZGVyci50eHRV
VAkAA7rLxFe6y8RXdXgLAAEE9QEAAAQUAAAADYgxDsIwDAB3XuEP0KQFBMrepQtS4QNp4qqphB3Z
rgS/J7rhTreZ1eBcP9w73+jDw3vvEpMhWS5aWYsVpmgW0/ZpUyPlhb9OUPmQhNpqRUE5bxhzk5qU
WjF3u4bhGi63ANMLxnl+zvD+VRxFWAIclHEthBmKArFBJOBlx2SnP1BLAwQKAAAAAAAUhx1JAAAA
AAAAAAAAAAAADwAcAGh0dHAvdGVzdHMvY3NzL1VUCQADuMvEV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAFIcdSXqSsdWEAAAAGgEAAC4AHABodHRwL3Rlc3RzL2Nzcy9ib3JkZXItaW1hZ2Ut
bG9hZGluZy1zdGRlcnIudHh0VVQJAAO4y8RXuMvEV3V4CwABBPUBAAAEFAAAAM3MsQrCMBDG8b1P
caMuYopWDCKUujgIgoOCOMT0Gg/CnSRXxbc3voXf+Ofj144B6jWYxi4bu5gDvrMxq1kU7yIk9Qmf
kpQ4XE1ZfYPNDu9j2FrIyP0Bc3YBz6SPzikGSR8LEx5jnFbtH8rEpD/yVHQS3vMgFi7HDrwwo9fS
yuflIvXVF1BLAwQKAAAAAAAohx1JAAAAAAAAAAAAAAAAEQAcAGh0dHAvdGVzdHMvbWVkaWEvVVQJ
AAPcy8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAbhx1JAAAAAAAAAAAAAAAAGgAcAGh0
dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQJAAPGy8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQU
AAIACAAbhx1J7ZTt+1ABAAB/AwAAOQAcAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIt
a2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUCQADxsvEV8bLxFd1eAsAAQT1AQAABBQAAADNUktL
AzEQPttfMUd7Wbp9bOkqhT5EBSuFUjwUD2kym4ZmkyWZWPz3ZrsqC94sgiGXZGa+V7JLs3wU9yAZ
jgevcLu5u19vV+spzIiwrOgZ6WTdcWWNIus2SKHKwVgCj0TKSAgVmKYHyqbpBpgQDr0H5UFbznRn
12IZ/hnLLEjoT+CLC/Dk03ScnIvgiDusrKvhdmlcWdTxaAo7zeO4lDWLJ+bIJ0nyC6gl7oOMWFHx
KqpiEp8a1HkcOuYQBzWKdhKT/j9K4lt+HcHCmkLJ4Bgpa14UHRa2rDTWpwdmhEaXw4LxAwroARq2
j85gz/gRjfCXZbf16OpXWSpO+Q/sHK47V91WiFk2aYfoUa5DWS1Rqzd0M85DGTQjFPNQFLXqXg6i
KYJQ9ZWHwtkSHLLai6VDrHBrDHKK5/FklA36Fzky4vM7nHOMWqR179GHCVp3Ox9QSwMECgAAAAAA
IocdSQAAAAAAAAAAAAAAABUAHABodHRwL3Rlc3RzL21lZGlhL2hscy9VVAkAA8/LxFdfzcRXdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIABuHHUl8xU3wuQEAACoFAABAABwAaHR0cC90ZXN0cy9tZWRp
YS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4dFVUCQADxsvE
V8bLxFd1eAsAAQT1AQAABBQAAADVk9Fr2zAQxp/Xv+Ie15dQN066eCOQuus2qEcglD6EMS7WWRaR
JU86L/S/3ylZR0reWgab8Ivku+8+fp+0zqbFRL7xKL8af4MPq4+flvfVcg4LZup6/kq882FbeWfY
hxXx0BfgPEMkZuM0DD24Qw10h6L3gEoFihFMBOtrtGfroyn5X5uyGDRczuBpFtAuZtnVaP8TAteB
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
aS2BLzo8alL/X5ZPKlIW/NKaKqp6vrtEhU3psN49Kl84jBIypVdYQBvQqwW/DBZKrzmH6bzezRLG
OmVjq0mesDnRjYvmWQ7f/5QvUEsDBBQAAgAIACCHHUncNB7OfAEAACoGAAA6ABwAaHR0cC90ZXN0
cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tc3RkZXJyLnR4dFVUCQADy8vE
V8vLxFd1eAsAAQT1AQAABBQAAADtlEFr20AQhc/1r5hjczFaGce2WgyuXdpAXQROSCH0sF6N1ovX
O2J3VJN/n5GTQ0xOjltoIKCLxNvvzb55aNZayCegLouhPGPAfVJq1PdktIfIJmJDkV2wd0qpPPsN
nxe4bu20gIShWmJK2uKt481cM1qK9wV8DK33F73Zq8kuOO6QK6E7ClehpgJ+lXMwFAIalm+i+aO9
q3p3T/xJP1NjYay+fitvluUUZsy4a/gn8p7idknCpLhCbpsCArGMz505tA2ERw3sHkWfQFdVFG9w
CQ7jHrlM/pnLcWKTk3bBT6v4QdaK4osc2hYgBz0ehZSP/sfxWUeeU6idbaPu9ntoFO0aj93bdx0q
j7GAuTYbrCADDHotN4O1NlvpYTovu5uEsWvZwhkuXrCl0b0PF71dgzZvdBQtlJjKSEauf51K3QVt
AGOkKL2E8moBKsshbaj1gkFQgy6lDGrnEaiuxRIGo8tTkeoZcviSOBzn4/cp/+KU53TqlH/j2yA/
AFBLAwQUAAIACAAihx1JNrHvSCMDAAByiQAAPAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVv
LWR1cmF0aW9uLWFjY2Vzc2liaWxpdHktc3RkZXJyLnR4dFVUCQADz8vEV8/LxFd1eAsAAQT1AQAA
BBQAAADt3N9P2zAQB/Dn9a+4x/FAmwSxlmxj6lo2kGCqCmiTEA9uck0jHDuzHRD//S60Qp02bWOM
Cbav4AEH5/zJ+ZwfpGLYFJTsUPwi3ZbvHeIrH8f9rraZ0uRC5ri2LpSmOIvjOInO6dWYZ02xm5Jn
kx+x96rgj2VYjFTgwrrrlJ6bRuuNzvC3I5emDG3IY4leWnNg5jalT5MRZdYYzoJskz6XSpd556yN
30+jqJvsxOe0f3IymfLnhn2geVnsh1CvmuMyn3LG5SVP2dfWeB4prWcqu0jJ2DZ0YBPokE0RFuSW
XXPaJHZuZHOm0lMSRT8bUJrjpqrflUbp0+nh0MiolQ08zHMnh5OSWv5AcdLvRvIVy27SlxqnaSHc
tNe7/VU6iKKoV3Feqp7sZBuXse8ttO8VbNhJxjcvbd6tF/WbvJGmJOZ1u8svIFfNkWOJsueclYOs
KslASmwy20g2nBy+Mu3xW5fS7DowOWUKlo35esr0MmWby56y+fvJGsgMH++9n5weTXZpGAJXdfjA
4cq6iyMrM27dMYembmcjSHGFtjSoqcks+1C17PTyNoMyxk0x/aVR1uq5HetOKyWsFsqhLQrp8VZ2
krKTHTWvl/BWHD9GflAujKyRylkV2c16t1WtuW3tSz1olhIZqWwhNSOxjZrJkVG7uuQs4e+Xu1PP
rj0HjMvspjq/ji3nm86zjU5Vc5HUyklfmrCfOCtLxZ/4iWoTna1qszQ0ORhTHCXkF7bREoYp3mqz
FMnK0Ex2Ppchaav/4q4h47WQ299G3B4kgyeivM9s/fiagFmCEkoooYQSSiihhBJKPAVglqCEEkoo
oYQSStxt4W4LSiihhBJKKKGEEkoooYQSSiihhBJKKKGEEkoooYQSSiihhBJKKKGEEkoooXzoTyrF
+KQSlFBCCSWUUEIJJZRQQgkllFBCCSWUUEIJJZRQQgkllFBCCSXeFv+p/y+P99BQQgkllFBCCSXu
kJ7QfQzu46CEEkooofxXr+rJg/3dI8H1EkoooYQSSlwvcVXDLGHFQwkllFBCCSWUUEIJJZRQ4un0
P3qTjqfzx6n8AlBLAwQUAAIACAAbhx1JTllvOMwAAAA3AgAAMgAcAGh0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtZG9jdW1lbnQtcmVmZXJlci1zdGRlcnIudHh0VVQJAAPFy8RXxcvEV3V4CwABBPUBAAAE
FAAAALWQMW8CMQyF5/IrPMJyaoCWEiEkOAYq0bHqgDr4EhMigoMSn6r+e3Jtt07ohOTFlt73/N6q
dTCeg3rWT2UmQF9ZqVkVosEASUyiS0zi2e2VUi/TT1i88iEuNYToXDlDFkySq6oarG5GbahpXWFl
kjfKGR3tfqnrIjppKMJAtg+4e66OfPCuTSg+8oeXYx3Pl0DdtkW2gZKGGs2RLDwCMTbFExo0J2Kb
+6V6z5S6vjbeiP7H1jAcPIx6ObD9K+4nFwq5mL4Ll9sQ7km+AlBLAwQUAAIACAAbhx1JIZP6NOAA
AACsAgAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD
xsvEV8bLxFd1eAsAAQT1AQAABBQAAAC1kU1LA0EMhs/2V+TYXsSR+jWI0G4PCgqCiELxkJ1Np0PH
pMxkFf+9WfHmQXARcklInjd5s+gjHF+AO/UnFnOg9+rc2WGWgBmKhkJ7KZo4rp1z5/MXuFxR28cr
D5W4u6NaMdJT0m2DSlHKh4cp9znPJos/kxMnHZAPRk/CN7wRD8/3DQRhpqBWs543zKkboVJJv9e/
lRitY2lDOw82mGkUWLFoI7xJsS84bPvlj7zuMw3ZNXKXqXhoMGypgyMgxtY0ocWwM1fruKseK5XB
s1UK6n+w7T+Tg9kohf/6+2/kT1BLAwQUAAIACAAdhx1J7JGJQOwAAADGAwAAOQAcAGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtcGxheS1zdHJlYW0tY2h1bmtlZC1pY3ktc3RkZXJyLnR4dFVUCQADysvE
V8rLxFd1eAsAAQT1AQAABBQAAADdk0FLAzEQhc/2V8zRXsRIW2soQt0eLCgIIgrSw2x2mobGSUlm
Ff+9s+JJT+viRcglYeZ7b96QZevh7ALMzE71TIDeijHnJzE5jJDFZTqkLIH9szFmPtnAYkV16y8t
FOLmlkpBT49BdhUK+ZTfLRxzG+N4tPw1OXCQDnmv9JB4zdtk4emuApeYyYm+ac0rxtB8U5n18i9f
9m+S91pxpU17C9oYaRBYMEuVeBt8m7Fz+5lPejlE6m7XyE2kbKFCt6MGToEYa9WEGt1eUy3Dpnoo
lLvMVsGJ/cHW/YyOxoMU+uz978jzf07u8ws+AFBLAwQKAAAAAAAuhx1JAAAAAAAAAAAAAAAAHgAc
AGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL1VUCQAD6MvEV1/NxFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAJIcdSfcsq2lTAQAAlwQAAEIAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1hcHBlbmQtYnVmZmVyLXN0ZGVyci50eHRVVAkAA9PLxFfTy8RXdXgL
AAEE9QEAAAQUAAAAzZFNT8MwDIbv/Arf2A5bm7brPiQOwJhAYhJig8s0TV7ibhFpUjkpUH49ncTH
Bbgyn6xXlv28r1cinwyGkzjri/F4DQXjbo5WF86ozV3t9xdNIA9e7ywaQwqI+awn8jjLofM001/D
V8yONw+WXiuSgdSN1WGKAbvQWZB0VsFpEZrqFDC4EshKV9tATKrbKhAtXM2SLlHuKbp0THNSGr+7
nhjkST/J4uiOXXDtIvLRzHGJ4RqtMsQ+mrtnTdEB6dDMWiMl2fDJ15dgtCUQeRqfJLHIe/Gol4zh
w/6wn6ZDmNZldU9WES+ZaCXaiiejJMuH2Rpudtaxtjto3QR2ZqlL2qIn8BRg24A0ur0HW5JYt+r5
4wLLytBFXRTEU+0rg80tNsTwgh5QqTbN4ADBN1bu2Vn9RvwzWhYfL1r6B9r4f9Hy401t9AtaKrJR
8q9oA3EMD30HUEsDBBQAAgAIACWHHUnrcvhQPQEAAHoDAABQABwAaHR0cC90ZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1iaXRyYXRlLXN0ZGVy
ci50eHRVVAkAA9bLxFfWy8RXdXgLAAEE9QEAAAQUAAAA5ZBBT8JAEIXv/Iq5AQfotpSCJB4EJJJI
QgS9EEKG3Sls3O42s1u1/npLjPIjmNPLy8vM+2YXZ5PhaCLG/SRJ9pAznlZode6MOqwrf57WgTx4
fbJoDCkg5vtenIk0g877Qv+HH5kdH14tfZUkA6ml1WGOAbvQ2ZB0VkE7D3XZBgyuALLSVTYQk+o2
DkQbV7GkGcozRTPHtCKl8ap68TBL+kkqojW74JpF5KOF4wLDE1pliH20ch+aokuli1g0IAXZ8Nev
L8FoSxBnA9HaXaFTcYPQw/GtQCciznpi3Evu4Bc/Fv1BlsK8KsoXsop4y0S7uBkxGSdpNkr3sDxZ
x9qeoKEJ7MxWF3RET+ApwLEGaXRzD44ksWrch7cNFqWhaZXnxHPtS4P1M9bE8IkeUKnmm8EBgq+t
PLOz+pu49QNQSwMEFAACAAgAJocdSdJJUP4+AQAAegMAAFIAHABodHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRl
cnIudHh0VVQJAAPYy8RX2MvEV3V4CwABBPUBAAAEFAAAAOWS3U7DMAyF7/cUvoNddP1Zl8IkLoAx
gcSkiQE3E5q8xO0i0qRyUqA8PZnEz0Pgq6Mjyz6f5W0u5rNqnmcTkYsXqBmbFVpdO6N2694froZA
HrxuLBpDCoj5IslFVgo4fV3q3+YbZse7J0sfHclA6s7qsMCAYzjdkHRWwUkdhu4EMLgWyErX20BM
ahwdSDeuZ0nXKA+UXjumFSmNfyrJZ6KYFGWWrtkFFweRT5eOWwy3aJUh9unKvWlKj5GOYhlBWrLh
J99EgtGWIBfTbLT9g55O/yF0Wf0X6CLLRZKdJcU5fOMXk2pWwaJvuweyiviRibZ5rGx+VpSiiv9w
11jH2jYQaQI786hb2qMn8BRgP4A0Ou6DPUnso3v5vMG2M3TV1zXxQvvO4HCPAzG8owdUKl4zOEDw
g5UHdlZ/Eo++AFBLAwQUAAIACAArhx1JOi+LA4sAAACbAAAAOQAcAGh0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLXBsYXktc3RkZXJyLnR4dFVUCQAD4cvEV+HLxFd1eAsA
AQT1AQAABBQAAAANyE0KwjAQQOG9p5gLVJJQ+7dTuhFcaXEjLqbJtAbSpExSJJ7evtXHU0JWhWgK
1YKsulPdKXkUbQv9tqx38oZ4YKKX3BNdo8qqLt9wnX1g62fQwScObrALjRgJIiUYM2hnye8ijdt+
z88HLqujyzZNxL2Nq8N8w0wMX4yAxpCBFAAhZq8/HLz9ER/+UEsDBBQAAgAIACyHHUlIYX+kqQAA
AAcDAAA7ABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3Zl
LXN0ZGVyci50eHRVVAkAA+TLxFfky8RXdXgLAAEE9QEAAAQUAAAAzdAxDoIwGAXg3VP8F9C0BUpl
07CYOClxMQ6l/cEmpSUtxNTTywF0lje9vOnLY4TyLRFbtgfKq6KsWL7jpIB6HsYLOo2hCYh3uoRU
guW8zB5w6p0PxvWgvJuCt40ZsJURIeIEbQJlDbqloZLzsh5uVzmMFo9z12GoTRytTGeZMMBLRpBa
o4bJg4SYnHoG78wbw4Z9pYkftKwQgv2VRulqX6PZel8r10D7AFBLAwQUAAIACAAuhx1JqkqBipoA
AADRAQAARgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJj
ZWJ1ZmZlci1tb2RlLXN0ZGVyci50eHRVVAkAA+jLxFfoy8RXdXgLAAEE9QEAAAQUAAAAzc4xDoIw
FMbx3VO8C2DaqqWyaVhMnJS4GIdH+8AmpSUtxNTTywE8AN/0zzf9BOOyYKoQR+CyOpSVUFvJGdTz
MN7IG4pNJHryZaxSYi/L4wsuvQ/R+h508FMMrrEDtZgIEk3QZtDOkl+KNM7Le3rccRgdneeuo1jb
NDrMV8wU4YMJ0BgyMAVASNnrdwzefiluxF/abr00tQbaD1BLAwQUAAIACAAdhx1J5m+2G+wAAABf
AQAALQAcAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVUCQAD
ysvEV8rLxFd1eAsAAQT1AQAABBQAAACFTz1PwzAQ3fsrbuqWOCnQppYiVBUQAwOKylQxuPY1seQv
7DNS/z2OoF25u+E9vfdOd8d2zR/KdHV3t/6E18PhfcCvjIngrMeZPmUbXrQT5mN42zk1oPWEO6Ui
psRB/AJoV5u6Kd2WWPFCjgYmosAZu0m8a5qGWVRasG+t0Fc0RU9kUFXGC1XLUT86YbEvK32OEhOj
ckkd1Hl5tfbbuZZ0CdiLEIyWgrR3rHgWx3+f+aP7iILwOUYf995adMQBnfTZEUZUIBzgLHI4XQgh
CjciGHQjTWB1soLkBBWkyWej4HTTVqDTFW+23f3iB1BLAwQUAAIACAAghx1JTnG+hcIAAACSAQAA
LwAcAGh0dHAvdGVzdHMvbWVkaWEvcmVsb2FkLWFmdGVyLWRpYWxvZy1zdGRlcnIudHh0VVQJAAPM
y8RXzMvEV3V4CwABBPUBAAAEFAAAAKWQTWsCMRCGz+6vmKNeykb8qEEEXQ8Keiw9FA+zyRiDcSLJ
LOK/N5YeCj21hbkMzPs8zLvsHAxnoCZ6XGYGdMtKTV9CNBggiUl0jUk8uw+l1OvoAPM1tZ1baMgk
e8oZHe2ic+ViVUJnDSUYyFbLv4MFkzSRj951CcVHfvdyauLlGui5bZBtoKShQXMiCzUQY1uc0KI5
E9v8HznJW6a05WNceyP6B1tDv+oNvhumuq5/ZWD7VdznXyjkYroXLnchDKoHUEsDBBQAAgAIACGH
HUmvkRBYSAEAAHQCAAAvABwAaHR0cC90ZXN0cy9tZWRpYS90ZXh0LXNlcnZlZC1hcy10ZXh0LXN0
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
IO+MnoSveC0eHm8bCMJMQa1nM6+YU/dNZf4n//pl/1pitIkLW9p6sMVMo8CKRRvhdYp9wcHtZz7y
sss0VJfIXabiocGwoQ4OgRhb04QWw9ZSreOuuq9UhsxWKaj/wbb/TPamoxR+//sHUEsDBAoAAAAA
ABuHHUkAAAAAAAAAAAAAAAAVABwAaHR0cC90ZXN0cy9tZXNzYWdpbmcvVVQJAAPGy8RXX83EV3V4
CwABBPUBAAAEFAAAAFBLAwQUAAIACAAbhx1Jp/t5WoMAAADAAAAAQwAcAGh0dHAvdGVzdHMvbWVz
c2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLWV2ZW50LWRpc3BhdGNoLXN0ZGVyci50eHRVVAkA
A8bLxFfGy8RXdXgLAAEE9QEAAAQUAAAAcyxNVzCyVDA0szIFIhOF1PJiQ0NzvZz85MQchaKS5KLU
gvyiksy89GhDIDCLVbBxSU0qTbezUihOzUvxTS0uTkxPDc8syXBOLElNzy+qtFLQyCvNydHkciTb
5My8zBKQkcFA0zPz8zzz0vKtFCICnBWS8/PyUpNLgGJANWWJOZkpXABQSwMECgAAAAAATIcdSQAA
AAAAAAAAAAAAABAAHABodHRwL3Rlc3RzL21pc2MvVVQJAAMgzMRXX83EV3V4CwABBPUBAAAEFAAA
AFBLAwQUAAIACAAohx1JXoT0aeYAAABiAQAALQAcAGh0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29s
dmVzLXVybHMtc3RkZXJyLnR4dFVUCQAD3MvEV9zLxFd1eAsAAQT1AQAABBQAAAB1jUFLw0AQhe/9
FXOSRKSTiqIMJSDaXBSVRNrzdjNJV5JM2J0I/nsTG1EKMqf33vfmbfL8JSfIjGu4BBUw3h7cB0MY
9p6DDN4yVOLhoNoT4uryZpmMt6LbJEmwdcHiDxfQStubEJbvfb3ArTRDO5oPRg1udgXueP/oFItv
eFL34hkbMSV7nHfRVvjEtbGfY3539Ja276PrqyQGgqBGnYWcq1f16/kH0WklhX8jIuvZKEdWuqCw
e8uICvWuq+Hs4reWedPy5ByxLVuVP4PPUjKcpxMQtCSqhs6qk269F2kgmttxGi++AFBLAwQUAAIA
CAAphx1J9PqpBsMAAAD+AAAAPwAcAGh0dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5n
LXJlYWR5c3RhdGVjaGFuZ2Utc3RkZXJyLnR4dFVUCQAD3cvEV93LxFd1eAsAAQT1AQAABBQAAABN
jk1rwkAURff+irusUEsmaJIOxY2pqyDSj5WIDMnTPprMhJcXxf76jtCCB+7iwoV70sRks6SYpc8w
mV3k1uRPaZqhHLv+jXxD8iFEOxPJbGHmeTHfYyuhJ9ErWh4U7M+u5QbHILd0Ti1MkuChv58NqJ33
QVEHr449Np9VNZ3s7l7zPV4iWJer7aHijpUaLCNY8+mvlzx8r1z9RdHhzFHv8E7672PxKhItLsLK
/oQwxrvbGEdu6REqo6+dEjTghyRMfgFQSwMEFAACAAgAKYcdSYAE7UfCAAAA/gAAAFsAHABodHRw
L3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2Mt
YWZ0ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQJAAPdy8RX3cvEV3V4CwABBPUBAAAEFAAA
AE2Oz2vCQBCF7/4V71ihll2xSboUL6aeQpH+OInIkow6mOyGycTS/vVdoQU/mMPA471vbmw2M8Vs
/gSbucfc2fzBGINy7Po3Cg3JhxBtbSJzhV3kxWKHjcSeRL/R8qDgcPEtNzhEuV7n1cGmirv+Njag
9iFERR2Deg54/ayq6WR7u7rDcwLrcrXZV9yxUoNlAms+/v0lD+eVr0+UHC6c9PbvpP8+Di8iyeJL
WDkcEcc0dw3jwC3dQ2UMtVeCRvyQxMkvUEsDBBQAAgAIAEyHHUkVNTWSegAAALwAAAAqABwAaHR0
cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQJAAMgzMRXIMzEV3V4CwAB
BPUBAAAEFAAAAI2OQQ7DIAwE73mFP0Ag7aEVvyHEVSwZjIyR+vwS5QPVXlY7h9kspREnI6mAqqIR
PsQIp1mL3m+P1xpmtvgOIfhCPXvFLkMzdv/tbG5Ph6PSRM0NpXVuwFQRnoCMBavBTZdJ4l0hwqhp
nxoTYEnHf7oqfeTzupcsMS8/UEsDBAoAAAAAAEGHHUkAAAAAAAAAAAAAAAAUABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9VVAkAAwnMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACGHHUlq6aph
uwAAAJIBAABVABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3Rl
LXZpZGVvLWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4tc3RkZXJyLnR4dFVUCQADzsvEV87LxFd1eAsA
AQT1AQAABBQAAAClkD2LAjEQhmv3V0ypjWwEv4IceGuh4JWHhVjMJrMxGCeSzCL++8sd19lp+cK8
z8O8697BZAlqpqdzXSuge1ZqPg7RYIAkJtEtJvHsjkrVy8UJVhtqe/ehIZN8Uc7oaB+dKxefpXTR
UIqBbLV+HSyYpIncedcnFB/54OXcxOst0G/aIttASUOD5kwWaiDGtjihRXMhtvkdOcl3prTjLm68
Ef3E1jCsBqO3DGz/h/v7C4VcTI/C5T6EUfUDUEsDBBQAAgAIACGHHUn1/rRn2gAAAKwCAABIABwA
aHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWxvY2Fs
aG9zdC1zdGRlcnIudHh0VVQJAAPOy8RXzsvEV3V4CwABBPUBAAAEFAAAAM2RQUsDQQyFz/ZX5KgX
2Slo7SBC3R4UFAQRBekhO5tOh45Jmckq/nuz4s3jInhMyPvy8rIaIsyX4M792cI3c6CP6tziNEvA
DEVDoYMUTRxfnWuWFxu4XFM3xCsPlbi/p1ox0nPSXYtKUcqnh2Mecj6Zrf4hOXHSEflo9CR8y1vx
8PLQQhBmCmo9m3nHnPpJ/vXH/p3EaBPXJtp7MGGmSWDFoq3wNsWh4Oj2Ox95O2QaqxvkPlPx0GLY
UQ8NEGNnO6HDsLdU67SrniqVMbN1Cup/se0/s6O//PsXUEsDBBQAAgAIACKHHUkfpxzaKgEAABUD
AABHABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVv
LXJlZGlyZWN0LXN0ZGVyci50eHRVVAkAA8/LxFfPy8RXdXgLAAEE9QEAAAQUAAAAzZJNa8MwDIbP
66/QcT1sJE3XLGYU2vSwwQalZWxQenAcxTH15GI7+/r1U0pPPQxGL9PNRnpe6ZVmnYZRAelE3OQi
GQF+hDTNr61T0oKPyuPe+WhIb9I0KW63cLfAqtNTAQGpfsIQpMYXE9tSRtTOfwm4pM7a4WD2D8mG
TOyRa6YbRw/UOAGvyxKUI0IV+Y9z3qU19WBz5GfXSVYwgwPK1Wy+hikHNLYL7ZI7ZZ0VWpQB1xgF
bJLPvFFpUxWTPBsnW5hzXztIoJUByNHVN3oHHhvW7CjC+GSc7E9GxaNPj05rzjhoCeBCi/U54Ch9
LB01Rnde9rYcFuHe9hb7172k2qIXUErVYs3TIcmKNaGSasemhPOmeg7o++UsjGJLT9l8CIOL4VkK
vx/YD1BLAwQKAAAAAAA0hx1JAAAAAAAAAAAAAAAAKgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L1VUCQAD88vEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
IIcdSZsF0qLXAAAA+AEAAEsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA8zLxFfMy8RXdXgLAAEE
9QEAAAQUAAAApZBBSwMxEIXP7q+YY3uRTaUWgwh1e1BoQRBREA+zyTQNjTMlmVX892bFmzf3+OC9
7/HeegiwuAJzaZcr27ZAn8WY1XkShwmyukwnyRo5vBpjLto3uN5QP4QbC4V0R6VgoK2EUB23NXS0
UIOJfLP+P1gxaye8j2HIqFH4Oeqhk/dTolHdIftE2UKH7kAeKpuxr53QozsS+zKlnPSpUL7nvWyi
U/uHbWHWnM0nNbD/Pe5nFyoFyV+Vy0NKU8iRo47Ix0qvP40bLLw8dOCEmdz4XfV8YIq++QZQSwME
FAACAAgAIIcdSQ0v69HkAAAAQwIAAEwAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQJAAPMy8RXzMvE
V3V4CwABBPUBAAAEFAAAAKXQwUoEMQwG4LPzFDnqZdgqulhEWGcPCgqCiIJ4yLTZbtmaLm1G8e1N
1ZsnmWNL86X/v5oCHJ+DObOnS7tYAH1UY5Z9yg4TFHGF9rlI5PBijDlZvMLFDW/ypYWUQ9BrqIJF
at/33erf1JrGKahVSe6oVgx0+6Ne6dDOgg4m8nPg9rkh8yaGqaDEzE9RtkN+2ydqp2tkn6hYGNBt
yYPajKPuhBHdjtjXeakeK5XW1zo6sX9sC4fdwdGsDex/i/vOhUIhl091eUppjhw5SiMfVNeeWgYL
z/cDuMxMrnWnb94xRd99AVBLAwQUAAIACAAhhx1JxAW9wqcAAACKAQAAWAAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Jsb2ItdXJsLWRvZXMtbm90LW1hdGNoLXNv
dXJjZS1zZWxmLXN0ZGVyci50eHRVVAkAA83LxFfNy8RXdXgLAAEE9QEAAAQUAAAA3Y+xDoIwFEV3
v6KjDlCoAkLioEQTByMJIzHkWV6wWil5rSb8vRgH/Qa3c6dzbhXGWZRkQeAnaXpiyuEd7NDJukRX
kOmR3MCsajvQGhuGRCsvFMkyYtPbTrUbsHg8X1G6LZGhet89QasGHDYzNlW/CxzjpXmQxBzkBXlu
CA/YKPiSF0ax8MUi4KPaGTf0aHmhYUDio+xD9frd50umVYdMiHQ+qf7hxAtQSwMECgAAAAAAJYcd
SQAAAAAAAAAAAAAAAEQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL1VUCQAD1cvEV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAIocdSSoeNejPAAAAZgIAAGcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL2Jhc2ljLXVwZ3JhZGUtY29y
cy5odHRwcy1zdGRlcnIudHh0VVQJAAPPy8RXz8vEV3V4CwABBPUBAAAEFAAAAM3OMUsEMRQE4P5+
xZTayCbL3p5BBLlrrhACCgpikcu+zQVzyfJeVvHfu3aC1VXaDsM3c5oo6MmxEMOSWC6eRB7FujcD
70HMhREz7H4H1WjIscxpwIGgWkRBgzEmQhlHoYq2X69O55HqB9n9FruN3pxL/tHLuzlAX0OtTdeb
pgV9iFL9VSreJXD1TFPhGnN4UUrp5hU3OzrM4dZAKA/3y7wL9BTrcesqhcKfBhd5TunyX8oxx/pN
Pix6LHmfx2LwbLfwJWfydcmWzrtLcVh9AVBLAwQUAAIACAAlhx1J67hKIu8AAAAmAwAAeQAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUt
cmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVy
ci50eHRVVAkAA9XLxFfVy8RXdXgLAAEE9QEAAAQUAAAAzVE9T8MwEN35FTfCQOKkIWm9VSmIgQFF
ZaoYjHNtLWI7nG0Gfj3XUiGGAhJDhbzcx7v3nvxWRS2vGilmWSnEI9wul/cdviQMEdZm86VtCVXE
ayJPrbcWXZSATvvkIhL2oBzgbikhOULtN8688Xgb4wiEYfQuIFRCnK1+VmT8oV2YvkON5hW7w32r
huFJ6WfJjPvFEX4439uAy6Ks6+YC1lzvQDLPi7LJBL9CTqtqkvOVT6Qx5JHVMjtWv3njdpHseGOc
Gh66u7ljg9ZHnPc9kwUJ6qOATyU+YywkGv5kYjo5dSTHFP9LJN/8xgkieQdQSwMECgAAAAAAI4cd
SQAAAAAAAAAAAAAAAD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91c2VyQWdlbnRTaGFkb3dET00vVVQJAAPSy8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CAAihx1J8yBZbeUAAABDAgAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0VVQJAAPPy8RX
z8vEV3V4CwABBPUBAAAEFAAAAKXQwUoDMRAG4LP7FHNsL0tTqdUgQrs9tKAgiCiIh9lkmobGSUlm
Fd/eRL15kj0mZL7J/68GB/MrUBd6sdSzc6CPrNSyDdFggCQm0Skm8exelFLzy1e43vE+3mgI0bly
DVkwSW7btln9m9pQP7hiZZI7yhkd3f6o6zJ01FAGA9kxcP1cF3nv3ZBQfOQnL4cuvp0C1dMW2QZK
Gjo0B7IwA2Lsy07o0RyJbR6X6jFTqn1tvBH9x9Ywac6mozaw/S3uOxcKuZg+i8tDCGNkz14q+VD0
0lPNoOH5vgMTmcnU7sqbdwzeNl9QSwMEFAACAAgAI4cdSUE0VI27AAAAkgEAAFMAHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxs
b3ctdmlkZW8tc3RkZXJyLnR4dFVUCQAD0svEV9LLxFd1eAsAAQT1AQAABBQAAAClkDGLAjEQhevb
XzGlNocR3L0Lx4GuhYKWYiEWs8kYg3EiySzivzeK3XVn+WDe9zFv2jsYf4Oq9aTRoxrompVqPkM0
GCCJSXSJSTy7nVJq/LWHnzl1vfvVkEnWlDM6WkXnysWslE4aSjGQrab/BwsmaSMfvOsTio+89XJs
4/kS6JEWyDZQ0tCiOZKFERBjV5zQoTkR2/yOnGSTKS35EOfeiP7D1jCoPoZvGdi+hnv+hUIuplvh
ch/CsLoDUEsDBBQAAgAIACOHHUm/MnT1hAAAAMAAAACCABwAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2Jsb2NrLWxvYWRpbmctdXNl
ci1hZ2VudC1pbWFnZS1mcm9tLW5vbi11c2VyLWFnZW50LWNvbnRlbnQtc3RkZXJyLnR4dFVUCQAD
0svEV9LLxFd1eAsAAQT1AQAABBQAAACdzD0KwkAQQOE+p5hSG3ECJrqIEGJjIQgWCmKxbsZ1YJmR
/VG8vfEKto/H1xUP9QqwMYvWzBugd0JsZ0GdDRCzi/TUmFn8BRHr5RXWW7oVvzGQSIY9pWQ9nTg/
epvJa/wYmEgJYVp1f8ssnH/kcdRZZSd3NXA+9OBUhFwe2/i8bOCh+gJQSwMEFAACAAgAMocdSf1g
Ee3eAAAAUgIAAEsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92
aWRlby1yZWRpcmVjdC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA+/LxFfvy8RXdXgLAAEE9QEAAAQU
AAAApZFBSwNBDIXP9lfk2F6k06rFQYS6PSgoCCIK4iE7m06HjkmZySr+e7PiTfDgHhPyvpe8rPsI
i3NwZ/505ZcnQB/VudVxloAZioZCBymaOL4455bzV7jYUNvHSw+VuLujWjHSU9Jdg0pRyqeHKfc5
zybrf5MTJx2QD0ZPwje8FQ/P9w0EYaag1rOZd8ypG+FSSX/Wv5UYbeLKRHsPJsw0CqxYtBHeptgX
HLb9zkfeDpmG6hq5y1Q8NBh21MEciLE1T2gx7C3VOu6qx0plyGyTgvpfbPvP5Gg2yuHvv38BUEsD
BBQAAgAIADGHHUnCHSUJuwAAAJIBAABMABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZDItc3RkZXJyLnR4dFVUCQAD7svEV+7L
xFd1eAsAAQT1AQAABBQAAAClkD2LQjEQRet9v2JKbcT4yYZlQZ+FgpZisWwxL5kXg3EiyTzEf2+U
7bbT8sLcc5i76ByMPkHN9HSuxxOga1ZqPgjRYIAkJtElJvHsfpRS4+EvfK2o6dy3hkyyo5zR0TY6
Vy6WpXTSUIqBbLV4HSyYpI7cetclFB/54OVYx/Ml0COtkW2gpKFGcyQLQyDGpjihQXMitvkdOck+
U9pwG1feiP7H1tCrPvpvGdj+Dff8C4VcTLfC5S6EfnUHUEsDBBQAAgAIADKHHUmbSKf53gAAAFIC
AABmABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0
aC1odHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQJAAPv
y8RX78vEV3V4CwABBPUBAAAEFAAAAKWRQUsDQQyFz/ZX5NhepNNSi4MIdXtQUBBEFMRDdjadDh2T
MpNV/PdmxZvgwT0m5H0vedn0ERbn4M78au2XK6CP6tz6NEvADEVDoaMUTRxfnHPL+StcbKnt46WH
StzdUa0Y6SnpvkGlKOXTw5T7nGeTzb/JiZMOyAejJ+Eb3omH5/sGgjBTUOvZzDvm1I1wqaQ/699K
jDZxZaKDBxNmGgVWLNoI71LsCw7bfucjb8dMQ3WN3GUqHhoMe+pgDsTYmie0GA6Wah131WOlMmS2
TUH9L7b9Z3IyG+Xw99+/AFBLAwQUAAIACAAyhx1JYCTMpIQAAADAAAAAWQAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1i
bG9ja3MtZXZhbC1zdGRlcnIudHh0VVQJAAPvy8RX78vEV3V4CwABBPUBAAAEFAAAAJ3MsQrCMBCA
4b1PcaMuYiy1GEQodXEQBAcFcYjpGQ/CnSQXxbe3voLrz8/XlQCLFZilbVpbN4DvbEw7i+JdhKQ+
4VOSEoeLMaaeX2G9xVsJGwsZedhjzi7gifTRO8Ug6WNhwiXGadX9LROT/sjjqJPwju9i4XzowQsz
eh3b+LxcpKH6AlBLAwQUAAIACAAzhx1JY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA/LLxFfy
y8RXdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1y
tsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUw
ziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACAA0hx1JY6qsbIIAAACo
AAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFm
ZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAkAA/PLxFfzy8RXdXgLAAEE9QEAAAQU
AAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5S
CMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeS
yp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACAAihx1JPMCeiIQAAAAaAQAANQAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29ycy1wb3N0LXJlZGlyZWN0LTMwMS1zdGRlcnIudHh0VVQJAAPPy8RXz8vE
V3V4CwABBPUBAAAEFAAAAM3MsQrCMBCA4b1PcaMu0ihaG4pQ6uIgCA4K4hDTMwbCnSQXxbc3voXr
z8/XZwfzFtRKLxtdLwDfSalmFtiaAFFsxCdH8eQuStXt+grdFm/ZbTQkpHGPKRmHJy+PwQg6jh8N
E8ohTKv+D2VPXn7kseieaUd31nA+DGCZCK2UVp6XCX6svlBLAwQUAAIACAAqhx1Jht9nf7YAAADc
AQAAOgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdlYnNxbC1hbGxvd2VkLXN0
ZGVyci50eHRVVAkAA9/LxFffy8RXdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afIJC2oJziIt4nW
RURo/TPftakcXJOS3im+va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgPJgae3k0ZYwPJ
HIgDGAIUYUlH6sI+NtiprQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeGYVa2bbJYrlLQ
YJk9fEpaf4XWLUrN0hxbpDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQSwMEFAACAAgA
KocdSSjZeTawAAAA7gAAADIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13ZWJz
cWwtc3RkZXJyLnR4dFVUCQAD38vEV9/LxFd1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt
0CHaW5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC
6CBaA7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812
F4MGy+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQUAAIACAAt
hx1JiqdpRrwAAACSAQAAPQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNl
LWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAkAA+bLxFfmy8RXdXgLAAEE9QEAAAQUAAAApZBBawIx
EIXP3V8xx3oRI3TXDVKw66FCPRYP0sNsMsZgOpFkFum/NxVv3tzjg3nfx7zV4GDegqr1W6PnNdAl
K9VMQzQYIIlJdI5JPLu9UrN28QPLNfWDe9eQSbaUMzr6is6Vi49SOmkoxUC2Wj0PFkzSRT54NyQU
H3nn5djF33Og//SJbAMlDR2aI1mYATH2xQk9mhOxzWPkJN+Z0oYPce2N6Ae2htfqZTLKwPY+3O0v
FHIx/RUuDyFMqitQSwMEFAACAAgALocdSY4V4EaEAAAAwAAAADoAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L2xvY2FsLXZpZGVvLXNyYy1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQJAAPny8RX58vEV3V4
CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMuYgq2NohQ6uIgCA4K4hDTawyEO0kuim9vfAXXn5+v
zw7qDlSjV62uG8B3UqpdBLYmQBQb8clRPLmrUstufYPNDu/ZbTUkpPGAKRmHZy+PwQg6jh8NM8oh
zKv+b9mTlx95Krpn2tPEGi7HASwToZXSyvMywY/VF1BLAwQKAAAAAAAmhx1JAAAAAAAAAAAAAAAA
IQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUCQAD2MvEV1/NxFd1eAsAAQT1
AQAABBQAAABQSwMEFAACAAgAJocdSUz1knrvAAAAiQQAAE4AHABodHRwL3Rlc3RzL3NlY3VyaXR5
L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVyci50
eHRVVAkAA9jLxFfYy8RXdXgLAAEE9QEAAAQUAAAA7ZFBSwMxEIXP7q+YY3tZTIstBhHq9qCgIIgo
SA+zyTQNjZOSzCr+exP15kn2pHicYeabee+tBgezU1ALfbLUagb0mpVatiEaDJDEJDrEJJ7dk1Jq
vtjA2RVv47mGEJ0rbciCSXLbts3qx6g19YMrrExyQzmjo+tP6kVZ2msoi4HsGHB9rou89W5IKD7y
g5ddF58PgWp1iWwDJQ0dmh1ZOAZi7MtN6NHsiW0ep+o+U6p+rb0R/Y2tYdIcTUddYPtl3IcuFHIx
vRUuDyFM/xP5U4n8PrJnLxV5V+gl2+q7hsfbDkxkJlPzLjMvGLxt3gFQSwMEFAACAAgAJocdSbJp
AOiDAAAAwAAAAEIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1j
c3MtaW4taWZyYW1lLXN0ZGVyci50eHRVVAkAA9jLxFfYy8RXdXgLAAEE9QEAAAQUAAAAncyxCsIw
EIDhvU9xoy7CVWwxiFDq4iAIDgriENNrPAgXSS6Kb299Bdefn68rHuo1YGNWrcEa6J0R20WIzgZI
6hI9Y1IWf0XEZXODzY7uxW8NZJLhQDlbT2fWR2+VfEwfAzMpIcyr7m+ZhfVHniado+xljAYuxx5c
FCGnU5uelw08VF9QSwMEFAACAAgANocdSSjZeTawAAAA7gAAAD8AHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLXN0ZGVyci50eHRVVAkAA/jLxFf4
y8RXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO
3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLm
qkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht
84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgAN4cdSSjZeTawAAAA7gAAAEMAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC1zdGRl
cnIudHh0VVQJAAP5y8RX+cvEV3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0i
BC097+oYwjoj427Rv0+jTt3m8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdD
gCIs8UwV7EKHgzoab1RS5qpEe269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA7
0vontO5RGpYu7ZH2VBcobfOKJrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAIADiHHUl9QoOV
7wAAAJgEAAA5ABwAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGlu
Zy1zdGRlcnIudHh0VVQJAAP7y8RX+8vEV3V4CwABBPUBAAAEFAAAANWST0sDMRDFz/ZTzFEv0og2
NpRC3R4UFAQRheJhNpmmoXFSklnFb29WvHnSxX/HgZnfm3nzFp2HoymoiTnR5ngC9FyU0ocxWYyQ
xWbapSyB/Uqp8fT0AWZLajs/N1BIrqgU9HSZvK8dZ3Voa6AORnKjxdfBglmaxOvgu4wSEt8F2TTp
cRepr86RXaRsoEG7IQdjIMa2akKLdkvsyhBxkttC+YLXaRmsmA9sA/ujvYNBCuzejXu7C4V8yi+V
y12MP0fWf4IcOEiPvKn0+tvedwP31w3YxEy2/3ftecIY3KD9P5FV/ZtZ1d+eVf0vEvUKUEsDBBQA
AgAIADiHHUmXaaLBFAEAAOcBAAA/ABwAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1wb3N0ZXIt
Y3Jvc3Mtb3JpZ2luLWNyYXNoMi1zdGRlcnIudHh0VVQJAAP7y8RX+8vEV3V4CwABBPUBAAAEFAAA
AJ1OTU/CQBC98yvmCAfbLlQLG2PSQAwmmpCK0YRwWLbTsnGZrfuB4d+7pOjVaOby3rw3b14ZWhjP
gN3w64LnBeCnY6xItJFCg/XSYmesV9RuGMtm0y3cLnAX2jsODql+QudEi6/K7+fCY2vsicOQgtaj
QfnvZEXKnyOfY7oy9ECN4fC2moM0RCh93EXPUWhVDzbf+UmRT7awXK9XFX4EdB4a1S697y50oeoK
JaojVug6Qw7nQuudkO8cbC/UsI/+yHod8iyHIVprLFyx8WwyHUET8dnE05SNiySLw/g0y7LUoQxW
+VNKhtAFuU8OXf5bvUgX4dDdKxL6pXosKXY8GI9lXccWjoPoAfw8i2fRC8HqP/X4AlBLAwQUAAIA
CABBhx1JYEtmEJEAAAD7AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wt
ZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUCQADCczEVwnMxFd1eAsAAQT1AQAA
BBQAAADtjjEOgzAMRXdO4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJY06AzJk9
LJEQVtXire36S+vOdf7qnLOCoXLUw+4iZhjvt3Ewu5CZc6gbJjVf4MHxGVO7bwQUE0IPSPghQPQg
lBVRm/PpX8hyuj3kRAd0rYMFJ62MAhMjSC0ls+LchH/oj0PfUEsDBAoAAAAAACeHHUkAAAAAAAAA
AAAAAAATABwAaHR0cC90ZXN0cy9zdG9yYWdlL1VUCQAD2svEV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAJ4cdSSjZeTawAAAA7gAAAEUAHABodHRwL3Rlc3RzL3N0b3JhZ2UvY2FsbGJhY2tz
LWFyZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LXN0ZGVyci50eHRVVAkAA9rLxFfay8RXdXgL
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
HrDMPx9u00vr96a3aXk0p2ecza50NX+Tp+lbzZD2U5dWwMytOdygZDGeesP3kxmVfWKW8fkJC19Q
SqyZtVeHtxDMAhUXgr/lwXijbMW0xAu6O6KrZHd0Vdttqq1Bqg3dgSDVAediEfqRRdM21W5T7TbV
blPtNtVuU+021f7OVNvyXaYGi1VORNkiyF7BEBQKh0lavFj0Oczv+Db7Ui1Ll2g4wpUzRaXxr/sB
Gs+VN6O5E5+L6H8MGYxIFvXGGbnl+7Jmblbjh/45/cp4wtq7p2FExRvdL9r8Am2wmoNU/Pqh8XPU
QYTnI16H04fDNzHv3VHnbeS+e1f+HmyzxB+6yQu8F4jMmyBez3zeRNVLVAn/cVRJeSuqpL4hVSI7
o0ra7qiSvluqpLdUqaVKLVVqqVJLlVqq1FKlliq1VKmlSi1VaqlSS5XqVMloqVJLlVqq1FKlliq1
VKmlSi1VaqlSS5VaqtRSpZYq1amS2VKlliq1VKmlSi1VaqlSS5VaqtRSpZYqtVSppUotVapTJaul
Si1VaqlSS5VaqtRSpZYqtVSppUotVWqpUkuVWqpUp0pYbrlSy5VartRypZYrtVyp5UotV2q5UsuV
Wq7UcqWWKz3hSuLWmOHH9s9Nt1yp5UotV2q5UsuVWq60U64ke6YbsOKPQkOkte11f3B6WVo8OKE5
LbIcS25Kh2RPdw2yVmGRCMzvulzmO6re+JYhmZmuVfSgB0JzVlqyuH+nEF7e07lydd7zlKfxH5vm
UMzvpjyvM2JObF7Z+rX0hZusbENfXofrGZLyOoEtFWmpyItURFm5Pao/HHGGm+9P0/AeXO4VVEQN
iusgI+bl6+6M+p6OVHZ3g5C64xuE8Oo1XB444IT5Id2nnJSFya5J3ertVOdc1YbrP5npGcQAr4f2
l/Ei8ApqseYurpdEKQZDw/B2xCZ0egf1udhrFlF+G7iYlXqNrQiBY0h83ORhnanEtAKI1kh+KL/q
ARSJKGyZ2FpzF9dLEFmgoSC8LUbmvLjzlWBDJC27cUR9d45o7NoRyRNHpDM/TPZ7/y52htvL4P5a
l8EVo5MXE2S/x7+Vs6UqVjdVzVco+shiloZeKXtcXjUrYlglNFr1e+C2V+K6Bur3rlYlLx4U4mXr
n3EtHNZecyGyRXgE5Nf7/S7qF2nwK2Ohq/p+ce+08+33xZ3NVYz6fwBG8eeZmMvnjo2A19FoBGki
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
2wSqDeFQgerA4KKJ+hNNxpJqS6otqbak2pJqS6otqfbzqDZkEJ3q0WyV41m2SrJX0AVVg4Msr/bu
fIzLO1ZmnzdL8zkahnDhniK2hW/SYD3wtfVo7vjrKvu/BQbDyaJlCN+AwaZmOuubCePwnHymjLAe
35M4IXzT9EafN8gGVxwkDts3jR+TDjw9H7FzmHw4fBH3Xh11Xsbuq4oCmYLEH8JkRMEGIfMiiFcr
nxdpapNUQn+eVMIvJZX0F5RKxs6kkrk7qWTtVipZUipJqSSlkpRKUipJqSSlkpRKUipJqSSlkpRK
Uiq1pZItpZKUSlIqSakkpZKUSlIqSakkpZKUSlIqSakkpVJbKjlSKkmpJKWSlEpSKkmpJKWSlEpS
KkmpJKWSlEpSKrWlkiulkpRKUipJqSSlkpRKUipJqSSlkpRKUipJqSSlUlsqIU1qJamVpFaSWklq
JamVpFaSWklqJamVpFaSWklqpSWtxJ8aM/hR/ty01EpSK0mtJLWS1EpSK+3056ZtpPkRrX4UGjJt
t7vqB6fnR6sPTkhJKpbjaqK/Qm1r1LeNlQ1WRGD6OMk539EtYTFkWo7vVhEMwGhJa09mz9+pjNeP
wvxeDe5IXq8Qj0seU1jyABTn2ZLnaU5Mhc0Tr36yfAGX8Tby5Wm4HhEpTzMopYiUIhulCGa3bepH
bquw4pJkCB1IbqlUIVKFPKpCYNT8HJdn9JYEDyuevIrM0HKRJlWIVCFShbyQClE787lzcNe19b2W
LtlmjmrGP0eXqJ0ZfhYPY68lVLaIh4H05wiVRQQIAQRLEIJtmXr4eJcMsnxIWVYsWO5Z1zdhNoFU
yYEZaBEYxjBWbFFgJrHCLcbKR1i4e6yHa4yb8dl2K266tdcSR9vAQ0akLlGCcVmz6EGbsDaHVkgj
AhnJC2lCS7rmAjbSKtfPaVEASfqFPfF77cmzvqrPHsRJSXMa8ntzMEuyST2WnmSt00wsay6q70zU
YW828xFsVUl4ykVeGsSrhR7XXVftNJtkvW7CbHFFex37KHqWB2z8rQCjA5hFhbgFGBSAQpzy6W5N
pW/qB4IvaZlqGTfUzsKJB8F43LXxXkuhbdO6r5tbt96DWeqT4HND9aBVSCyYiuJPPXqxOoW45Pv7
1ymM/+o6hfnn1Smsl6pT2C9Yp3B2Vqdwd1anwNqO6xSLT7lmcTtO4xHnigc5TUOa7xc0v/+2n3X9
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
hAQ8XzW1N+hfSVMuOM7oJD/QKgFj81olx5BHNKV/Bz+hNRrvAweZXe8nmZjHNIpJ7qCLBj3ZQI7J
1pmo50gY8VGyjupkLUsLxhdZewe98kZbv59/3PAbejDqOL1D/1sIzarMdhBqMFCphBfbVBZ1m0Dx
vJWU22C/jbCiW/VMFI4ss5opvc33im7XY9jQzOB4zGnGQACdozGgtWMIGMdjesMXBAZRX3azPO6z
9hxWQOVNbDpSU71Bzv1JccwRWR/Zd2WxHpcHVRIsP/xvuazToK+A2momAMAMy1nzWNo64UQ+O0hy
/ZNcOStiMKDkogEaq0uO1ljOaFz1M8l3ICgufc7y3pHnUu5kH7vfVB7T8vIiT3G8FvxLBVJdeL7J
jwtaNzljuzqwE87CiBI8e5t8XUyT+98DgSmLf5uk0m/6CKORFQTtbrnwljCK/We5DeNGzB9XazVq
wdi2W7X1PVA6klFaWKQSOI83jFPc60w9I6WZMb1fbjhMZFsWSw+HGjVTImBE09xJdqvJhPgaTe8R
c47RqRmxHmKry1gdcU2XlNGfcspbm9bgashBF3FlFyaQN7j5N/PJq1izNMqFnubQWX9HniDa55cT
L0sSxoWk1qtD28EGgAfU+RldLn/I4jgvorzndzOqkAeVgc6I6Sv/A1BLAwQKAAAAAABqhx1JAAAA
AAAAAAAAAAAAJgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvVVQJAANX
zMRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABthx1JAAAAAAAAAAAAAAAAKgAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL1VUCQADXszEV1/NxFd1eAsAAQT1
AQAABBQAAABQSwMECgAAAAAALYgdSQAAAAAAAAAAAAAAADIAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L1VUCQAD1czEV1/NxFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAdYgdSS1mSJuqQgAADkoBAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1jcmFzaC1sb2cudHh0VVQJ
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
DK6lQnQkQFm4orY0/pZ6GXXST17axu5SQo1FTrsWDF5VcjrdEH7FF5v6efpBo7fu6Z2XTnCHjtuA
wFg65HjpkEu2NCx3njrLg3X03KYezlvJNb2vupTLCNsqot78/HEqnu6SXzbTiPBButKjKySCRjCF
4HaCIsBok2S6OPmFuc/kvjC6kNq1pF766KcJrVw/vsGVwzRYqf661ypwCd8h8KTKyybU0/KOokPQ
4QF7PDGeFAMIx7dwGkcY6kKoVe+AbJ2b3b8X2L+8RXtmi0/0YEKF5BMcS+nnAO1w0lEC0m+0Cdar
zOpa/Nsc9dL2mM7z1WqZt/t6N/1AQe6HcYZL4rWzR+zS9iJYXgqbkZdilUkCFMhHEpWLoL7RcnlR
cmu3womNfx2tVFhtGvYzSNtoShruC/CWr8BbzsDbUUVlLp3ohdyYWNqqgVaoyypT4bIz7N2CQzzT
khR/vKola4mr96+tTJnjuqgZs4wug9k4hLzyEyCUWO9wObXKDjzHy3fee768qPm2ei203jSEPups
fr2jT39snz+NVQWx3FDYytyoIeZEb8rR5GRL0SkguDADiDW9fsm5MjQGm4P75pmf+SbeHEt4fF33
D9VbYcbWVoxLQDP5DxyhklNDcDlHB0rKtOGE6fKDKDmVN1VwXTJuieelPp3tn3ZK81gtqm2JWr2Z
u/99c9jaFFODU4LmRFzxLjgTMIjy5mQA5lVOUWYYPXox95o1TGa0x3Yu9Dg08im70udUzaBzzeyt
uio9rMTDl3hp4FoYXIs1wOT8f3m7kuY4biV956+Y41ygwL4csdoKy2/kR4fn3SZ6o8UQTWooSmP5
179MVHd1oQq9eMywL6RYZVSiCkh8uX2pXLbacWmV+4vR1ekdN628S2AnLJvT9yD++nJfjXrUifs0
F5dpdhFUMxyuChOmGJiQsMid5lwnSdmVZ2qtH3l7prbk7U0rnu7J7GYL9PdPmzf7XfPj6hH0w2+7
xybo553yTEVAKIFj/gGG/0qxhCWTskigdhi/kLI8G/1UxvLsttlsVp3ZSHGA1r9/fniZLGIx5Goy
B+e/Yworfh1a7444ozQA6hxA37OSS5kVIUzGaQVYpj/hH0cE/d3bMlPXRnkFpjYlIWKSK0bUPaai
JRq0MyGIrMsrqevx4a3IS84e+OPGdQz2X+63uyf86rbGqdVgjtgUqMkwAQAIyOOG5WbIDCM04H2b
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
qZKkSpIqSaokqZKkSpIqSaokqZKkSqtUyZBUSVIlSZUkVZJUSVIlSZUkVZJUSVIlSZUkVZJUaZUq
mZIqSaokqZKkSpIqSaokqZKkSpIqSaokqZKkSpIqrVIlS1IlSZUkVZJUSVIlSZUkVZJUSVIlSZUk
VZJUSVKlVaqEkeRKkitJriS5kuRKkitJriS5kuRKkitJriS5kuRKj7hSfmpM95P8c9OSK0muJLmS
5EqSK0mutFWupGHshbz4o9AQaW173R+cXrQWF8Rh9kWWY6GqdEhDoWewtQqLRGB2kPYi36F6ZTKk
GaZnFR70QWjGp5bMz98phE/Phfyg+jduMl0hnqY8lf/YtIBivpryvMyIGbF54dMvpi9gMnkOfXkZ
ridIyssESioiqchPqQhZOj3KB78NeRC5B6l/w4PJgAdhNOBRvG1Osny40plQueH0Sm76BjOg0+D5
i9E8buSZ8ZqjpH4mihhc7UbXPT50xzdwvxB7xQcQ8O54Pqj0NQdJPS3U831m5kJnPuuCz04u+rMT
NjFbd6LUz5DyUFPD6LqQIo72zQ81M/LQu51xqW/vQCZjywcyYfqSo0gtJo4iFQdr/ZXfXwSgdSeX
PQthEBQnvjr3f81PSy1jZDuAUdsBjPoOYBR/YKbbP5VbNnLLRm7ZyC0buWUjt2zklo3cspFbNnLL
Rm7ZyC2bX7llY0oqIqmIpCKSikgqIqmIpCKSikgqIqmIpCKSivx6KmJJKiKpiKQikopIKiKpiKQi
kopIKiKpiKQikor8cipCkKQikopIKiKpiKQikopIKiKpiKQikopIKiKpyK+nIlhSEUlFJBWRVERS
EUlFJBWRVERSEUlFJBWRVOTXUxEiqYikIpKKSCoiqYikIpKKSCoiqYikIpKKSCry66kIlVREUhFJ
RSQVkVREUhFJRSQVkVREUhFJRSQV+fVUZAf+cDPZgT/cTHbgDzcTYwcwmjuA0fr7Y6RoBzDiHcBI
dgDjDhwQQHcgztAdiDN0B+IM3YE4Q3cgztAdiDNsB+IM24E4w3YgzjC6dEBSq9sTRwBnB+MkugN6
+gL8NBT4Uz7gfvZC1BtJF9neiT50yyf6sB0IhkyDzv7GPcGkbbUhKkviKKdeBq1DWaGSFaonK1TT
gbOuG4X/MAmR7yFZoZIVKlmheqMKlVpbzJ2DG9ug+ys1q+fMUZf999Ss1Nocv/AH218pYj3HH6b1
miLWMgKMAYJeGYKhBU93STdOelxExVTEnk19E8QTCJX7xZGMy8AIgbFiVAXm+W7wjLHyDRbulujh
Kcaf4zOMFb9RfX+lcPZzeNi3cKg+SgnG2bTC0l0tZpSHVsBDFyKSE0CimvEND4iRVph+xtPUveb/
nPDJ5pvnfTW9G5KrjCc8+BZlN32YJfFkOpZeJK1WDiwbHioyif2p28tqioNARRCe5SJvDWJvqcep
Zam1skrR6xrMFqtyr+ssfJUFYvytAUMBzHL18BlgENaseUptiyLoxUjk1NO63npQe3ubC7fl5GFD
8U2DybOSvB/447Ft4v2VAuCzDECvqvi+kemiHPxWome1YrW2KPa6A8cTixpjwomkqhOR+7Ma8hsZ
s6HA/Ebanq4+q7WFN23MkLFftZb7qno0e6t6tPaG9Wh9a/VoY3v1aHO7WyNI9RM3vYF77iEQqt9N
ffpSrNrL3IyrNZ3VvSjbtxVVTdwftjp3J/I8N/A4D6HBW2qYfaDB3/REsPqExUILCSVBVGrB2Ncw
0nNZ6aYGbzxrEEZrlImXv/In1jaAEjUx1wAWKVhiLR4BL5hzSzB6/ISZN+B1TwhLMCm3cMKx4Rr5
I7RsCfVQoBPfFA1MNADWcMWPWFvTQISSaFyWhQIY4yFkcGoSDlYAY0QQDGk/Iev6BGQpp/F1BKuS
2rr8YudjiRClkyRxorbigBeXFo/qSh/Cjno+GXo8KRoxUxSlGY3c5EE9GUIAT8W4WfkgtT61pfxR
37cnw/EVHwU86SccRt7Hjx/31SPSZi3ouVZdazRpnRLarZstrNWbHbNFO12CNdQ4Vg+/xoPJkKeH
Xy9Ov5x1Dt8dLkuboUA/MPItyxBerasrF8PQUN/DRJqu0H2eZr2baDidXTUEaLqoZXW7tAVA9Gad
NphRNxtaq94yWo12s6kxjM11aDZJXcHlPsbleto6XJPxOE6yMjTaRaiBW+26Dst7nTbhRxN1jLpm
NNo6bVCCO91nQCsLXkIHM+cROk58ItBtXoNrOqLv4SH45wAfsPcAtIU7rNUlpG5qHfAh0Trwrd2p
E6o1kd5oNbFF1wFdlnwQJu6Qi93Zw68c1gYINoeNlXtK+CGXCh/1uthIQ2LsLWcUv0fZOty4QwzD
IKzeshA4uNtl9QbTrLqlWYzobYNqJlmHu5C4Hm/RVsZJgtB/hFOnlvcY5yYHG6zR7XTNVt3sdI06
NbFRt1oaq+OG3jSZoTPSNjcA3ezZaWMZquea5BFUj5toZUgURp7ya9d/WO/YttHokA74tN2uU03D
9SYzWL3bRqShW80u7Tzh2ELuU+4t7ighJ7qLglXkcBHjFSe7kyCKDxri+2/txm+N08vB5PpkpNaI
QQ6weUBBwuwrGNJmqNVFJoYh0YK1qolMMEQsWA2TNTXDwpbWBEN6efA+PI28BBbKw86PjI+miKea
Dm75j+wQSDi0ZOlhoXXRPAdy4E1GwYAv7jxz/Yve4/vKthsEm49sN3SNrNjeOGtfuQGPR9/FxP90
2k6iO56oNXxAyQHR4Hn4dkDEyoMw0RgsNYwYXehESuqw5Jj1/yfmWpYbOZbrnl+hpSMURdX7sazn
3HFI1nhGku/OATQaFC0OOSZIWeOv96kG0exuFEDE9YS9kTjoZlVmVT7OyUzQchF1SIpync+r3dzq
lHLNl6caWr4+cvX64WZhl5++fv7y9PD5Y18j3l61+kusqsQcy8IpormVRERVSEiek4AIxXDHNCh2
rNKHfWOuHExx98PLFruJeR4/PQgweWnxZK7dlja028Lr+u++7+5eukO7QwIV8DSjA4JVtB5XxOrF
QKmSJSsqUpol8sLr7832klIe74UPtwBxjb2U0io7KghjhRMpDSUuiICtOXWOV8QWTu3lOnpsl67j
drg1ZKMPqXx8/+HaH5KesfC6a4Vtc0pIdbaQxAFXhY6ROF4EkULpHKKVkarj25pcRI1s7wBmfr/t
du1I8rHfPTw/dgg/R5JMlVhLsz1SYo1TqQf23fP9w+Nn++/rm8fVQQl+LQcVnLNU4PBI8alUFQJx
BnpwJWgIhgZv/VkVfv7S38cf28LvX7+F8AMoK5BiBX86EmeiiehesOdUE3y4Fgsn+pf+qW43evPU
iwKLXnshiXIZ0d0gY4YYAskmWS+pNcGWs0otF5+ot3x0tZexAn3NNjD6UfbxQ905jluAqqCrQiF4
XcuaLqnNAliEKBo18IgXxFlAPMmzMyFnEF8NKZ93j/Xuf6i/PtnMdtVyF5vhw9UeWOA3qnH99lO8
u0UQG23XXdcD4hSgTOPCFTU1zARDvNCMCGdjcUBusOc3b/3dm7feFGKuw5o2dDgCd4P5xNWXp+eK
PNxw0fhvPcQStEoJV62DQg6PkljNI4EKKScQ0cTOX3VcPa5nFzzRZPLaVIL2y9M35jp2oqHjdn24
pxdOfb83rMNNSYZsR4f0rhlVkcGctQF6FZF6AMAIu8kAD0CHmcU4MZT9ej+cWHku2rZhQsosU/Ku
754fb58Aosxw9MpQAQxFr22lJoELW0oh3otKTcCWLC2W8ORt4j55ps5HkE8vq7eP9fD0ai6iaMkt
llAC/wWxrMWiT/3jn7cIozhYi9+TVXIVCrARDSQKbgGbIHTwspCYFQdswhFTdlbyxvptJRovLvSR
DX3s6pCCXi5ytbsb47c29eyZEj6qQKiSsAxkHWJtxNlTDyfwhsoBwZ60jHHBuTR23ZDG6YPBwvFf
pGAMWFrXZG8DiInzcEMNjoKMSlwKliAQZ2TICJbivk1AOWw+l3jKrMcPu9XCHn7qN7ergWUxjZeN
MgOO5I7xrCIn1KqKI3OliIKBGAadrZOBFnoJ6Dos39bi8HQueNc66l43DLn/7YMfN6vZDgl8AMP7
RB44M0wW8JhSGY1OljgHe8jRSG10cUKUS5Q4bHXakOvTuRJ94/T1UPuaBfFu5obmmlVHNENCylak
khE/tJJIQ0Zo4jQyNvhtVIkySstFuHe6x4kw3Z3wQb2yDS1W60Uq+ml1f/P48Gc/xRtacE25TERF
Wy+gknMJIuKjZ4ghIRoaLzKgl7VPGNDL05nUZtuIhHatD5Hjz59ud93BXRWrvsqZdEiPgOMJaE9k
uCk4BqCriDASywP15wO277r+rhbc+zfT5p99hwXar82lu5or0LAo2/NDBOq+/361vh2jEK8OYK3n
3FOwXlPhFKVgTSUgVUZauKU22OAmsXCxynz7vnGojm4Oh7q53X1ZPXW/j7la8mtFB0P2SMjIjgAg
Vnq4ocPhKiaIAUhh3IOfpnaunq95Nd+5b4hjuu121kn5W3/7ebO6gziDYfIBH9nEtDYRFEUqIL1M
gfSURVhgSjkWlHcqX2KaL4u3b/Ll4VzorpHSXLcdr/Dh8+eH+/j4FXzzcI4Azxrkfn+S2VhnJPwJ
acUA9QBhBFFLSjQVIW1g2anmSR6vPBds04CcKyUX0epD/7itfOW+6/396u7r7nY3dXmKc9PgGSSB
YhIBVyLWIWcwTSULVFoXzSXn2timfcaNF6/mGqiGWtOk/etR1pYhamVcIl4nKOGZA3ygMA7uis8e
xpvNt8ravzauYtVK2yvnFsh4t7rfrB/+OogvlK3IWA21Z9B+IwDZDNxdsBrFTIiAQwWI2SkNPnUO
/8xWXoi2aoi2ZocQ8OPtfb969Hc3/fqVVDPG7d5yYwweocc5B1ypFbE5OkJ1CgxmY6Iw/0cBtiHm
XM1uc6xm1wEy7G/gYf0f3WvlQ8sKOg1YNaJHAqeuoDNJgE7tkLqLMkkaw4yJ80A7XeVqvpNtbY9A
ux62/30fWMhqd8/G63e2Uo/qhCbxkEXKRNNacPaAO94B/SRPc3FJSGbyXJLjBRfyNCJtt+kPt77e
fb6moyCVxHvhgR11JLxeszDR1NIrrp4Vx3VmnoYwF2Gyxnzvzba193YJBUfbqOGI1V+YfFQ/GXhB
cBqpiJgskeJZgIsL0ITgTS6sMJ2L/F9Z4OvzuQ59I7b2nTqc32333NVK/2hRgNnInLU5473xIFxE
UsZrKAKL1EBUIGI6AIEbXtL8HBdrXc231MdybNmy5/K39694lF1zXqktF0NVDLxVcEWUAJsSGgnT
q4J8XhwTMXEu3+C0FzPDaYp9f/7V1+dXc7VYQ1fVLXBrvHt43qSHbsxigr8Yi7ecM+4o8dxXE9Yw
4cA1iVHhSphNMl2EXscd2uKPj6fSb2iDa24YM0Pd8jVQjxCWUSmr+9db4gilIjlNshDANogGxAr4
XlZGWBGCF8aci/4N5ImtbUOempLmpwnL+/Xp9m44zcpjcAlDSBJAmjFERVgqIDKWM2K9z0Qh6NMk
i2IyXHSYhw1OHObh8VT4nqnj8NVzxQ/uVx7unz6sHnf943icQu6NQMcihfScOFB2IhDGQQpAhBlM
ndqMiKrSN7d4/8unC6reS6lnKnNjGiobu7ivL4+39xNefv2h/rta0x4q6wFMIJ+VbAqguwcaghUR
W+oAAKcZYTMJXfy3KCV+mMsyA3n10UI/19Jv2ZX91Hd1VOLf9vN4IwUQA1KqNY6oI+O6UKJDqTyA
O6TKYIgJPoEjmDx0Yy5oLM02Olmym7yzUKdrqGPNwUK73XbTj7TKjGTAa+6R6S2gqQe5Y+BW0AO4
ioJliJCpj0ty97rSTAKhjgNOL+UIOf76fMev+WuZ7ZoN+zupeEEuSPBi7K8U0A9OM2cFipK051HN
95+uMxPA9A0ntWKs9XXPX3avAkhqh/vL1idmiyPglzXWOUaClZQoxENtI1dK6cUBTNaZCWDdMTPr
HV+aVA0xQ81qpD1KQyM5ZOvoi1Xg2oFnWzuvgbiUHbJ1kBrLi5zKm42vYfHT4W14PBPciYbxONEf
6MJ/Pq8eV/dPgLxju0NX+x+goi9wJMkINxoSw8WJ48qTZAXTzGqhZbtSulx0JtHaHpMufGiXla+f
Pz0/bldd7V2Ya1mbF2ZoAfnMWCwgLDLJWrMogoSc8c9omWDUOOHOV6DHlU8Uuw6P51L3DQPolB1c
4Ljqv314vt8MgR0MYF//V4glNWLWNi0rqoI2iO8zEGYBE47ZZqWkTsKVi0r/ZdzifBPg9b2rueyN
INn1/VHSvnt4/PT1vqvxcd9EGv5fAR9TNHLEQ2CKTISijjidPcIjIJ9yhUqXv3n6G+U55QQvj2e6
blpOsBGbJWfuu9v727Hvx4Z+h2XJJ3itDlrUITJL8ANcl8E7DDBvGAp/p9nydM2FUI2YtrHrRYVq
dOv3P9dizz6sSKPrDcBcAiJ5IV5bcDlQJ+I9ILcC/gzMG8GTvCykvP/5jaDy/ue58CveEH69nCZ6
+NLf39wdqicD5Hspo6TgCvK0JUWwQoRQmTjqYUGORwFek6O3/3AZZf9sLvCatQRuDxE948Z2177+
/Ov90Pq4ZnzoG7AhryjIKx0HUywwfAabD9lwIr2LOWublH3D8A8rnyCKh8czDXraOPKemcWRw6nq
EM4KwbeFabgH9y4SB10EYjormtg6+2RjNJHXckQRF7Y8xm1Otj3GN+aKNOhC39tl4+kVeL7/eeg/
8WuoUG+BKnpQh7pIFbNxqHAiqUaBGJQQV2USqhgebS5vJIOTzafh0VzyBvECQ14SnY+r/4pY73H1
MhU1pAA5UB5YfE2srhbeVSF1ZA6XwGD83GUSDE1MS4MU0PDb6ouHOPnDco/l5NX4/Gou63GFbstf
i4fvfvzw+HCDw/i8Wt/e1f7ysvypvNJZWkmUH+p0ycBlI60FnGRk4RFc6FuVP5uyXM1F37T0GdFN
ul3d3D/snm67ly8p7eajHYgJAydG7pVCExWRiIUEE3VIYEQFz0HlFTVlUY86v+5MRKkbIsp1f+y2
d/1v02algrmLajP7H+rsJfiwUnBbeGqoDT9FPAuCZCstyEiiWtvL25Vnu5V+rsN629ChM9v+BX7f
bbovzwj1Exh5GJaKkUVqEkAky2CI4IPEmgS6rFgw3gZmivsGw1JNKeZKNOqm22GScobgAJVWm/6p
754eHnfdfmp3X/tx4DV7XqE8k8Znoof5mSSQdjmUS6J4EAwQQ3YRL6x/UjUdtjo9zXv02kwtJY+B
6dZWZrJewogRZO1J934kmTGwpX1qrj/U9pdTQtWWhrGg80IEDlShJXGWO23B5cQbqXm215uAbpTl
BAIZn1/NNewaavfLbJhud93HHte4ub2/Gaeg8JuwznqVUisVZLBEcZEqGteIxJ4SeBT4KVc2iHBW
19kGJ+5v+spcib5hks4sY0NXq4B/IE0N5cB9LrTiWu9p0eHHapgesTnwSDwgFHwNIS04pMSiWRK5
lGD5eW0OG5ypRi5yYv0DJsc6rLplCX6Y9JqizO/+SVyLPUfmQ4skqIzjBxTJdR5VBAtYGzMnySjt
I01Bu/Nmd7TF0aTZHMRuV42uJj4cO+YfVwC+913/2jMfBBUaBH7A2jpWQWkiTgKEJxatlhnM2Jt/
XNBZGW8uwUz4tWmc+9ouAe2Pq/ubaS92P4w2/L+icJYVN1mSqOoko+IFqsDps42KcgGALuI3p3BT
kU6E9ckbM6U70UhEm9WyR7H6c8q/+aCyte6aD2VbTpngtamvfaH7skYwMDSlNbBj7V6Y8xnJ//YW
956+MVOg3xw3WfDhOCUR38WfPrXGpotiuIt6U4i+RGRTvycSHOEFkUsKW4dov+XY9EyQhQp9Q4Xe
HVT446+7zQgCjB2mPGpworREQERFCqsoS5iMMMUczt6l4jgLgOtNJv264EyOLW84wJaPI6Lvyt8/
/b567DdHGDYGLoMCBolAHwj6FHRewp+BbS3IfhQlpG+EYecyTOR3lG2O5MeHNW6K+RcfqhRA99vb
m5e/8XGd/QdLOfs7dALB23u0HBxaa+kSd55oXr9Y5qirY3mOVDokkkvU+YtGVw47tHU8PJ3pwyk9
1ofT5Vzs3QPw2W7/zbXpcEjyPhl4JiCtQya2ypJQiiEps+QL9JL0omm2Yf03Y9BUihODAJM35noy
09BzrXt+DOj/+UN+Nxt609yklBzxtlYOAKdI4ALxB2DDeS8cc/5iBF8XP4Ph6+O54Oum4KPjPj/d
jqOyotJUaZhP9XsOwdYCX5SA7j6k+k+tPA8xD+ORE170usRi59XxzsKsFjhnver+eP4yhQjw15eB
TT1EQatxZrQWLkQGwKEScK0YSqgTXiQtQTTkJecXFjtND2//7Gou6rohv1sOa77r7/u9h67uPgGs
I8sfsg+nbt8UcaXYlBjokCqhalBny0JNu0wJ4YLI+aLGcWOvtjqNF+e6OdvSbdXobKTn/in16+eb
Hx9ubgY8/WrZDtBTGUZJHuoCGgYTCkIQPlc5siC1Z5f2cJf7nC5NLt+ca7Zu3JqkbNrZ/djf3O6e
Hr/Oers1RWTJkgW8C+DVREgV6+ROAVowKkaqox6S1f9Xa3cu9tVcQd7Seuxn/9F//Xwz9rKH2Stj
rFRWAmpn+JKIUZGQKAPUSExybmJO7anB6VpzIZg6FqIOSM2Nqsy6JG4goapiBely1jUlu6IEcGkC
2JYWTpNLBqZwgavzhe3zAC3+0IRnjlrRCJHWyks64y90mg5fNJWKDXaUcv0Dj0YSauuMtvX167JF
E6kRWEWWSib1ze1oFOdMw3xBqKuWqqX62GL9vOp+H4dOra7kmXEdPYd/QEtWv8BQiLW4peCSz1FE
LYJu2s1krZkM7ngWAx/qJYT4JcZp6InRS54B4IWs3/WWUiKaWl0dVoGO0eTkRUkBy7YPDA/mYmrR
EnM5DfvL4/PuKf+5unsers/f9PdPYz5Qw59L0Mxz8PNoBfKrr98+RqwkRugUcuSK+ovmXlobndCk
8eZcNdMAcbVYeTzKU8tSFVQPJUquh+kioAKTabJEZeVrVyeQIGDuXFMWTXDmzXGQl4XPhHw8nYrM
1PH8oWPWbRp9tIF47310gBOUc1mU10QLDXGNhLhSR8JEpoA4DkH+vHf+6/Pq8em/T7vaQrNh/9Oq
DY9nurnjKhc+FHLRuNzc73YjzVFGV8pVHdTlqDy4FUk01UpFqn2GoEkSppbxrFbRnmteTtadiyVU
Qyy1r/m8+3H/pzz6x3L3sHqa8K4cmFDOGkKDQ1R3sHfHQE6iD6bo/+HtyprjNpL0O/9LMeo+Huv0
KEbaVSzt2X3tbnZbjKFIDUk5LP/6zSx0o1FA9TEehvUiioAKmUBV3vllySEw/qf9rqOOnBFwSJDM
ft0ypGmHIaMOBS7xpw9Pb9taFfA6qk43mArMa3BdsgYjNINfS5UEl6s4krUHp9zk4A19t8rlMzuo
bSFdENzya3SP393izGBXgP/+9qVtkHCgjGVGlinFpHgA9ZwldjMqKUIIoLTLdcbeYf1Th+JwvaXe
9r6WXUAGfNtuN18w8vrrU8VHHDQ0xyh+ZWWI5ivFBOegPmKtEhLGEkz7kCI0d1ZlkcVVFnn3cSdK
M3q3zljsCDW3srMP9Mv64V/fa5Mpq2aHYBXaoigNZrchMaLfFrA3T3tKDCvUMI64KFdxdFi9z8Th
akv3yi3pXis3o/soN8eCbKHhB1ezK7iE9yRFgdAtBkMCsM0olxRkW3RD1dafF8rH6zctlasO6fdi
THLBf9g0rTdciEOtnTIGPDt4xzI50CQ+SQIyjRPNLBjQmrN0QtLOV21Jupc9kmTHNzsWZWvc3Hqo
XwRDzHpDghKYEsdCERS6LDJDM486qf80kTO9oyV929Fc1ZBoSP+yffxWN+9gNdfonAezjRVJYi7Y
nQ6uly2sgGOpVUJPktJ36U7/Gzz6VGvW47eWmV1H4Kx3qyW8wiArVRUwaii4CCEZCZvCZhAqYBFZ
+EmCjAEHVZrIwHq9qulpv3if4v3FhugN7cj4zXY1NpMNu47euls72g780CaSGBclYiqAI/BTpkCx
YoHoKJjJHgzWMCveXK7XkLMzyzgD/HKz2Mso8j+vBqQSkNA1N+lwYxTQr9H6QpKL1bikxJcgiWJM
YF2udV69x8aYknBOLw13zJi87zBpt1X8TYro4dS8Pb4em7MObx1bhDyWQXEMbQnBMYriBUnGGQnv
H4QhO1udP124pczuOpQ5O+uWf3p+e9hNoiGI+1QDl4xJ/ICgFbF1L4F4Bn8xkuBTEcIqVbg7C6cw
Wbelyy0VBgcvvErdVsT5X8Dt49WarKbI8NPgh0oFypqA1Q4Sw2LnCWbmqZO+Kg0b87WxJ3jIaUkH
F28aOp3uEL/ms5f6tQKKHtt3DkojgXR23AbQ01ggzbFAOlnsmMmeOsuDdfTcS52u29Cld8uzxs2i
1OFj8p8nBSdYscER6IG5fekGHC+nnUIzr4D+yPDRwbaA9+rg19xFrs97c/iAE8YqXGlIruAUC5KF
7ZXJ3P3P51oecwiq20JBUoGowr4WIUHtBoPhqywoqGhtkkxXB9Vh7TMxdbg6o9r1qJ5ruddq792+
HA2+aZAb63vcvs4HDaAQeFLYoEk9xb5+B2qbB48BeCVzigF87veQcwsr9EpjtX0Dsvfd7NhLv/p+
tJeYRTHuOXhF1gUCnwUrEMHzdtJRwpU02gTrVWGtZjmu0T7aLoN1fL2eR+V/e6hoRAVcocHgFPta
VHFIB4pgORZMwH7G950ECdJHEpWL2bFoubwqdH14wokXv7/asLDedfbPRtpOGe3mcX9Cq+syVK+A
payoLNi9hf69idiKBPYedUUVKlxxhv3p2qrh2k1LWY9cPbZ61oxUWywRi4yuSPT0mUDQQEqsd3A4
NfjI4Cl6eQHk5PpiiePTW6L1rkP0ohtof0Zffzy9fdk2lQl4QmGvDKV4YkjjpBJNSRaT2QH0ITNg
pFbIAs6VoTHYEty7x3WHk3i3pHB5XMeb2ldhtr1XsZ3bYFV+wCdUsraw4Hd04NQzbThhGkH2SsLu
TjguYCM6z7Hupdg/LZSGay2ptkdqg2YxjkSCvVbNgOCUoCURh9IFvgn4YIg2EMBrUE5RZhhdgFnc
ss6W2drlPhd6u+mEFA8lFTVXSYdc/LFqQ3rYJR5kiZcGRAsD0WINaFCuXLagQqVV7j+s2pjecdPS
u7RFhWVqXlwG///7Qw2LoEzc1wC6TLOLIJpBuSosiWXghMMmd5pznSRlV+rU2nP54Uw/5oebljzd
o9nNNujv3za3+1PzafUE8uFrDa0fUwLeKc9UBKMqcKxrwrKCUixhyaQsEoidC5HGxeqnemxmt824
WXW4keLgDfz++vg22cRi6C5gDvS/YwpRMhzGPxxxRmnwAXIAec9KLrOs+3SdloBlbSj+cjT6f/pQ
ZuLaKK84AyEdIrZlYKWOx2LjRIN2JgSRdXkncT0+fEay65E8l9a5fEAA7LG6q0KbBnBLDWI4Sdyz
WADjYgGzUFJ4lZbC29BX1b7s1z5R+7K/OqN606HarY/9iS+PoLMP2TOB/h6vvWzO5MRQllp43bmA
dszWkpTg7MExcyHmeYficaWWBNcjYeM6saJ/PNxvn/G4VGNfqsH1tClQk+HLg2WFkNnY2474eUKD
b2cTc8xcFFV15dOnvV5uqd70jsj92Nu6/gPDtEf4iIrFlIoV2ACoIgUD0mGaGL84fGOtsMszqNkB
aVZpn3+/9JSEU/pMhO32v+8mwTb4kKgk698oNxMzIHccCRVeV8EJtlw7ojU4drA9leX5/Wqnj5Sc
MOHuerE5se699PVurt7GJV/3+b7t1wEyVAx4wjXCCJvGU0OKxdg5HD8QHBi+4KpITTM4uNdXfdT1
e4yEyfWWkV1Hxe2c6mQru6UGIHFrjx/sIwfeNmg3zGNLkHxwBjAvJbyRCQwcf7m28lJJaHvPTUux
7rFhDnpiePBtOMrqGuaXtYwxZCIVFkwrBY6UF6A3pAAniunE5MzeaRea0bA8CJKKeRlQePy+fXt+
HhJCorpR9e8dEsRARdAUYPNT7JfHTF8wCmx9cNQ4Y2BRKHqhGWtc/1RL1njDTUvostRHMsSnWjRB
/Lz9HUwF8KQHi374ATVfVpwjDqTFzIkIGgxH4bHrIRh4rVSyfDl1jYuf/vx49aalUHXIBoelJbvn
K/if71Ac1syJUVX2WGtLpoEREDOYiMSfqE9EUa1x4gEVFwBq37VmCS60vC4bqJ3kcgE/muF8Wlar
/vBvU0PoRTipFGERMecdB2eLS9jtzvCoAytBmfcTqj6fYCjftKR3tpwyoy/8dbtZTWCutNaVF5CJ
1meVifEKnBTpNfYOZQLiR/EMIpM16KPzhW7ap+06JKzkCML99OvcvDOJsgzmXeECG4aZxvoMBUq+
8BK4Y9aHdzLvxoe3JK86O14hdvGQaH+BJR5/u3XHYgb8/joIm8HZBDsEw2DCw/cHj0QEleE3SWU+
A7Jol2kp2Pa+247NSireXlbHxg/DD5AIVtICTiYjAcWtoAaUBgWJh0Z50ljfzs62g0+WbanaLav2
MOB+oCp89HczxDTpwNTB1+CdzWCwYeFVTmDuughCVyleNPuLENOO1N209LMeU2qB9DBS8ozA/krf
MjNgZ8APmPixBs5G1CQziXUjFJySjPXhEuHCwEqm14EtNQ86pWAmt7TMbHrM7GjH1jiImlqC8YTo
kpxjx00N3Q0/YZjXCUR+A6kmXdyjXgrsZI4gsA1cUypeazvNn3g5WXu4s+Vx1+VRHstg/u/nH9+2
vf6U4GMER50Rii0eoC4Ri8x4YnTOjhWt5BWG77/Vn9KQMmOjI2QsPx7xPYIh66Ajao3BPNT7FJMJ
iPEaNEVAI5PBiC/Uu5lHNlutocTKHiV6Djzx8LQbg+RSuUM2kGemowyCeIEumVPY8yMZbBjhGIPj
71k+J2yOy7ZE6W2PqO1J0Lzb4fjXyDn+v/0/xYCCBf4iWB6gU3ISmCUS4MMWENE6K10ScKDKXyKH
hmszTjsK8l7tehDXPz8/P8Jn7AD3GKVzAsuK6ORA0MJOwmon/CcobMQL5xcYnK5/Bud6f0fDwX2n
ME1WkJBZm+swLvDlRwPOV+XNML1AgwAVmQWiEMVYcMVhh5cCTnN28Cdyz/372VBLek61xs7vm3Kv
xG75/ZTYjXi4mKIYJkg9PP36y6R9heHHwzA9NvGCJ0TA/OWI8i3hJ9igRSdKLXdFyVkVw4klG7KU
XiaelLoXM//506d4NxZmcTO08UXnwHYFVZYQ813IRFx2Elw4UYTKBXT3VS38uPaJrQRXWmrvl96+
Zmq9zKwOs7QG5xi2+aB8s7QqKXiFAiFOhAwI+BAqaFHOPFETysUK9hMdxXF/7aalbNMhV88buyNO
QjyM3Lkb28noIKF0xUuIUnJw3iPBWWtAf8V1gH9KG4PiFI6uuy6I3XnWCQ3bubPlTi/dbM3V+phB
4/MEWvKZYtosAztYnkhJSErWxhQKFiCYe+HdEmhL6DOkrvNBKvzcYBSsXjZfHn7bHuHXBD0Ae0cc
Xgq+BVE4XUgIhBcXKEgVCzIoJ8AbmqV628VaQmzv3S2q4TChUee3DgNuQAnszUnYWiDRq6PMFdDB
SabYXZIplq8KRowTElSrhl2tL8rCj/tHnDa1Dnc0TIj7ZXxby71FcGTi4emfTR/cUCEwxH1sphxb
EAhTWCBpBM62A5HChAApQrPx8V3qoD5MaWiM5Kd/3rTkbzs8WdYxjSfxo2O2xiYTvAue5IB1ihTM
RrRvCA0iOSN4BKF/8XtciBw1t7TUu12H+g09CUdUK0Gw/5WN7T6MwqY3+3ICkDYGDDQcbIAefgC/
DJHqbNJS+qBMyvTqcpT6mDMFKfV6w47ly+YU8C1Ws5jSAHT1tjdKKuLUxAKaol2BtrOgtlBHYZNE
wfFq3nnCaA7gfWnunLmMdnXW/JnecdPSve4w4zYHcfnH0YZXwzyDaCK8YEIR00MwXYgNBsepJVdE
ysz7WW3JHz27Xa86QQK95qOY/unjUIg/7yxPOqVImSQ84owotN2doZ5wXeA7lQLeUHkvdKQJBQ3t
a7V04vTGzIPiH1ffnzZfppkMeat0TWXgDxUnwfuaQHfYpi8y2Cqecqy3DDQlVWK6gI3yb5mMLT2n
cCGm9zRc3/OODLpXI5T/iWl0tMSCNgxxActcEQrD8qJJUTYmlsGFle86jW4+iu5IqemQr8fe7NfV
6xRile17T0DgG9CxmhiwHdHr9vCJDGw6BY4jRYQopebe6msXYxWetlmSYCgmENdtk/Pz1MeoMpwa
c0uHXAoPodgAlkqq6JxScGKjleAsae8plZELcV1/8/P5vTC54aaleNVhYzsGRbfjfLpRcAyDMUOg
DAuLmcMKfo1FG+A8gLMdwBVkwi5chdlKDRWMLqPdhgs9H4yDfh8it708P97V7qQxoQ3GSn2h1hoO
Npgm3jDwPhH9wyN2vg+eU+sUi45fPWipedQZV7S576blobNLOE7mFfOKtdeDGzX08ddaor1fhkPE
OB67aDQ6FeBe2IJgLCA+c4zgEmX+HiZM482dLnMbb2lZ7QhSI7Q9NIT8lu4+t1OCUsngZzJKpEvY
7UsFQaA/EjVLQXupokh/1ZSgkbiGp16HrXFru1AOT79+B/Xy6fl++zjr9PcRm0jAivc0g/UsREbr
GQcYB9C8Ctumrmr+mj/jNBTQ9K6Wm7XrcTOfErhpwFMOCRnnDlUYShcnYeORhB2SAvwE2I0UoUc0
NxQsBxvy+ar7xfpTMi3vRAGtPkLMf/Sfffz7LLxf4IAwnw0JFFwT7AhG9GwL9gS4fE7mYuJfFd6f
0nfT8iB6jLl5U8EwS3EheRnClg1jCYJHqDUaiBUGs68UoUZge8liJZi4ySWZrxjXeEYkA12rDrF6
LpJRHqSHl4q29+MYUWC2ZqJ4KdJwRijiqgvLAsGqDsIDNUk7Go25PPxnXP20QBpvaTnQHQ7qtKJ2
ptWH0ZLHspcKO6pszT4GxqxNORGVsR7RB0kcYvZrA+85MqZzzO/SW/XhrL0/Xm7Y6/WeW7eaq5af
7u5m3aimcDBMLZEyYs2atYhQI0iRGRxKF0O6AOcEK56wMe7uWgpXS41gV3QuPY+uIlqH//tQHjB0
XlP1dCgTYo5rF1kCjxdr/HDsmRVFEAQHQjHqkr+6vBLXP+3z4tWGh1Wn4smujvbRT59/2QeuPm1f
Nt9flhCwkicsqYNDEHnEWUYFVAG4hgzbIbJSXDh1lYk3Pukaf6dPVsvabml02bW576XofnxdPx+K
HWpiYxjRuocVLskXa8EPMAjVI3A8VoAzRMCrFKpgb23wV+fmpo86k5ib3nbTcrDtsLWeQ89XHJxh
FbTMmRpqnDD2X3CqOOw2g6lzES0lFpUKOMOR+QQeM72qMHL6hBPx/MkdLQ8dTW3XG7mc2Xk3pNM6
0NUhF1+bagOzcGgcQ6+NJ1JKETnzYEzQVwZW9g85GVjZX29Z2PU+wzEZ8QiWysMEbG7AtJRegt9D
eMZIowah62hRWIxsGIs0h3k2cbpK8/hNB14NfqnmGPZvq7fXo4KtvWb48rR3uSQbCNMBbByLTUUC
21BFdJYphX3WZ3Hsj+vOyNI9ssYu02+rr5PJILRO5aBKOJuI8w7nz4FNAxJJ4WRNEN0BaNSzdzJZ
Y/bsdefZcrGpHl4+P65+jEmCmYPlTe09g4+C0MqCZqCHqUAMB2vZJCOjdVdtq+YxJ7ZWc0/LTM9I
3Mh5f+xhLjV+jwcEoH5t8dL4oSmOBcEYCGlTGHZR1wnTSWLuBqxZRzEidmXbMf5w13ncrAG5vW3G
232HN9ODaPH/iH9L2HFjagmYMogeOcQ6sgLL2ESSnUGAQET4wVppENPgIoPkt0Zf3eWJTznT54mX
Ww56MnizvV+MFMIExjAt+VbuoVYHZEZLrRUBPkjESLcwThJw4DORpnofycJxeL9o2kjIqb6F/eWW
yW2PyZ3oBS3Qu3h9fRiQ2Q/uoa5TPqkXmQbQnZhrE9ZkEjjmzH0qISkDNrS+nC5v1j8TqWjua7i5
F8uSKotJ2nbTfX55fnvePD+G77sdhl9YTZrb2/1oMsldDhRhBinOOMHgt/OBFANb0TEQHe6qfG37
lFO4XNN7Wl46XZb2fjnRqrVqWI25KE2lqrFpqQwLDMxkK4aJ3SFpQ7xjAmdBOhB4V+GcXLZnTtsy
95uOyN6Z1R45KFfw9omtiROceDJwyhUOKA4ODDF0DnGGu9ZcaH8BDORayKDhyUesoOHfU9od5cvQ
l6PGdkeIVDGCPw2F0nRfKF0lQdbg2nLcUwj7xSx+CJdJQdwWxhnLV5RK1bXPSDC83FLfQWaBX65n
vjpmT18PUmavtrEpWbJgooIPoTxaMiwigoXGIbJw2MFxp07YS8gE7boz6jYd6jbzgYyfvj++Pbw9
f998WahZnDsma0F6/buCKQhXcMCJHkYdgn/louKEcoRCL3AK1FVO1pmHNuJoflvL4HJorEPwq5NZ
xuq8ffT/deh0B+vgVgyhaiq0M0y6fT00xynPSkvEdck43DereDlfimufcRvh6k1L6qpD/758+/iZ
v719edmujlYwHaEtfMxYUmdIjjg3mStMuudApGZZRC2ZLGcHTzYrt6R1utzgl2MPEfyP+2OlnwBT
UtZQjixCRUV0FgqLQ0AfO2zjpU66mKWUuU/Pcbn/b+3YdtvGle/+Cr0skAJHgXgVWaAPIillvY2b
tnG7e54CxVYao4mdYzvt9nz9maF8kWTKTs/WKApHGg+Ht+HMcC4dKlSAipJtqRgPi26wHdeMKoXC
DKYEZiDExIpjiGieWlijUudM/SLXjn3rLaIpOzTgaW/Nb83q12o5rx5CSb0dlRjVqmLrckylrQQc
9ryIKbcJo7kFdkaPzWoTc5syQQOUyX2i9I/F9fNsXbUKC8MRpzgF/SY1IOoyl9hYY15T4mhCCxjU
THSuf9to2hQEvBo0nJT7uryL+bdG0cG6ulIiHTSFt85wXCnYlAqTUmB4tDA8MVbabkXeBpZBuykS
aF910xvY++f519n8y2Z5bAN5UfXzl7jacWu0iDnFG0IOp6iqTxwji9QYkqcv0gM6zfRwjjZQqzs8
CQwnZ7SbtO2+XPoLB9gatd9O/QU5CDr6Y51ogykxmEsNKo4GxGirdUZskRcvCjbbNNEjutQv26RL
ESBdhtSXnYBeXOffsByTj9by5ar8rGy/+1ACkLkcw8UqMLu2ho3PU+ADAnSDjBWEil8YKrilpwdw
87bd7UCCei3oLili9rmopZCdyaOOHaecE4cR405himuHVd0c1okiHEQFTkB1o/+wvkKLt7XpGLSp
vQt0ge181yaLpx93s4eq2YU6K2BipXIMo3P8GZuj8KBJFlurqGU0M4rJnoRuTZRtaljgiBB8Z8L5
u1zu/Vmod2hJrZPaGBHrFLVGzIqvMmViWjBcITqXrVOqjaTdOJeBxqXoyfPdvPEDKTvThRMxlcDf
GeEuNkxiFoiMS6Wcksb9TG7v4/m8W1RLERCbpNxdnT3Pv8/mjdO9vkzK01yQLIkNlqNkmeAg+NkM
ViHadBXMqgvPXRNbm4xAxl98eDB4k0WJLrTKG5h8RR6b5Ble3Fu86AZFGKQMTmLhFLDeRIniVNoM
RNk3YPCqQ2ZAEpKHBvDi6CVXQVQisqSInbCgwItMxZqBtJlw6oQCfUyZ5J9ecjV7WLwAvgPU6nV6
G1jZ6W1XOXaz1ddseTtbL3d1Yby24HlW4oqCOw0bK7MMiw/BCYnCIUsKOLqNo+5EPpcO9t5KUE2g
Vi9UGdAuVdlN0Hb7sJh83WlmvgY3+kw7AkpxYTO8O805WvZBRzZECwdyN8mOJo1rouyQFFAZ1bSb
9hDtFjAt1dTXh9oVPmjUBnCpLLBAmqUYv+eMRaNDEecqxcgRLk2RvNSIctBQvy3lALTdubvAeOtJ
91DHKfNi9qpouePCP+GLwqEJGUR3TaQksbE+zADELYMeuSIXzhBHcp6+yEdn31j/+qnfD9pUB0Sr
Uk4OwlzW5bRO2p1s6kBpkp77nApJYkFMFC7OU4oXFYSCMAIzxrGEjMKQW+d+nTCypaTPrle/HbS7
Mw31cbo/CCb7xMy11yrIt8D+LcHCoBQkRpMkMnZweieUmtSlSc8ZEMioBy0Fhvj2wII9rVZf14un
VcNBTm/SJWh/NBV5TggDlUQYizYJ2LCKSB27jCuTk9Roq192Fecb2o44AvTdyB0ADtp9CHZsF8b8
4F0u975yu+A0XiiCCRJwROF4S1gSZ0o70DMKEPnQo1sVwQFuYuyQEhDWbm+7KQg+OAwxqJMV1VEe
jmYuYTGIZCg9AyPMsLCX4Vmi0HXHnfDJ+H/C3j/03B58aF0b6AkJcNAJ7QYbPz2U67vF8nHH1nGp
gM7IeAIKgUthNzInJUgxOY05UZLyTNiEH80O2UbaJosG5ISpTHdk/ecBdGK2v0ZU9QWsNaRI0xy0
e8wB5k0mBMRCkuGFEtCaUdbxNm0iapEwVSESNlXgUYwuJ/fV3lcLF5zIdUZzX28WWpfGF2dhMXAu
2FOS8MyFj7kGqhYJVRJYbxXphi1sS7rfz7b1IzFrQ21gdExpgmXPNRy8OaqmWJMNJo6mxFhq01/i
TbOt5P778Hil99+H7f4F/Gl0pbrH99tqeVstF6utj4pPhpHKJE8sBd2aYmLBBBPagDJkpKYOlrTN
zXHnsy3SMMHbt21yyxC55c6MBxQ/gV61vFmu9/K+9yVVhSWMxcBafWpa2CdGJ7GmCdM5VRi+0KOp
dRB2yAkYPKu9b+Hk8WnHFj0/lLllIHfGzqvzKstjA584S0CCFrA4me1mn9thaDd8GzCFV5OuoeSv
93bDrbY32t7KmgFnYJrFpBBYt0iKOOMkBdmdcAPSoE3EiySRPfbwDO7ft2mfsBDtXRb+rloX19u6
uvX1qKWSWWDXcUGRtxCMybJ4a6jTTJGUyEQet2l7nL2X08V1m87ATWfJOLmbtMb426ZgiKorSHpC
GQjYqcFoMdAJYoZ6sMFahpZRinHaXJ2IvvpF5R6+HVQLgQ7QQK/kzhcD0+YdHuQChhn2CsXcfjkW
QeGxMiKJE6wQYq1SueLB/bND1yZCh4Z22s2o9bF6BAn986z6vo8mqJexRmZvdSYpZmMyCZrGMerU
pATzKAJtoKlZIV4URnDYTJ9BqQvX7tT0UFkoxUG1YVts/CAwZQgoCOdov9x8w83JQep0DoQ/jWUz
NOZCdTSNRZbm1BGinTqeoGeHv09J3rwetMlUAdoPktfvyqn5NFvbu+hWnaVcF5kxeM+EvKXQ6H+F
pZOtFYllucjZz5V4a7V0oshbC7bdv7vDK+VSql2MmNdMNrri1lafkm0Obu008EvQDkiG6j4VRawY
S2OZE5Y5rXPOO7XfD/AN2g0f6imlvuteEvtMeP0pB0xuXA7yLNaPAO0FhFhY/qAriDzR0nCq3Ik6
Sk384ZFtQgzaxB7KrGVJdhdZD/99LGFBb0OpUA4C6Rt0eThqUgsnMLriKsJtzCxNi9TAw7STn6eJ
o9X4HTu05cDDbkXsmS+JfV7M5tPRD1fVp2DD4GBz9GgWMTVYLDfRrLaf+mB1kJsz4V7kKtTE38Os
GxDtjgQuJcu7tFu56XEfNI1xyjiYOaGZ4QKzTUj0+8c8jFTCucidLpAd9hgv2xjbxKQiRIzcZ116
XHyrmoZwL1kxrgRy21jaXNUWTFh4LlYpk7mTuRI91Qi6+DrEHPLS26Ts3mt9GjZT9u3nlktpYPUr
LCJVoAt7gvl+XVzoNNWcwlEmX+Sa28TfU+BmGM7Xd8sCugs83MUa2s+j6/cPz19m863DQNeFulAU
xFZQYwh1GIGeuTjLXR4LxjKbgOwIyuuviRPtoaXTn8CM+DQb6YlKxD5WmNehXfAF14wrCge7PjYO
DUkFsIGMgvpgQRsHdlpIkR6X40L1jnucjA4AW73iAYdZeLjTMEflenLfuG/hXuwg6PYJpxvD0u4K
Td/GuRi4MDOU57KuDN3gZC0sg0H+9ybl02gxnd1tPbGunx8foZuvgT5bPjysosdyWkW3P6LF+r5a
Rk/LBTqxgQi0LpdfKh8yt76frbYvXvt+rcvV1xtQ6G+eZtPXUR30XftE3Ezg/3X1OkqaD1fV2nvt
bp63Gz6FPvln6OGPRq9gBHx7WPZxNq9C7VHBNf+5NgefRxHWQW2O70eAupo//IhwpeObxV202w6v
o/FiXT684ZKd61G0rFZwBM7Xb+DIOVejs1T99ipafYe1Xk1vFs/rG6Dtee5LbECL0zckYedkdEbp
b68Gf4K6Xd4+VIAECdihht19EX2Hl+tq/gaDdJPRGYEf7BujmB0DHvJ2Y2+St2cJPGo1eM4vzpSE
5qLBx/xiePUuGv/7fR71fD4PP44/ZZeDN/tPH+jm9cBeRFhzGdfbao0OWiFgolL5FkFnXhk69iE6
UR505Yue179Y9cB6rOiqNgcwP1m9aBNegw5PUhBFqgb9NNzQ6y3e4X4BqJutnnAHA5ubw76ry2J2
Keag+Y0GjePo6AdoHV6hC/Cpjx/XukvDqxOwHLD+cR39MRxHX+qCzjC8k8W0OxpUSKQ1DHpWu+BV
01cImkrs1vaH21cR7KpyOoU/VxEMDcpVjTX5avDWO+xEGT6JruaTqn8aRtnl5ZU93i/ce2S0BT0r
p4+z+at+aApYQbZY/ojG5RfoLOkFpTBgdQWLk/NAZA16cRldXF4fg4fRfTu4/nA5W1fRE86bNy2G
kVIYgetxZt9GF5+yj64fKcwYHQ2u17ART1EKvIOPgO/d+OHKxvmRTqUI+md1iytx5CewD5JJBL25
cdk4O0EARU4JoDhO5tPwcjx8d907Vri/bm6Go+wiP4FWUA96OXz3Nnewbvvbp/ycIQHj/K/xCVKZ
BkYLoJ/eDe2VO06CELCyHj03jlBs7cfqz4rBhr891mux9yOhWz/BjsdX4+z0cqVwLNSg/4pgtzyv
Wnu33rPbqYXjCA6Pwf8AUEsDBBQAAgAIAG2HHUlkYq++pwMAACYMAABPABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtaW5pdC0wMDIt
c3RkZXJyLnR4dFVUCQADXszEV17MxFd1eAsAAQT1AQAABBQAAAC9Vdtu4kgQffdX+GGFAEWDr/ii
CClLYEUm2czEVnhE7XZ58Ma42XZDMn+/1b4nCtmRyC4PFu6uc/pU1enyVRAsHsLV/Z/q8mp1u7j2
1bSYQ5YNR8rkkWWHHRSTayLIZLEOJmuIvqZiErADpzC5IUcSUJ7uxZxxmPBDLtIdLgfzm+CRZAdY
5VmaQ/FlO7Q1baT6Km75Pj6QXx3XL2Wk75P6VJWyvBCKrqqq9qJrcQx24mjqOlzOOSm2ilFv0Hhq
mYmnfshiNixTU3c0twoOt5w9B5TtMV7I/4sXCnuRsnxY7i9egAaCCBhfvGIfKVZDp0UkpnG1+0sU
3ZmDt6R2Q+rF+LPVDGsmNkXGnjd7Irabkl+ZtlEQTa2kjoJc8J+K0+0Rapiv9txuz4xMUI+7hVwP
Wdc8xWtinMixHFLrW4VzFmOJAHM5CKgSe7xrMvrGmWBzkmVLTnYwHim61rCYxLVrllUugO854LNl
kqCTlb6P/gIqmncZGv7cQ+9VerHq7ptK1m9X/MdtWog6BGXptV8S6lkeVEH0Iwl9ts8QYHQCpkZU
Be05S9IM4g9q8a0MSfMfD0AKlv9n8sy6bW6kG7RpfnDDoruUYo9J8eT7eLXfqkSkVSJ1M5labuSo
OBzkHJDoO5LmaHkgcQsoSUJkO5Fue5rUZFfMlmYTA6DPfH1/t07zmD238TLpiNCnuquInjZoy9Kj
+F3076TAhb8PcACpKWSLI96XW8b2w7oAf2QsIlllx6pYqBSnkO8/QHL5WvJsMBj5/m8bzffxhnMi
GB+OpBKnp0SjFXx5yKmcFJdHlsbqcDSr+kaiDNac7BF/+T8qnnVlcyuxBjgGoCtOie1n2Axrr4NS
J+oqfoXgI2AOTZPeeGqkGFpdIpd6JjE7aBv5XaaMNwZ4wviua/sW6NOe4aSTLHrHotv2aRb5geLL
lEMsUUaLIjFx1TLHQsS+v9no8pHmR/YEG7m+wRl24PnmuW6RXJvJGFm9yz4ownbV5TopYzzA4l2c
kjmeDWbDT6fEjiuG2WVMHfoq2aRudfP/05O66B2HRWNUuujTT1HxnPfNqhhWY1Pb8VzSk5P8ks0N
u8O7Hu00hNJVyNL4qh5AthlZpkV6ceVILKML3y+2BOPD1pHltzIn8i4aTstg255+kgFE0JF0Nest
jt8bTE0+bu8UOz7D/2frQ8Ofz1E63OtyspJ/cfjZR75v6bNpT1vY1M6zsNkMSscwdC3pXaP2i92T
01n6H1BLAwQKAAAAAABhhx1JAAAAAAAAAAAAAAAAJQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9VVAkAA0XMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGGHHUkA
AAAAAAAAAAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9VVAkAA0XMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGKHHUkAAAAAAAAAAAAA
AABAABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L1VUCQADSMzEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAeYcdSQAA
AAAAAAAAAAAAAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQJAAN1zMRXX83EV3V4CwABBPUB
AAAEFAAAAFBLAwQUAAIACABhhx1J6sminPAAAACXBQAAZwAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAkAA0XMxFdFzMRXdXgLAAEE9QEAAAQUAAAA7dNN
SwMxEAbgs/sr5lgvS1O/aBChbg8KCoKIQvEwm0zT0DgpyazivzdRb56kiJc9JmSeZF4yi8HBbA7q
VJ/M9VQBvWWlztoQDQZIYhLtYhLPbqWUOjp+hvNrXscLDSE6V7YhCybJbds2i19TS+oHV6xMcks5
o6ObL/WyFG01lMJAdh+4Pq6LvPZuSCg+8qOXTRdfdoHq6grZBkoaOjQbsjAFYuzLndCj2RLbvF9X
D5lSzWvpjegftoZJc3A45vYPubH9Du6zLxRyMb0Xl4cQRnmU/0L27KWS90UvM1T/t4anuw5MZCZT
56qcecXgbfMBUEsDBBQAAgAIAGGHHUnRJ2Zr7QAAAKQEAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANGzMRXRszEV3V4CwAB
BPUBAAAEFAAAAO2TTUsDQQxAz/ZX5Ggv0qlfdBChbg8VFASRCsVDdjadDp0mZSar+O+dFS/SU1lE
BI8JyUvmDZm2HsYTMBf2fGJHBugtG3N5EsVhhKQu0U6SBvZLY8zp2Qtczahu/bWFTNzcU87oaRF0
XaGSl/Ru4ZjbGIeD6Tfy+ABy4KAd8rHQg/Atr8TC80MFTpjJacmVmleMoekxJZN+rX8n3peKm9K0
sVAaI/UCKyathFfBtwm7bT/9yHYXqYvmyE2kZKFCt6YGRkCMdZkJNbpNsZr7veopU+qczYJTu8cu
/zM4Gv57+wVvP3Uvf5F8yI1/AFBLAwQUAAIACABihx1JQh+QX/EAAABmBgAAbgAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAANIzMRXSMzE
V3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgv0tiqNIhQtwcFBUFEoXiYzU7T0DhTklnFtzcr
3rztKoL0mDDzzZ8vJIvWw/EczKk9mdvJFOgtG3N2FMVhhKQu0U6SBvYrY8x09gznS6pbf2EhEze3
lDN6egy6qVDJS3q3cMhtjOPRojc5cNAOeV/oQfia12Lh6a4CJ8zktOyVmleMoRkwJZN+xb8R70vF
ZWnaWiiNkQaBFZNWwuvg24Rd2k8/8rKL1K2ukJtIyUKFbkMNTIAY6zITanTbYjUPO9VDptQ5Wwan
9hu73M/oYLz39gfefuu97Mn9ybN/Tu7/l/5k/g9QSwMEFAACAAgAY4cdSSUipuDsAAAApAQAAHkA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hfbm9hdXRvcGxheS1z
dGRlcnIudHh0VVQJAANJzMRXSczEV3V4CwABBPUBAAAEFAAAAO2TwUoDMRCGz/Yp5mgv0mirNIhQ
twcLFQQRBelhNjtNQ+NMSWYV396seNLT2oMgPSbMfPPnCzNrPZxOwZzbydSOxkBv2ZiLkygOIyR1
iXaSNLB/NsacjVdwOae69VcWMnFzSzmjp8egmwqVvKR3C8fcxjgczH5NDhy0Q94XehBe8FosPN1V
4ISZnJa7UvOKMTTfpkx65dev+EvxvlRcl6athdIYaS+wYtJKeB18m7BL++lHXnaRutMNchMpWajQ
baiBERBjXWZCjW5brOb9XvWQKXXO5sGp/cEu/zM4Gh68/YG3Pvvy38l9dvwDUEsDBBQAAgAIAGSH
HUkV32ng9QAAAGYGAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEt
c3RkZXJyLnR4dFVUCQADS8zEV0vMxFd1eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KeZoL9KobWkQ
oW4PCgqCiELxMJudpqFxUpJZxbd3Vjzpqa2gQo8JM9/8+UIybT0cT8CM7HBiB0Og12LM+CgmhxGy
uEzrlCWwnxtjTk6f4GxGdevPLRTi5oZKQU8PQZYVCvmU3ywcchtjvzfdmhw4SIe8U3pIfMWLZOHx
tgKXmMmJ7mnNC8bQfJky2ii/fMa/Tt5rxYU2rSxoY6SdwIJZqsSL4NuMXdoPP+l5HalbXSI3kbKF
Ct2SGhgAMdY6E2p0K7VadjvVfaHcOZsFJ/YbW++nd9Dfe/sFb5u8lz35v5PHf4K8/V/6k/nfAVBL
AwQUAAIACABkhx1J5SwbMewAAACkBAAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9s
b2FkZWRkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADTMzEV0zMxFd1eAsAAQT1AQAABBQA
AADtk8FKAzEQhs/2KeZoL9JYtTaI0G4PCgqCFAXxMJudpqFxUpJZxbd3VjzV09qDIB4TZr7584WZ
tR6Op2DO7OnUjiZAb8WYyVFMDiNkcZm2KUtg/2SMGZ88w8WC6tZfWijEzS2Vgp4egqwrFPIpv1s4
5DbG4WD2Y3LgIB3yXukh8TWvkoXHuwpcYiYneqc1rxhDszPlvFd++Yp/k7zXirk2bSxoY6S9wIJZ
qsSr4NuMXdpPP+llG6k7XSE3kbKFCt2aGhgBMdY6E2p0G7Va9nvVslDunC2CE/uNrf8zOBj+e/sF
b3325a+T++z4B1BLAwQUAAIACABlhx1Jwdxy/ewAAACkBAAAbgAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAANNzMRXTczEV3V4CwABBPUB
AAAEFAAAAO2TTUsDMRCGz/ZXzNFepPF7QxHq9qCgIIhYkB5ms9M0NM6UZFbx35sVT3paexDEY8LM
M2+eMLPOw2EF5tSeVHZyDvSajTk7iOIwQlKXaCtJA/snY8zR8RKmc2o6f2EhE7e3lDN6egy6rlHJ
S3qzsM9djOPR7MfkwEF75H2hB+FrXomFxV0NTpjJabkrNS8YQ/tlSjUov37GvxHvS8VladpYKI2R
dgIrJq2FV8F3Cfu0H37keRupP10ht5GShRrdmlqYADE2ZSY06DbFat7tVQ+ZUu9sHpzab+zyP6O9
8b+3X/A2ZF/+OnnIjr8DUEsDBBQAAgAIAGaHHUl8Er1k7AAAAKQEAAB5ABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD
T8zEV0/MxFd1eAsAAQT1AQAABBQAAADtk01LA0EMQM/2V+RoL+K0ftBBCnV7UFAQiigUD9nZdDp0
mikzWcV/36x481QX0YPHhOQl84bMWg+jCZgLez6x5hTorRhzeRKTwwhZXKZdyhLYL40x47MXuJpT
3fqphULc3FMp6OkpyLpCIZ/yu4VjbmMcDmbfJgcO0iEXSg+Jb3mVLDw/VOASMznRnNa8YgxNjymF
5HP9u+S9Vlxr08aCNkbqBRbMUiVeBd9m7Lb98JO2u0hddIPcRMoWKnRrakDZjLXOhBrdRq2Wfq96
LJQ7Z/PgxH5h6/8Mjob/3n7B20/dy2Fk8yfIh9z4HlBLAwQUAAIACABmhx1J4i+e1OwAAACkBAAA
aQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQAD
UMzEV1DMxFd1eAsAAQT1AQAABBQAAADtk01LAzEQhs/2V8yxvYipXzSI0G4PCgqCiIL0MJudpqFx
UpJZxX/vrPRUT2sPgvSYMPPMmyfMtPUwnoC5sOcTawzQRzHm8jgmhxGyuEyblCWwfzXGnJ4t4GpO
deuvLRTi5p5KQU/PQVYVCvmUPy0MuY1xNJj+mhw4SId8VHpIfMvLZOHloQKXmMmJ3mnNO8bQ7EwZ
98ov2/h3yXutmGnT2oI2RtoLLJilSrwMvs3Ypf32k942kbrTDXITKVuo0K2ogRMgxlpnQo1urVbL
fq96KpQ7Z/PgxP5g6/8MjkYHb3/grc++/Hdynx3/AlBLAwQUAAIACABnhx1JUq958OoAAACkBAAA
dAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnRfbm9hdXRvcGxheS1zdGRl
cnIudHh0VVQJAANRzMRXUczEV3V4CwABBPUBAAAEFAAAAO2TTUsDQQxAz+2vyNFepNP6QQcp1O2h
goIgolA8ZGfT6dBppsxkFf+9WfHmSRcRwWNC8pJ5Qxath8kMzJk9nVkzBXopxpwfx+QwQhaX6ZCy
BPZrY8z05AkullS3fm6hEDc3VAp6egiyrVDIp/xq4YjbGEfDxbfJgYN0yDulh8RXvEkWHm8rcImZ
nGhOa54xhqbHlELysf518l4rLrVpZ0EbI/UCC2apEm+CbzN22777SftDpC5aITeRsoUK3ZYaGAMx
1joTanQ7tVr6veq+UO6cLYMT+4mt/zMcjP69/YK3n7qXv0j+yo2/AVBLAwQUAAIACABohx1J7lKZ
X+8AAAAMBgAAfAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X2Nh
bnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA1PMxFdTzMRXdXgLAAEE9QEAAAQUAAAA7ZRBS0Mx
DIDP7lfk6C5i3aasDGG+HRQUBBEF2SGvL+vKumS0eYr/3j7x5kkf4g47NiRf0q+k89bD2RTMuZ1M
rRkDvWVjLk6iOIyQ1CXaSdLA/sUYMxovYbaguvWXFjJxc0c5o6enoOsKlbykdwvH3MY4HMx/TQ4c
tEM+FHoQvuGVWHi+r8AJMzktsZLzijE0Pbpk0q/xb8X7knFVijYWSmGkXmDFpJXwKvg2YTftpx/Z
7iJ1p2vkJlKyUKFbUwOnQIx16Qk1uk2xmvvd6jFT6pwtglP7jV3eZ3A0PHj7B29/tS/7Qp4cyHtH
/slf+gFQSwMEFAACAAgAaIcdSXjvCfnwAAAAZgYAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAkAA1TMxFdUzMRXdXgLAAEE
9QEAAAQUAAAA7ZTBSgMxEIbP9inm2F7EqK00iNBuDwoKgoiCeJjNTtPQOFOSWcW3Nyue9LRU0MMe
E2a++fOFZNF6OJ6Dmdnp3Jop0Fs25uwwisMISV2inSQN7J+MMSenz3C+orr1FxYycXNDOaOnh6Cb
CpW8pHcLY25jnIwW/5AcOGiHvCv0IHzFa7HweFuBE2ZyWvZKzSvG0HybMuuVX7/iX4v3pWJZmrYW
SmOkvcCKSSvhdfBtwi7tpx952UXqVpfITaRkoUK3oQaOgBjrMhNqdNtiNe93qvtMqXO2Ck7tD3a5
n9HBZPD2B976vJeBPJB/g9znL/0AUEsDBBQAAgAIAGmHHUnJU+fh9QAAAMAGAAB/ABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3Rk
ZXJyLnR4dFVUCQADVszEV1bMxFd1eAsAAQT1AQAABBQAAADtlE1LAzEQhs/2V8zRXsT40dogQt0e
FBQEKQriYTY7TUPjTElmFf+9WelJT7WCFXpMmHnmzROScevhaARmYE9H1gyA3rIxw4MoDiMkdYmW
kjSwfzLGHJ88w/mE6tZfWMjEzS3ljJ4egs4rVPKS3i3scxtjvzfeQnLgoB3yvtCD8DXPxMLjXQVO
mMlp2Ss1rxhD82XKcK38uop/I96XisvStLBQGiNtBFZMWgnPgm8Tdmk//cjLMlK3ukJuIiULFbo5
NXAIxFiXmVCjWxSrebNTTTOlztkkOLXf2OV+env9nbc/8LbOe9mR/zv5bCvIP/9LfzP/B1BLAwQU
AAIACABqhx1JzpdKAvYAAAAMBgAAeAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRl
cl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADV8zEV1fMxFd1eAsAAQT1AQAABBQA
AADtlE1LAzEQQM/2V8zRXsRo/Ugohbo9VFAQRBTEw2x2moamk5LMKv57s+JJT3UVPfSYMPNm5g3J
tHVwpEGdmhNt1DnQS1bq7CBEiwGS2ESbmMSze1RKHY+eYDyjunUTA5m4uaac0dG9l2WFQi6mVwP7
3IYwHEy/TfbspUPeFrqPfMmLaODhpgIbmclKuSsxzxh806NKJvlo/yo6VyIuStLKQEkM1AssmKSK
vPCuTdh1++4nrjeButMcuQmUDFRol9TAIRBjXWpCjXZVrOZ+U91lSp2zmbdivrDLfgZ7n7ejf8ub
/ktv+p952+a97Mg78k+Qt/lL3wBQSwMEFAACAAgAaocdSX/j+XrwAAAADAYAAGUAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUCQADWMzEV1jMxFd1eAsAAQT1
AQAABBQAAADtlE1LAzEQhs/2V8zRXsTULzaIULcHBQVBRKF4mM1O09A4Kcms4r93VryIp7WClz0m
zDzz5gnJvPMwq8Cc2pPKmgrorRhzdhCTwwhZXKZtyhLYL40xR8fPcL6gpvMXFgpxe0uloKfHIOsa
hXzK7xb2uYtxOpn/mhw4SI+8V3pIfM2rZOHprgaXmMmJ7mnNK8bQfp8yOxyUX77i3yTvteJSmzYW
tDHSTmDBLHXiVfBdxj7tp5/0so3Ur66Q20jZQo1uTS0om7HRmdCg26jVstupHgrl3tkiOLE/2Ho/
k73p6O0fvA14LyN5JP8Jechf+gFQSwMEFAACAAgAa4cdSVQGtfHpAAAApAQAAHAAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANazMRX
WszEV3V4CwABBPUBAAAEFAAAAO2TQUtDMQyAz9uvyHG7yDqnsiKD+XZwoCCIKAwPeX1ZV1bT0eYp
/nvzxJsnfYgIHhOSL+lXsmw9TOdgTu3J3E4N0Esx5uwoJocRsrhMh5QlsN8YY45nj3C+orr1CwuF
uLmmUtDTfZBdhUI+5VcLI25jHA+X3yYHDtIhb5UeEq95myw83FTgEjM50ZzWPGMMTY8pheRj/avk
vVZcaNPegjZG6gUWzFIl3gbfZuy2ffeTng6RuugSuYmULVTodtTABIix1plQo9ur1dLvVXeFcuds
FZzYT2z9n+Fg/O/tF7z91L38RfJXbvwNUEsDBBQAAgAIAGyHHUnH6hEH8AAAAAwGAABkABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXktc3RkZXJyLnR4dFVUCQADW8zEV1vMxFd1eAsA
AQT1AQAABBQAAADtlE1LAzEQhs/2V8zRXsRs/aBBhLo9KCgIIgriYTY7TUPjTElmFf+9WfGkp7WC
lz0mzDzz5gnJovNQzcGc2OO5rSqgt2zM6UEUhxGSukRbSRrYPxljZkfPcLakpvPnFjJxe0M5o6eH
oOsalbykdwv73MU4nSx+TQ4ctEfeFXoQvuKVWHi8rcEJMzkte6XmFWNov02ZDcqvX/GvxftScVGa
NhZKY6SdwIpJa+FV8F3CPu2nH3nZRupXl8htpGShRremFg6BGJsyExp0m2I173aq+0ypd7YMTu0P
drmfyd509PYP3oa8l5E8kv+CPOQv/QBQSwMEFAACAAgAbIcdSdlKH8TsAAAApAQAAG8AHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA1zM
xFdczMRXdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC9i2qo0iFC3BwsVBBEF8TCbnaahcaYk
s4pvb1Z6qqe1B0E8Jsx88+cLM2s9jKZgzu3Z1I7GQO/ZmIuTKA4jJHWJtpI0sH82xownL3A5p7r1
VxYycXNLOaOnx6DrCpW8pA8Lx9zGOBzMfkwOHLRD3hd6EF7wSiw83VXghJmclrtS84YxNHtTJr3y
6y7+UrwvFdelaWOhNEY6CKyYtBJeBd8m7NJ++ZHXbaTudIPcREoWKnRrauAUiLEuM6FGtylW82Gv
esiUOmfz4NR+Y5f/GRwN/739grc++/LXyX12/BNQSwMEFAACAAgAbYcdSaqBL/DvAAAADAYAAGcA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQJAANezMRX
XszEV3V4CwABBPUBAAAEFAAAAO2UQUtDMQyAz+5X5LhdxE43WRFhezsoKAgiCsNDXl/WldVktHmK
/94+8ebJPUSQHRuSL+lX0nnrYTwDM7WTmR1PgN6yMefHURxGSOoS7SRpYL8yxpyePcPFkurWX1rI
xM0t5YyeHoNuKlTykt4tDLmNcTSY700OHLRD3hd6EL7mtVh4uqvACTM5LbGS84oxND26ZNKv8W/E
+5KxKEVbC6UwUi+wYtJKeB18m7Cb9tOPvOwidacr5CZSslCh21ADJ0CMdekJNbptsZr73eohU+qc
LYNT+41d3mdwNDp4+wNvv7UvB/L+5Ok/J//kL/0AUEsDBBQAAgAIAG6HHUlMkSlE8wAAAGYGAABy
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAANgzMRXYMzEV3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgvYqq2NIhQtwcFBUFE
oXiYzU7T0DhTklnFtzcrnhSEWtHLHhNmvvnzhWTWehhNwYztydSOxkAv2ZjJQRSHEZK6RBtJGtgv
jDFHx49wOqe69WcWMnFzTTmjp/ugqwqVvKRXC/vcxjgczH5MDhy0Q94WehC+5KVYeLipwAkzOS17
peYZY2g+TZlslV8/4l+J96XivDStLZTGSDuBFZNWwsvg24Rd2nc/8rSJ1K0ukJtIyUKFbkUNHAIx
1mUm1OjWxWre7VR3mVLnbB6c2i/scj+DvWHv7R+8bfNeenJP/g3yX/2l3+d/A1BLAwQUAAIACABv
hx1Js479MfUAAAAMBgAAaAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzcy1z
dGRlcnIudHh0VVQJAANhzMRXYczEV3V4CwABBPUBAAAEFAAAAO2UTUsDMRBAz/ZXzNFexNTPBBHq
9lBBQRCxUDzMZqdpaJyUZFbx35sVT3qqW9FDjwkzb2bekIxbByMN6tScaDM6B3rNSp0dhGgxQBKb
aB2TeHZzpdTR8RNcTKhu3aWBTNzcUs7o6NHLskIhF9ObgX1uQxgOxj8me/bSIe8L3Ue+5kU0MLur
wEZmslLuSswLBt/0qJJJPtu/ic6ViKuStDJQEgP1AgsmqSIvvGsTdt1++InP60DdaYrcBEoGKrRL
auAQiLEuNaFGuypWc7+pHjKlztnEWzHf2GU/g72v29G/5U3/pTf9z7xt8l525B15G+RN/tJ3UEsD
BBQAAgAIAG+HHUnR+yth7QAAAKQEAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3By
b2dyZXNzX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADYszEV2LMxFd1eAsAAQT1AQAABBQAAADt
k01LA0EMhs/2V+TYXsRp/aCDCHV7UFAQRBSkh+xsOh06ZspMVvHfm5Veiqe1B0F6y4TkyZt3yKz1
MJ6CObdnU6sBfRRjLo5jchghi8u0SVkC+1djzOR0AZdzqlt/ZaEQN/dUCnp6DrKqUMin/GlhyG2M
o8Hs1+TAQTrko9JD4lteJgsvDxW4xExONKc17xhDsztlctJLv2zl3yXvteJam9YWtDHSXmDBLFXi
ZfBtxk7ttz/pbROpe90gN5GyhQrdihpQNmOtM6FGt1ZXy35bPRXKnWfz4MT+YOv/DI5GB9/+wLce
9/LvyX1u/AtQSwMEFAACAAgAcIcdScd+IrDvAAAADAYAAGoAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfdGltZXVwZGF0ZS1zdGRlcnIudHh0VVQJAANkzMRXZMzEV3V4CwABBPUBAAAEFAAA
AO2Uz0tDMQyAz+6vyHG7iN38wcoYzLeDgoIgoiA75PVlXVlNR5un+N+bJ948uYcIsmND8iX9Srpo
PYynYM7t2dRODNBbMebiOCaHEbK4TLuUJbB/NsZMTlcwW1Ld+rmFQtzcUino6THIpkIhn/K7hSG3
MY4Gi73JgYN0yHulh8TXvE4Wnu4qcImZnGhMc14xhqZHl0LyNf5N8l4zLrVoa0ELI/UCC2apEq+D
bzN20376SS+7SN3pCrmJlC1U6DbUwAkQY609oUa3Vaul360eCuXO2TI4sd/Y+j6Do9HB2x94+619
+f/k8YG8J/knf+kHUEsDBBQAAgAIAHGHHUkT5kgD8QAAAAwGAAB1ABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANmzMRXZszE
V3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgvYrpVaRChbg8KCoKIgniYzU7T0DhTklnFtzcr
nvS0FhSkx4SZb/58IZl3HiYzMMf2aGarCdBrNubkIIrDCEldoo0kDewfjTHV9AlOF9R0/sxCJm6v
KWf0dB90VaOSl/RmYZ+7GMej+Y/JgYP2yNtCD8KXvBQLDzc1OGEmp2Wv1LxgDO2XKdWg/PoZ/0q8
LxXnpWltoTRG2gqsmLQWXgbfJezTfviR502kfnWB3EZKFmp0K2rhEIixKTOhQbcuVvN2p7rLlHpn
i+DUfmOX+xntjXfe/sDbkPeyI/8OefrPyUP+0ndQSwMEFAACAAgAcYcdSfYgnGCEAAAAwAAAAGwA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdm9sdW1lY2hhbmdlLXN0ZGVyci50eHRVVAkA
A2bMxFdmzMRXdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy5CbFUaRCh1cRAEBwVxiOkZD8Kd
JBfFt7e+guvPz9eVAPMWzNIuWls3gO9szGoWxbsISX3CpyQlDhdjTN1cYb3FWwkbCxl52GPOLuCJ
9NE7xSDpY2HCJcZp1f0tE5P+yOOok/CO72LhfOjBCzN6Hdv4vFykofoCUEsDBAoAAAAAAGGHHUkA
AAAAAAAAAAAAAABaABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVVQJAANFzMRX
X83EV3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABhhx1JAAAAAAAAAAAAAAAAZAAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9VVAkAA0XMxFdfzcRXdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAGGHHUlidz6nygAAAN0BAAB5ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2ludGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUCQADRczEV0XMxFd1
eAsAAQT1AQAABBQAAAClkDFrwzAQhef6V9yYLMYqJCWiBFJ7SCAdS4fS4SxdFBHlZKQzIf++ctut
U/F4D9737r3d6OBxA2qtVxvdKKBbVuqpDtFggCQm0RCTeHYfSqlm/QnPBz7FrYYQnSsyZMEkua7r
avdvVEf96Aork7xSzujo+EN9KaaLhmIMZOeAp+fayCfvxoTiI797ObfxOgSarj2yDZQ0tGjOZKEB
YuxLJvRoLsQ2z2v1lilNe3XeiP7D1rCoHpazEtj+DvfdC4VcTPfC5TGEZfUFUEsDBBQAAgAIAGGH
HUkcSGwTgwAAAMAAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRy
YWNrL2FkZEN1ZS1zdGRlcnIudHh0VVQJAANFzMRXRczEV3V4CwABBPUBAAAEFAAAAJ3MsQrCMBCA
4b1PcaMu0hOsNIhQ6uIgCA4K4hDTazwIF0kuim9vfQXXn5+vKx6WLWBjVq2pEeidEdeLEJ0NkNQl
esakLP6KiHVzg82O7sVvDWSS4UA5W09n1kdvlXxMHwMzKSHMq+5vmYX1R54mnaPsZYwGLsceXBQh
p1ObnpcNPFRfUEsDBBQAAgAIAHKHHUmddQUr4gAAAOQDAAB3ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA2jMxFdozMRX
dXgLAAEE9QEAAAQUAAAA7ZHBSgNBDIbP7lPkWC/itLbSQYS6PSgoCCIKxUN2Jp0OHZMyk1V8e2el
N0/aox4DyfeR/1/0AcZzMDM7ndvJFOi9GHN+ksRhgqwu006yRg4rY8zk7AUultT14dJCIb2jUjDQ
rYRQN67q0dZCPUzkm8XvwYpZW+F1DH1GjcJPUTetvO4SDdM1sk+ULbToNuThFIixq07o0G2JfTlE
TvpYKN/wWpbRqf3GtjBqjo4PM/zntjfMfmRgvw/u6y9UCpI/Kpf7lP4aOXLUAflQ6bXbIXcLz/ct
OGEmN/Rdd94wRd98AlBLAwQUAAIACAByhx1JmSOOnIQAAADAAAAAbgAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9uZXR3b3JrU3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQJAANozMRXaMzEV3V4CwAB
BPUBAAAEFAAAAJ3MPQrCQBBA4T6nmFIbYYxGsogQYmMhCBYKYrFuxnVgmZH9Uby98Qq2j8fXFQ/z
FrAxy9bUDdA7Ia5mQZ0NELOL9NSYWfwFEevFFdZbuhW/MZBIhj2lZD2dOD96m8lr/BiYSAlhWnV/
yyycf+Rx1FllJ3c1cD704FSEXB7b+Lxs4KH6AlBLAwQUAAIACABzhx1JAXLWXOQAAABMBQAAcgAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJyLnR4
dFVUCQADaszEV2rMxFd1eAsAAQT1AQAABBQAAADtk0FLA0EMhc/ur8ixXsRp1dJBhLo9KCgIIgri
ITuTToeOSZnJKv57Z8WbtxZvewy89z3ySJZ9gOkCzIU9X9jZHOizGDM/SeIwQVaXaSdZI4dXY8zs
7A0uV9T14cpCIb2nUjDQnYRQFdfVtLVQjYl8s9wfrJi1FV7H0GfUKPwcddPK+y7RMN0g+0TZQotu
Qx5OgRi7mgkdui2xL4eEkz4Vyre8llV0av+wLUyao+PDEsbe9kpg/1vcz16oFCR/VS73KY3kkfwf
5MhRB+RjpdcfGu7bwstDC06YyQ1/VTUfmKJvvgFQSwMEFAACAAgAdIcdScuyp1XqAAAApAQAAHIA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX3RydWVfZHVyaW5nX3BhdXNlLXN0ZGVyci50
eHRVVAkAA2vMxFdrzMRXdXgLAAEE9QEAAAQUAAAA7ZNNSwNBDEDP9lfkaC/iWL92EKFuDwoKgohC
8ZCdTadDx6TMZBX/vbOlN0+6eikeE5KXzBsy7TwcVWBO7UllJ+dA79mYs4MoDiMkdYnWkjSwnxtj
JscvcDGjpvOXFjJxe0c5o6enoMsalbykDwv73MU4Hk1/TA4ctEc+FHoQvuGFWHi+r8EJMzktuVLz
hjG0A6Zk0u36t+J9qbgqTSsLpTHSILBi0lp4EXyXsN9240de15H66Bq5jZQs1OiW1MIhEGNTZkKD
blWs5mGvesyUemez4NR+YZf/Ge2N/739irfqz+5l18nfufFPUEsDBAoAAAAAAGKHHUkAAAAAAAAA
AAAAAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNl
L1VUCQADSMzEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAYocdSWBHYQe3AAAAkgEAAJEA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2Ut
bW92ZS10by1vdGhlci1kb2N1bWVudC1zdGRlcnIudHh0VVQJAANHzMRXR8zEV3V4CwABBPUBAAAE
FAAAAKWQsQoCMQyGZ+8pMuoinqJiEUHPQUFHcRCHXBtrsabS5hDf3ipubpotkP/7yD9vLPQnUI7U
cKJ6A6B7Kstx1weNHqLoSLcQxbE9lHlGR5guqW7sTEEi2VJKaGkTrM0Xixy6KMhBT6aY/w4WjFIF
PjnbRBQXeO/kXIXrzdNrWyEbT1FBhfpMBnpAjHV2Qo36QmzSP3KSXaK45lNYOi3qi62gXbQ6fxnY
fIp7/4VCNsRH5nLjfad4AlBLAwQUAAIACABihx1J/9ecYtoAAACsAgAAjwAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXdpdGhpbi1k
b2N1bWVudC1zdGRlcnIudHh0VVQJAANHzMRXR8zEV3V4CwABBPUBAAAEFAAAAM2RwUoDQQyGz/Yp
crSX0rW0pYMIdXtQaEEQURAP2dl0OnSalJms4tubFW8eF8HcEpIvf/6suwBXK6gWbr5y0xnQR6mq
5SSJxwRZfaazZI0cXiuLxRtcb6jpwo2DQtzuqBQM9Bz1UKNSkPzp4JK7lMaj9T8kR47aIx+NHoXv
eS8OXh5q8MJMXq1mPe+YYjtIv/7I30oI1nFrQ0cHNphoEFgxay28j6HL2Kv99kdO50R9dofcJsoO
avQHamEKxNjYTmjQH83VMuyqp0K592wTvbpfbPvP6OIv//4FUEsDBBQAAgAIAGKHHUkwKpA83QAA
AAYDAACPABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNl
L3BhdXNlLXJlbW92ZS1mcm9tLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA0jMxFdIzMRXdXgLAAEE
9QEAAAQUAAAAzZHBSgNBDIbP9ilyrBfpWlrpIELdHiwoCCIWpIfsbDodOiZlJqv49mbFm4ce9tLc
EpIvf/4suwDXC6jmbrZwkynQV6mqm6skHhNk9ZmOkjVyeK8s5lu4XVHThTsHhbh9olIw0FvUfY1K
QfK3gzF3KV2OlmdIjhy1R74YPQqveScONs81eGEmr1aznk9MsR2kX//kP0oI1nFvQwcHNphoEFgx
ay28i6HL2Kv99Uc+jon67AG5TZQd1Oj31MIEiLGxndCgP5irZdhVr4Vy79kqenX/2Paf0cV5/v0U
+QdQSwMEFAACAAgAYocdSbYHIW6EAAAAwAAAAIEAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxh
eWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGxheWJhY2tSYXRlLXN0ZGVyci50eHRVVAkAA0jMxFdI
zMRXdXgLAAEE9QEAAAQUAAAAncyxCsIwEMbxvU9xoy5iRCsNIpS6OAiCg4I4xPQaD8KdJFfFtze+
gt/45+PXjgEWDZjarho7XwK+szHrWRTvIiT1CZ+SlDhcTVl9g80O72PYWsjI/QFzdgHPpI/OKQZJ
HwsTHmOcVu3fMjHpjzwVnYT3PIiFy7EDL8zotbTyeblIffUFUEsDBBQAAgAIAHSHHUnAo9KWhAAA
AMAAAAB4ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ByZWxvYWRfcmVmbGVjdHNfbm9uZV9hdXRv
cGxheS1zdGRlcnIudHh0VVQJAANszMRXbMzEV3V4CwABBPUBAAAEFAAAAJ3MPQoCMRBA4X5PMaU2
Qlx/SBBhWRsLQbBQEIuYnY2BMCPJRPH2xivYPh5fVzzMNaiVWWrTasB3Vmo9i+xshCQu4ZOTBPJX
pVS7uMFmh/fitwYy0nDAnK3Hc5BHbwU9p4+BCZUYp033txwoyI88VT0w7WlkA5djD46J0Elt9XnZ
GIbmC1BLAwQUAAIACAB1hx1JyXwQ+OUAAABMBQAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9y
ZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5LXN0ZGVyci50eHRVVAkAA23MxFdtzMRXdXgLAAEE9QEA
AAQUAAAA7dNBS0MxDAfws+9T5KgXsW4qK2OwvR0UFAQRBfGQ12ZdWU1Gm6f47e0Tb9428OKOheT3
pyGZ9wHOJ2Au7cXEjs+APooxV6dJHCbI6jJtJWvk8GKMGY1fYbqkrg8zC4X0jkrBQLcSQq1Y1KaN
hdqYyDfz3WHFrK3wKoY+o0bhp6jrVt62iYbXNbJPlC206NbkodqMXc2EDt2G2Jd9wkkfC+UbXsky
OrW/bAvHzdHJfgmHue2UwP5ncN//QqUg+bO63Kf0d7I5yP9Ijhx1IB+qXm9o2G8Lz/ctOGEmN9xV
rXnHFH3zBVBLAwQUAAIACAB1hx1Jrn0u7+8AAAAMBgAAegAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAANuzMRXbszE
V3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgvYtqqNIjQbg8KCoKIgniYzU7T0DhTklnFtzcr
nvS0VvCyx4SZb/58IVm0HiZzMKf2ZG5nBugtG3N2FMVhhKQu0U6SBvZPxpjp7BnOV1S3/sJCJm5u
KGf09BB0U6GSl/Ru4ZDbGMejxa/JgYN2yLtCD8JXvBYLj7cVOGEmp2Wv1LxiDM23KZNe+fUr/rV4
XyqWpWlroTRG2gusmLQSXgffJuzSfvqRl12kbnWJ3ERKFip0G2rgGIixLjOhRrctVvN+p7rPlDpn
q+DU/mCX+xkdjAdv/+Ctz3sZyAP5L8h9/tIPUEsDBBQAAgAIAHaHHUnxXpzJ9AAAAMAGAAB2ABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZGRhdGEtc3RkZXJy
LnR4dFVUCQADcMzEV3DMxFd1eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KeZoL2LaVWkQoW4PFioI
Igqlh9nsNA2Nk5LMKr69WfEi3twVethjwsyXf76QzBsLkxmoS30x08UE6D0pdXXmg0EPUUykQ4ji
2K6VUtNiA9cLqhp7oyER1/eUElp6drIrUciG+KHhlBvvx6P5D/L0KMiOnbTIx0x3gZe8DRpeHkow
gZmM5L1c84be1Z3yy3f8VbA2V9zmpr2G3OipE1gwShl462wTsU375Se8Hjy1qzvk2lPUUKLZUQ3n
QIxVPhMqNPtsNXWb6ilRbJ0tnBH9i53vZ3QyHrz14q34t/cykAdyH+S//6V95v8EUEsDBBQAAgAI
AHeHHUlvjqA07AAAAKQEAAB6ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVy
aW5nX2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAkAA3HMxFdxzMRXdXgLAAEE9QEAAAQUAAAA
7ZPBSgMxEIbP9inmaC9i6lZpkELdHhQUBBGF4mE2O01D40xJZhXf3qx40tPagyAeE2a++fOFWXQe
JjMwp3Y6s1UF9JqNOTuK4jBCUpdoJ0kD+5Ux5qR6gvMlNZ2fW8jE7Q3ljJ4egm5qVPKS3iwcchfj
eLT4MTlw0B55V+hB+IrXYuHxtgYnzOS03JWaF4yh/TJlOii/fsa/Fu9LxUVp2loojZH2AismrYXX
wXcJ+7QffuR5F6k/XSK3kZKFGt2GWjgGYmzKTGjQbYvVvN+r7jOl3tkyOLXf2OV/Rgfjf2+/4G3I
vvx18pAdfwdQSwMEFAACAAgAeIcdSVK/msjvAAAADAYAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvcmVhZHlTdGF0ZV9kdXJpbmdfcGxheWluZy1zdGRlcnIudHh0VVQJAANzzMRXc8zEV3V4CwAB
BPUBAAAEFAAAAO2UQUtDMQyAz+5X5LhdxM65sSLCfDsoKAgiCsNDXl/WldVktHmK/94+8ebJPUSQ
HRuSL+lX0kXrYTwHM7VnczuZAr1lY2bHURxGSOoS7SRpYL8yxpxOnuF8SXXrLyxk4uaWckZPj0E3
FSp5Se8WhtzGOBos9iYHDtoh7ws9CF/zWiw83VXghJmclljJecUYmh5dMunX+Dfifcm4LEVbC6Uw
Ui+wYtJKeB18m7Cb9tOPvOwidacr5CZSslCh21ADJ0CMdekJNbptsZr73eohU+qcLYNT+41d3mdw
NDp4+wNvv7Uv/588O5D3JP/kL/0AUEsDBBQAAgAIAHiHHUnBXwv8hAAAABoBAABsABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQJAANzzMRXc8zE
V3V4CwABBPUBAAAEFAAAAM3MPQrCQBBA4T6nmFIbYTQasogQYmMhCBYKYrFuxnVgmZH9Uby98Ra2
j8fXFQ/zFnBllq2pG6B3QmxmQZ0NELOL9NSYWfwFERf1FdZbuhW/MZBIhj2lZD2dOD96m8lr/BiY
SAlhWnV/KLNw/pHHUWeVndzVwPnQg1MRcnls4/OygYfqC1BLAwQUAAIACAB4hx1JiBfTotYAAADC
AgAAhAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9zcmNfcmVmbGVjdHNfYXR0cmlidXRlX25vdF9z
b3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUCQADdMzEV3TMxFd1eAsAAQT1AQAABBQAAADVkD9P
wzAQxXc+xY0wpHbaFBJvVSvUgQFFZaoYXPtCrPpPsC98fg6FmQ0JdMv76b2T3t25vlfbTjXtSm62
r3A8nZ57fJ+xEAzu7Ug0fePB2R4Nug/ssUwpFtxr7y/aXBXkxbAwcp5p8aGRDdxizilDVa+7TXsH
A+uvkBLCJ6P9mAqptpVSjBS8KBh0JGeKwHBBa9FWJkXCSCKgdbpCj4GpiCGlm/PP3RkPc5geXdT+
pX/aRT4gJMKdtVyxKNCLgHr9sJI8Na9xFubsf6dk948f3P3VB38CUEsDBAoAAAAAAGKHHUkAAAAA
AAAAAAAAAABVABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUCQADSMzEV1/NxFd1eAsA
AQT1AQAABBQAAABQSwMECgAAAAAAYocdSQAAAAAAAAAAAAAAAGMAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvdHJhY2svdHJhY2stZWxlbWVudC9VVAkAA0jMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAGKHHUlpWwv6/gAAAOwBAACCABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3Ry
YWNrLWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUCQADSMzEV0jMxFd1
eAsAAQT1AQAABBQAAAClkUFPwzAMhc/0V/gIB6qm09Y1QpO27gASSGgT4lDtkKZOWi0kU5wKxK/H
A3HhyHyzJX/v+bkVCzmvZTHL6+XyAHdc0OzWmz2suMC4iYZn9P3o7Q4dKsI9Jglt8VGZfl6XXadN
VRxg44I+QgGDIvDB335iDBDRgA6TTzDL1pOFsoZfOcB3EqLKeU05iElHPIWYWKYVQpQLtvLgTVhJ
cMFaHgMlFRPlef4P1Ba7yTKLMD0hkbL4+EP9ti2BFx32l4DP5prgzWinqNIY/OuYhia8nRyeu3vl
e4dRQqP0gD0HhV51rAmd0kfOly676oUwnvPajpq/85ct4Tq7usm+AFBLAwQUAAIACAB4hx1J+xMZ
9LwAAADsAQAAYwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy92aWRlb18wMDgtc3RkZXJyLnR4dFVU
CQADdMzEV3TMxFd1eAsAAQT1AQAABBQAAAC1kD2LQjEQRWv9FVPuNmJ2/QwiuM9iBS3FQizmJWMM
ZieSzGPx3xvFzk6xvDD3HObOGgdfY1AD3R/r3gjoPys17IRoMEASk+gUk3h2W6XUd28HkznVjZtq
yCQryhkdLaNz5eKnlI4aSjGQbc+eBwsmqSLvvWsSio+88XKo4t8p0DX9IttASUOF5kAWukCMdXFC
jeZIbPMrcpJ1prTgfZx7I/qBreGj3fp8ycD2PtztLxRyMZ0Ll5sQ3km+AFBLAwQUAAIACAB5hx1J
uqFIRYQAAADAAAAAbAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy92aWRlb192b2x1bWVfY2hlY2st
c3RkZXJyLnR4dFVUCQADdczEV3XMxFd1eAsAAQT1AQAABBQAAACdzDEKAjEQQNF+TzGlNsLoqiSI
sKyNhSBYKIhFzM7GQJhIMlG8vfEKtp/P64qDuQJc6aXSrQJ6Z8T1LERrAiSxiZ4xiWd3RcRFe4PN
ju7FbTVk4uFAORtHZy+P3gi5mD4aJlxCmDbd37JnLz/yVHUfec9j1HA59mAjM1mprT4vE/zQfAFQ
SwMECgAAAAAAY4cdSQAAAAAAAAAAAAAAAFIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvVVQJ
AANJzMRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABihx1JEU44xhsBAACCBgAAZgAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb18wMDEtc3RkZXJyLnR4dFVUCQADSMzEV0jMxFd1
eAsAAQT1AQAABBQAAADtj8FOAjEQhu88xRzhwC6tLCwbNcFVEw5EEg6aELIp3bFUa7uZdjX79pYQ
IwcfQA23fyaT759v3irgM2CTIpsVozHgh2dsmhgnhQEKkrBxFLRVG8YYn2zh8hZ3rbouwKOtl+i9
UPiow74UAZWjroC+bY0Z9Oa/kKytDgfkOtK1swv77Ap4WpUgnbUoQ9zFm3dhdN3bfPETNuVb0AHf
hO+srNYYVuQapNCB18oKY7AGJLoaMj7NM+i/3mt1Izw+7F4i9I7IUbU4YqNLPYC+Pp1EgHTtWpJY
CrnHtHSES6y1+E5Dlk14wsejNFYHF7oGfboyokNKY9kxVfPDf4kEoy0C57OL/ybBWXYqUbqm+xMW
ozw/W5wtzhY/WHwCUEsDBBQAAgAIAGOHHUmRFiiq3gAAANACAABuABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRp
by1lbGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVyci50eHRVVAkAA0nMxFdJzMRXdXgLAAEE
9QEAAAQUAAAA1ZAxTwMxDIV3foVHGK7JlWt7zVa1Qh0Y0KlMFUOauFxUJzkSH7+flGOGCQnk5T37
WfrsY71Ui7WSi5lsli+wPxyeOnwbMTOc3eueefiyO2c7NOjescM8xJBxq4lO2lwUpGlgoS/54qY5
NLKBW0wpJqjq+fq+vYNz0deQEoKi0dTHzKptpRQ9exIZvQ7sTBboT2gt2srEwBhYcI+VHq2LFRL6
aycnc3P8Hr/Y3eiHBxc0PXePm1Bu8JFxY22hzAr0JKCer2ayVF3WShbGRL/Gufpfbw4j0U/8f+LP
n6AfUEsDBAoAAAAAAGCHHUkAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIvVVQJAANDzMRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABQ
hx1Jwhf1FaIAAABPAgAARgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhl
ZERCL2lkYmZhY3Rvcnlfb3BlbjExLXN0ZGVyci50eHRVVAkAAyfMxFcnzMRXdXgLAAEE9QEAAAQU
AAAA7Y+xCsIwFEX3fsUb28WAiJRs2nYQFbEFO0qavCGQ9oX0pfj51tLJL3BwvHDO5d6qrm+1hAMz
9p6BCZSZ1KARFGjqvUNGAzqGkUIiHuRij6MoFStRtY1osTtbFg3FoPGTCgoormSimzE7GHyhMZ0Y
MUwYRHO/WMZTeSyWwo32Pt3meQYSOiIHa4GUM9IsipRfjpTrwDTagfe7J2dJ9T/xIyfeUEsDBBQA
AgAIAFCHHUm8cWzVmQAAAMUAAABDABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvaWRiaW5kZXhfY291bnQtc3RkZXJyLnR4dFVUCQADKMzEVyjMxFd1eAsAAQT1AQAA
BBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYh
MDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRx
xijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAUIcd
SbxxbNWZAAAAxQAAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9pZGJpbmRleF9jb3VudDItc3RkZXJyLnR4dFVUCQADKMzEVyjMxFd1eAsAAQT1AQAABBQAAABd
jrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYhMDCBtrMe
DYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRxxijU8+YY
L/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAUIcdSbxxbNWZ
AAAAxQAAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJp
bmRleF9jb3VudDMtc3RkZXJyLnR4dFVUCQADKMzEVyjMxFd1eAsAAQT1AQAABBQAAABdjrEKwjAU
Rfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYhMDCBtrMeDYIGQ0Pw
yGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRxxijU8+YYL/W5WoM7
E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAVYcdSbxxbNWZAAAAxQAA
AEkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3Rz
dG9yZV9jb3VudC1zdGRlcnIudHh0VVQJAAMxzMRXMczEV3V4CwABBPUBAAAEFAAAAF2OsQrCMBRF
937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4+dbSyfHCOYfbtO2jlXBixiEwMIG2sx4NggZDQ/DI
aMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/VVFEcSeb/IK50eIHre3FhHHGKNTz5hgv9blagzsT
Qr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfDm4vsC1BLAwQUAAIACABUhx1JvHFs1ZkAAADFAAAA
SgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0
b3JlX2NvdW50Mi1zdGRlcnIudHh0VVQJAAMwzMRXMMzEV3V4CwABBPUBAAAEFAAAAF2OsQrCMBRF
937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4+dbSyfHCOYfbtO2jlXBixiEwMIG2sx4NggZDQ/DI
aMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/VVFEcSeb/IK50eIHre3FhHHGKNTz5hgv9blagzsT
Qr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfDm4vsC1BLAwQUAAIACABUhx1JBIrpA58AAACKAQAA
SgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0
b3JlX2NvdW50My1zdGRlcnIudHh0VVQJAAMwzMRXMMzEV3V4CwABBPUBAAAEFAAAAN2PsQrCMBRF
937FG+1iQERKNm07iIrYgB0lTd4QSPtC+lL8fGvp5Cc4Xjj3cG/dNPdGwpEZ+8DABNpOejAIGgz1
wSOjBZPiSDETT/Kpx1FUmrWoWyVa7C6OhaIUDX5TSRHFjWzyM+YGi2+0thMjxgmjUI+rYzxXp3IR
bk0Im11R5CChI/KwCqScEbVUpPzpSLkO3CQ38GH/4jyr/+HEB1BLAwQUAAIACABWhx1JvHFs1ZkA
AADFAAAASwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9i
amVjdHN0b3JlX2RlbGV0ZTUtc3RkZXJyLnR4dFVUCQADNMzEVzTMxFd1eAsAAQT1AQAABBQAAABd
jrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYhMDCBtrMe
DYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRxxijU8+YY
L/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAWYcdSbxxbNWZ
AAAAxQAAAE4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJ0
cmFuc2FjdGlvbi1vbmNvbXBsZXRlLXN0ZGVyci50eHRVVAkAAznMxFc5zMRXdXgLAAEE9QEAAAQU
AAAAXY6xCsIwFEX3fsUb28WAiJRs2nYQFbEBO0qavCGQ9oX0pfj51tLJ8cI5h9u07aOVcGLGITAw
gbazHg2CBkND8MhowaQ4UczEi3wacBK1Zi2aTokO+6tjoShFg79VUURxJ5v8grnR4get7cWEccYo
1PPmGC/1uVqDOxNCvi/LAiT0RB62gJQLolZFyj9Hyu1gntzIx8Obi+wLUEsDBBQAAgAIAF2HHUkE
iukDnwAAAIoBAABYABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
dHJhbnNhY3Rpb24tY3JlYXRlX2luX3ZlcnNpb25jaGFuZ2Utc3RkZXJyLnR4dFVUCQADQczEV0HM
xFd1eAsAAQT1AQAABBQAAADdj7EKwjAURfd+xRvtYkBESjZtO4iK2IAdJU3eEEj7QvpS/Hxr6eQn
OF4493Bv3TT3RsKRGfvAwATaTnowCBoM9cEjowWT4kgxE0/yqcdRVJq1qFslWuwujoWiFA1+U0kR
xY1s8jPmBotvtLYTI8YJo1CPq2M8V6dyEW5NCJtdUeQgoSPysAqknBG1VKT86Ui5DtwkN/Bh/+I8
q//hxAdQSwMEFAACAAgAYIcdSbxxbNWZAAAAxQAAAEYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
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
zNtUu02121S7TbXbVLtNtdtU+5mpNqcaF1uHCy8no2weZK+gC/IGh8tvL3yMMrlncd2s+Dbf8log
rLxTJEbjlzRU8z20Hc2NvM6j/zFkMDJZ1Btn5JwaSDO3NxNEwbl7y0XC2rtzI/nlxR10foQ2WM1B
kmft1fsW6r0qxtyLy13u6Wua+HOqh/5je/e+BeIt+/m+RVOPUSX8/agS+VZUiX5DqsRejCppL0eV
9JelSnpLlVqq1FKlliq1VKmlSi1VaqlSS5VaqtRSpZYqtVSpTpWMliq1VKmlSi1VaqlSS5VaqtRS
pZYqtVSppUotVWqpUp0qmS1VaqlSS5VaqtRSpZYqtVSppUotVWqpUkuVWqrUUqU6VbJaqtRSpZYq
tVSppUotVWqpUkuVWqrUUqWWKrVUqaVKdaqEUcuVWq7UcqWWK7VcqeVKLVdquVLLlVqu1HKlliu1
XOkBV5KnxgzftX9uuuVKLVdquVLLlVqu1HKlF+VKGiFeyPM/Cg2R1rY3/cHpdWl+48TN3DzLsVBT
OqQR5BlsY4N5IjAsMrd1vkP1xmRIN03Pyi3og9CMF5qszt/JhReHVlaOzvs65Wn8x6YFFPPZlOdp
SiyJzROffjJ9AZXJLvTlabi+QlKeJrClIi0VeZSKkMrpUcJuvVk0lbFhP5GHa3ZTeXzoH/kMqZ8X
oNj/Vg/9LcvAlm8hkNHv2XZ+YigQAKmVOJZZ/F8cb1YaXZZZy7p3aMQMTbI0dpifWZufYvgy40h7
uQOU9Bc+QAlXTyHrD0dipSTbnyfRHbiuJ1BaGubHik64n20aN88xJHk5Q9KXNqQ4iuoUhugXLvMR
cQC6OnriDGzXBf5W6wKPHvweEuyhdl2gXRdo1wW+0bqA2lnPnf0b26B7tZWCXeaoy/46KwVqZ4Vf
2IPt1ZYOdrGHaT1n6aCKAGOAoDeGYGjB17tkGCcjLqJiKmLPtr4J4gWESgmM4SowQmCsGE2BId8N
dhgrH8Fx90UPFxgfx2cYNbtRfa+2XPEYPMNHBvaLcNNP4jTNc5yfF3zBD+t3xcvqo5Utz3mausXJ
0JQywFJ7XgwmsldbtdgBEdOQphb1bPv05HjJA0qXQZF3VQ6F1jW1s6qz78/nNhOzu7qGsAMAHPps
VwAlgrpmJiZ7AEQXQPAfZimp+RlZf/6lJPq3Xkpi328pSftWS0n6N1xKMl5sKcl8uaUk64WZq1ZZ
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
TPsUIcgLSfiUs3TdkeTFYgQdybdT69+SCoky9R7l6sEJqCZ3ATMhSRPGrxjca7QRTFcYzXBRVVqe
m2k0Co68igL3UGHM0lIdm/KnNCgTGXmZZDQrJOUtqrlHJQRQRi93GRclzIFYlXQNBPtdUs3HwkmQ
TRIT/CQyDOW/dH1TYVVl7S7N0VPj52mksqCqKOu517AryDH6VBKCuXLhtDjikRQf4+pTORnWzhJy
fM/V92apTHhjTDFUnVCGJgdQxEp53UhIMzhegCxbd3rI7D3CD5GfIUXVDdaxm1nxdWgnKQSX35uc
w4xhMcY5fpQfFzXOVF5y6pNxJBc+aGY1MB4hJIB2AH0DgeXSdS6/38TfZlejLrW6bqlsoeVTJlb9
uhryRihkNH8ZytUdDh+WiRqoZUZ3bI01Sz9QcX0D/GcFzTIOoPK83oPWqa+jH7R/AFBLAwQKAAAA
AABYiB1JAAAAAAAAAAAAAAAABgAcAG1lZGlhL1VUCQADKM3EV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAfYcdSeAi4cDaAAAAUgIAAB8AHABtZWRpYS9hdWRpby1kYXRhLXVybC1zdGRlcnIu
dHh0VVQJAAN9zMRXfczEV3V4CwABBPUBAAAEFAAAAM2RQUsDMRCFz+6vmGO9iNHW0lCEdnuooCCI
KJQeZpNpGhpnSjKr+O/Nijdv9uJx4L3vMe8t+gBXMzA3djKzkynQRzFmepHEYYKsLtNRskYOG2PM
9XgL8xV1fbi1UEgfqBQMdC8hVMWymg4WqjGRbxZ/BytmbYV3MfQZNQq/RN238nZMNFxrZJ8oW2jR
7cnDJRBjVzOhQ3cg9uWUcNLnQvmOd7KKTu0vtoVRc3Z+UgL7n+K+/0KlIPmzcrlP6X+SI0cdkE+V
XhcY2rHw+tiCE2ZywypV844p+uYLUEsDBAoAAAAAAAeIHUkAAAAAAAAAAAAAAAATABwAbWVkaWEv
bWVkaWEtc291cmNlL1VUCQADjszEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAB4gdSagS
+D2LAAAAmwAAAEgAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXN0YWxsZWQtaG9s
ZHMtc2xlZXAtYXNzZXJ0aW9uLXN0ZGVyci50eHRVVAkAA47MxFeOzMRXdXgLAAEE9QEAAAQUAAAA
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
HABzcHV0bmlrL0NvbmZvcm1hbmNlL1VUCQADIM3EV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAA
AAAAOYgdSQAAAAAAAAAAAAAAACMAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25z
L1VUCQAD7szEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAOYgdSQAAAAAAAAAAAAAAADsA
HABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjlfRXF1YWxpdHlfT3BlcmF0
b3JzL1VUCQAD7szEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAOYgdSQAAAAAAAAAAAAAA
AF0AHABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjlfRXF1YWxpdHlfT3Bl
cmF0b3JzLzExLjkuNF9UaGVfU3RyaWN0X0VxdWFsc19PcGVyYXRvci9VVAkAA+7MxFdfzcRXdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAHWIHUkaBnptVlYAANv/AQB4ABwAc3B1dG5pay9Db25mb3Jt
YW5jZS8xMV9FeHByZXNzaW9ucy8xMS45X0VxdWFsaXR5X09wZXJhdG9ycy8xMS45LjRfVGhlX1N0
cmljdF9FcXVhbHNfT3BlcmF0b3IvUzExLjkuNF9BOF9UNS1jcmFzaC1sb2cudHh0VVQJAANdzcRX
7szEV3V4CwABBPUBAAAEFAAAAOyda3PbxpKGPy9+BT5s+VCOJeN+YWlVJVFUokS3FWk7lZQLNQCG
Eo5BgAFAXfbXb88MSIIgKXFsyclJ2nXKoUmg5+259tMYnLkq8oiWZVdd/nM8HU+uaRbTYlhQqv6u
wx/rs3JFqtv2pfDn/cc8nY5p+f7j5dmH8/77t++X71dOY5pVySihRXdzKcpHWpRJnrUL0JReHlN1
+Dihyz/96jm7jqV2LkiV3NEdUFdAMepVy6Wrx+o2z4QP5mflmpaTPCuTMF0yV96qvxuO/1n5UNJC
PT1uq7A1XVGOSUXfD5NxS4ih6c6u5u0avqq7XU3r2u6eb/nqruZqmnI5UNd5dk4iFX76VdW1Pfif
rXZ060T3NX8HJE7yolq5S9eVwyzPHsf5tFQ/fGhoPDLcY9vr93d7vn6y2z8yD3etk0N31z82NNvU
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
BL9D1mZETCgW6XkkL1GQilYKBkfBmrkwSRIaB/AabCUI1WCJ2O8z9T5efdhRl+MHHjV/+wsRq8tf
R1td9JywoXnb402/G07YeuGgxfNQeenCXAMOpAJlkOoASkggu68TO33I1E6/1NNOo0xaFMuxUlKj
9BYHAl5gfTdcq3V2fVIP3kp2Hf+MZdV4q1UroHp58JNknR7UD/+zhoZrt4mmlpNa7yW6wn+N8i9Q
SwMECgAAAAAAOYgdSQAAAAAAAAAAAAAAAGYAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJl
c3Npb25zLzExLjlfRXF1YWxpdHlfT3BlcmF0b3JzLzExLjkuNV9UaGVfU3RyaWN0X0RvZXNfbm90
X2VxdWFsc19PcGVyYXRvci9VVAkAA+7MxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAHWI
HUnbJkz5w00AANW6AQCBABwAc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS45
X0VxdWFsaXR5X09wZXJhdG9ycy8xMS45LjVfVGhlX1N0cmljdF9Eb2VzX25vdF9lcXVhbHNfT3Bl
cmF0b3IvUzExLjkuNV9BOF9UNS1jcmFzaC1sb2cudHh0VVQJAANdzcRX7szEV3V4CwABBPUBAAAE
FAAAAOyda3OjRrPHXx8+BS9O7SPvrmzmwk3l45SuibO+lWV7U0mlqAEGm7NIKIB8OZ/+9ACSEJJs
s+vdJ09qXCmvIqD73z23/sFYukhij6dpR13/Gcwns0s+9XlylXCu/oEwMew/lQuW3dVPhZ+Dmzia
T3h6cHN+cn06PHh/sH69cuzzaRYGIU86u70oNzxJw3had/DTTz8p/djn6tXTjK8f/M0y2gZVW2cs
C+/5HuhLwJF6UQvq4im7i6cQBUIYorjk6SyepqEbrZlL79Q/sIjyOuWJejyo69A1pCgDlvGDq3BS
E4I1ZLQ1q41tFZkdTevo1r5hGGpbMzVNOR+r22I7ZZ4Kh35TkbYP/+lqC9ERsjV7DyTO4iTbuAoh
pTuNp0+TeJ6q19cVjT1sDnRrOGz3bTRqD3uk26ajrtm2B1jTiWZoxOwpiiKUq90H9oWr43DqcbUX
x1lH1Q1N09SUe/HUTxWln7D0jvvq1V3Cmb/0oUGLhemMZd6d+teczyEHXjzZZ7NZxPcnLJy2s/wC
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
vz2104E1BuoyzdpbtadYNEP2aQNephUq3q+n/UKHFtIcb3JfglcpRGfFOEu8u3I79dFtz/K8AObw
o58vfj3VQSohNXVd0rvt6aCv1+vdHozOLr3yARNXXpQazEHboLqHMXn/aZ1aqnc8QVm8wta6cneC
Z5xm56qab0+UfUDBMhn1aU3MxJtPSwqZtqfVeJpgdXzjqIZTrc+PKHyKlMR0Ghv21zBMBnxzCjd8
Vwwul9rWHFfsmN8Qrhqbw1Vzs6G2CaE2VIcCoQ50LhYrP7F4hKE2htoYamOojaE2htoYar8s1LZU
gzF9MJ3lxCpbLrLn0ARlgYdptVH5W1Rc8zT7rFiWzdRwhXP3FDVb+iaNwQJfXa7mWrwvV/99iGBE
sGgZ0jdgTFU1neXFhFF4Qm8YD1j3bmkUU/GYykqfV2CDKy9SC5s3jZ9CB7E87/JzOD58ehX33u22
X8du+fgMgIxc4A9dZjAIVoDMqyheTD6vUtQqVCJvh0raa6GS/oqoZGwMlczNoZK1WVSyEJUQlRCV
EJUQlRCVEJUQlRCVEJUQlRCVEJWaqGQjKiEqISohKiEqISohKiEqISohKiEqISohKjVRyUFUQlRC
VEJUQlRCVEJUQlRCVEJUQlRCVEJUaqKSi6iEqISohKiEqISohKiEqISohKiEqISohKjURCWiIish
KyErISshKyErISshKyErISshKyErISs9YiXxqzGHP+LXTSMrISshKyErISshK23066Zt3fcHrPxS
aFhpO51FXzg9O1p+wH+Us4xyXFX2W6ht3fVtY2GBZSAw+TnJWbyjW9Iw5BDHd8saDMBowSpPpr+/
Uxqvfgpz7re3n0YeUxp5QIrzYuR5nhMTsHnm1c/GF3BZWwdfnqfrCUh5nkFEEUSRlSiiAYocXh4j
iiCKIIogiiCKIIogiiCKIIogiiCKIIq8JYroiCKIIogiiCKIIogiiCKIIogiiCKIIogib48iBqII
ogiiCKIIogiiCKIIogiiCKIIogiiyNujiIkogiiCKIIogiiCKIIogiiCKIIogiiCKPL2KGIhiiCK
IIogiiCKIIogiiCKIIogiiCKIIq8PYrYiCKIIogiiCKIIogiiCKIIogiiCKIIogib48iDqIIogii
CKIIogiiCKIIogiiCKIIogiiyNujCP+9+lkNdg/7/Odqip1RFt1Cl3sGiugDqAQvZzEL5hlkAxWp
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
H2KPDgYd7wh8iffNP87UN3+zJYnNpmQRViR1+D9gXuSOa7spvwTzCaVFM73P/N2WS3/belMuaJsB
4+uffiwLrdxIWlTZgnsZjVmgbYaRY++QXPmPDoTvf3t6tws1BnyZpJ2Dys+VMG1K94ROM1S938/H
OYEZwra3fAAlXOoVt+m8r8W++ZOHoel5AeTwk1+ufj8nABWhCjoXDR+GBPANh8OHwfzi2it+SeQ0
B6UHG6QtKh9WLb9/eImXqoEnWZZw2IuuPF7SM8FmN1wt9qE2/CVKRGzGfFYBs7Tmwx4lq/k0az8b
+XZ/wwJql/V5i4WvKCUy7NovM14gOIzELiQh+GseXe+VjW1H/jTilegqfT26arxuq21Dqw3uUKHV
geDiE/VnPpm3rXbbaretdttqt61222q3rfZ3ttqhxTiJVllOVtmiyF7CFBQKR0m5I/1TnN+L2+xr
tTxdoxEIN54pYqvxQxqLBb6+H829/F5U/z50MLJZNBt35KEV6Ia9X00Yh2fsCxcNa++BxRMmf4/0
TZu/QRuc5iBxWH9o/Bx1kOX5WIwR9OHDDzHvzXHnx8gtficFRKZh4x9afhR8g8j8EMS7mc8PUfUt
qoT+fVQJ/yiqRH4gVaKvRpWM16NK5utSJaelSi1VaqlSS5VaqtRSpZYqtVSppUotVWqpUkuVWqpU
p0pIb7lSy5VartRypZYrtVyp5UotV2q5UsuVWq7UcqWWK21xJdRypZYrtVyp5UotV2q5UsuVWq7U
cqWWK7VcqeVKLVfa4kq45UotV2q5UsuVWq7UcqWWK7VcqeVKLVdquVLLlVqutMWVSMuVWq7UcqWW
K7VcqeVKLVdquVLLlVqu1HKlliu1XKnOlXQ1SFl2D2PEi9fU32yzZEmqeHcDVzsm1fw4P+gqqpqy
x666cqfu+yz0OY/ghL86IdQaiPKQWLAg02DfFeHGCfiEnEEZEmfiyhmEODV1rgtZWfWEHkVCVSS1
z+vaGWbyip0nQIma2lVZUokONsMJZ32JTwn15QA4jvQaYPjY8gTaPqFLSxDecQaJE6RqIqaGb/ji
ZWgpouKEMKt6iThh7DiBhZJ4XpUFIU78yIL6mUaTmnakY128JS7Fu+YEZCmnyV0MNUB1L2+6Mpaw
MkzTJFXdJOTFkfWVpnIt/t/4zxdTn6fFSUQVRenHM5Y+qSdTdsczETa1j65qpSnVj/pusJjOr/gs
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
CowO43LsTonn2PQDSj6kAomcjsgFGz5AtEzxNIoMb4KPUo47ysDGj6PeekBwWhdJWyD6PVIS595y
l7PzE52vZjxQcGjgvKiDOSRISvVfz9vQn58VFH0ErdFGZngHYnslWyLrcsPCL3mR3XOgJhP8Hlmb
EUFT39+LZB8FqWilYHAUzG/BHDsO4DXYpSBUgyVit8vU+3h1s9u+F5DApeZvfyFidfnraKuLnhM2
NO96vOl3wwlbrzj0sB8qL30wN4ADqUAZpGpACQlkD3Vip4+Z2uqXetpplEmL4gVWSmqU3uJAwB7W
d2Nstc4hIfXgrWTX8c9YVo23WrUCqpcHP0nW6cH54X/W0BjbXaJdJ7XeS3SF/xrlX1BLAwQKAAAA
AABUiB1JAAAAAAAAAAAAAAAAOwAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEy
LjZfSXRlcmF0aW9uX1N0YXRlbWVudHMvVVQJAAMgzcRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAABUiB1JAAAAAAAAAAAAAAAAVgAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50
LzEyLjZfSXRlcmF0aW9uX1N0YXRlbWVudHMvMTIuNi4yX1RoZV93aGlsZV9zdGF0ZW1lbnQvVVQJ
AAMgzcRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABUiB1JgHt84pEAAAD6AAAAbgAcAHNw
dXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEyLjZfSXRlcmF0aW9uX1N0YXRlbWVudHMv
MTIuNi4yX1RoZV93aGlsZV9zdGF0ZW1lbnQvUzEyLjYuMl9BMi1jcmFzaC1sb2cudHh0VVQJAAMg
zcRXIM3EV3V4CwABBPUBAAAEFAAAALXOsQ6CMBCA4d2nuI2pljYGlFmciCaNTsaQ0p7QBDlyLTG8
vbyE6798f23MzVRwsWFED4mA0XrI5CMiR9ktYfQdJdmEji2vsqE+ynOw/UQxBWdwJk5bWT6zwckj
3xmx1bkqRH4UuhBa5eXh1OI3KlXuHds4ZBU8a+aJQL/gShAXN8B784EYfGB0iXit/jyx+wFQSwME
FAACAAgAVIgdSa0v66D0AwAAQgsAAGsAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzEyX1N0YXRlbWVu
dC8xMi42X0l0ZXJhdGlvbl9TdGF0ZW1lbnRzLzEyLjYuMl9UaGVfd2hpbGVfc3RhdGVtZW50L1Mx
Mi42LjJfQTItc3RkZXJyLnR4dFVUCQADIM3EVyDNxFd1eAsAAQT1AQAABBQAAADFVttu4kgQfecr
/BRBlF1sg7FBq0gzQLTMkgmKUXhYraJ2dxG807it7nYu+/Vb7fYlkAwzkVbaF2RcVeecunS1P8Xx
/Ha9uPnqXH1aLOeziZOqKXDe7XX6d4IXe1D9GdGkP9/E/Q0kf6S6H4tCUuh/IY8kpjLN9VRI6Msi
0+keX8fTL/Ed4QUsMp5moH7ddQPX7TkTB02TCf4gvnNe/Sk9JxNSsTpUZEp3PMdx3GfPHY2jYBu6
zmZ9NZVE7Tp+ZQjG7nCwHTsnUQY1ise80I2s83onxVNMRY7+2jzPnynkOhVZt7TPn4HGmmg4vzhA
73WGNTcNCKPMWn8KouU8OwYNao1ByBgLHI410/eKi6f7nOjdfYnfGTVeUTIabisvyLR86YStjVB/
cGCLWtsgGYDzuJ+b92vRNq8zrn0GQTgMSaVvsZ4KhiUCzKXQYBO7u64zWkmhxZRwfiXJHs57Hc+t
UHxG/NHWei0yDTKXgL9HSBj/gJHz8h1JeFOqd8p/k/wNVBsOr27AwBsGrrXDIxaS1Lhvwu2wmlzs
UBw14MKM1mTylXwDttLytwqkauflGZL6LWkQgY3OpdimHNj8NPmqdEuzh1sgSmT/maSBlcRI5IZJ
4uC5NEfQIFyTNMNpA8IaMf+72mGtNoQgilq19fLAiRSclyNSCVxkGyE56x65viOl8ZjdXG8kyXOQ
ZehrU6NmBpqkXJlJClpNI8J+RtNHxLzHOGp6xrYsPGacc9jjkW1OiX37Q07EDRtcSsf0u7h4CnMi
G1zTszU865VQqRH6Noej+CU8EPqyfskhLvJcSI3UkaWmo2jrk1fUv6+vlzb8tsgyU0S8HI4zqpDP
qwF6RwwyjFsGNyGnGOrtUoKtiFK3sDXzeMx3eYrPr5YYDZLEDYJDvpmghUFYEakOclJXQq5IoYCt
JcDnIuUMJF6gvteieWx0Gi0v9vlafIMs/QfkUoi8e9I9fsko3gyZKNQ1jsOFkwjBX3VvhXAxKIXZ
mbz8RgnxPfYBJR9SgUSDhmgMHnyAaLHFbqgUb4KPUg4bSuoh/8losyAyZoekHhDzHGuJe2+xz/nl
malXtR6o6/uh/2oOZkCRlJkvovehP79oUG0GtdNGpngH4vGiOyLtuOHgF5lKHzJgDhfZA7JWK4J6
QXKQySEKUrFSQfckWFiDeaMkhLdgS0GYAaNiv0/1j/HsYfeGIX4kDJnzy5+IWF7+Jtvyos8I7zn3
Ld7kr44/rqMSP8DTVUaZxtwCLiSFMkh5ACVQSB9tYSdPqd6ZB7vtEGXg1iiB526JRWk9jgQcYGGw
VwdHQ2IXbynb5j/labnerGoNzLzufqdY50f9w++sXudfUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAA
AABUABwAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuNl9JdGVyYXRpb25fU3Rh
dGVtZW50cy8xMi42LjNfVGhlX2Zvcl9TdGF0ZW1lbnQvVVQJAAMgzcRXX83EV3V4CwABBPUBAAAE
FAAAAFBLAwQUAAIACABUiB1JgHt84pEAAAD6AAAAbAAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJf
U3RhdGVtZW50LzEyLjZfSXRlcmF0aW9uX1N0YXRlbWVudHMvMTIuNi4zX1RoZV9mb3JfU3RhdGVt
ZW50L1MxMi42LjNfQTEtY3Jhc2gtbG9nLnR4dFVUCQADIM3EVyDNxFd1eAsAAQT1AQAABBQAAAC1
zrEOgjAQgOHdp7iNqZY2BpRZnIgmjU7GkNKe0AQ5ci0xvL28hOu/fH9tzM1UcLFhRA+JgNF6yOQj
IkfZLWH0HSXZhI4tr7KhPspzsP1EMQVncCZOW1k+s8HJI98ZsdW5KkR+FLoQWuXl4dTiNypV7h3b
OGQVPGvmiUC/4EoQFzfAe/OBGHxgdIl4rf48sfsBUEsDBBQAAgAIAFSIHUmM+9gU+QMAAGwLAABp
ABwAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuNl9JdGVyYXRpb25fU3RhdGVt
ZW50cy8xMi42LjNfVGhlX2Zvcl9TdGF0ZW1lbnQvUzEyLjYuM19BMS1zdGRlcnIudHh0VVQJAAMg
zcRXIM3EV3V4CwABBPUBAAAEFAAAAMWWXW/iOBSG7/MrclVB1V3yQUhAq0ozQLXMtFNEULlYjSrH
PinZMXHkOP3YX7/H+SyUoVNppb1BIT5+3tfHx8f5FIbz1Xpx+828+rS4ns8mZpJPgfNe3xjcCV7s
IB/MiCKD+SYcbCD6mqhBKApJYfCFPJKQyiRTUyFhIItUJTt8HU6/hHeEF7BIeZJC/vu251lW35yY
ODSZ4A/yzfP6Txk5mZBa1aQizZVhm6ZpPdvWiAVe7FvmZn01lSTfGk494DFr6MZj8yTFbSges30r
qILXWymeQioyjFf6ef5MIVOJSHvl+PwZaKiIgvOLPXrfGDY4yyOMsmr0lxCd5tkh1GugY58x5pkc
c6bucy6e7jOitvcl3xi1UUE0GsZ1FKRKvhh+N+ZGLpiPu7l+vxbdBhlBE+N7/tAntYfFeioYpgHQ
b6GgMn9307heSqHElHB+JckOzvvGuKGMGHFGcRW1SBXITAL+HpBw/gPOnJfvSMTbdBxJ8W30N1CF
GrbVJNm1h55VjcMjJos03DfTq4LUa6k2/iDJF7p8JpNv5AewpZJ/1JB6yy7PUNTuRL0AqtmZFHHC
gc1Piy/LsCR9WAHJRfqfWXIqSwwC248iE8+ePmaacEOSFCsKCGvN/O9u3catH3tB0LltGgRWpOC8
LJHa4CLdCMlZ7yD0iJU2YnZ7s5Eky0CWU18PtW5moEjCc11Jw87TiLBf8fQRM8cUvXbPIGb+oeKc
ww6PbHtKqrfvaiJ31HIZHdOfcvEUZkS2XL1na3hWS5En2ujbNRzMv4YHQl/WLxmERZYJqVDar6Qp
GVsOeSX95/rmupq+KtJUJxEvgMMV1eTzuoCOmEGFoFOwInJKoekuJWxJ8nwFsa7HQ73Lk3rjWm8c
Ucvz9vVmghaasCQy31tTfiXkkhQ5sLUE+FwknIHES9KxOprNRqdpWbHL1uIHpMk/IK+FyHonw8OX
lGL3T0WR32A5XJiREPzV7i0RF0Ke4+pwXY7dOokcm33AyYdcoJDTChGw4QNCixh3I0/wJviopNtK
Mhv/nJytG0TKqiJpCkQ/h0pi31vsMn55pvNVtwc6dFzfeVUHM6AoyvRXz3H05xcFebeCJmgjE7wD
8XjRLZFVuWHhF2mePKTATC7SB1StWwT1PLq3kn0KSrHSQe8kbNTA8Irw4S3sWhCmYVTsdol6n1cd
dnsY6c8EZv72FxLLy1+vtrzoU8L75n3Hm3w3nKCZFbkenodylt6YFWBDytEGKQ+gBArJY5XYyVOi
tvqh6naaMm4oyIhJRekiDgzssb4brtVMDvDTrGy8pe1q/VOelO2tcq2A6de9nyTr/GD/8Durb7h2
m2jixNZ7iS75byn/AlBLAwQKAAAAAABUiB1JAAAAAAAAAAAAAAAAPQAcAHNwdXRuaWsvQ29uZm9y
bWFuY2UvMTJfU3RhdGVtZW50LzEyLjdfVGhlX2NvbnRpbnVlX1N0YXRlbWVudC9VVAkAAyDNxFdf
zcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAFSIHUmAe3zikQAAAPoAAABWABwAc3B1dG5pay9D
b25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuN19UaGVfY29udGludWVfU3RhdGVtZW50L1MxMi43
X0E5X1QxLWNyYXNoLWxvZy50eHRVVAkAAyDNxFcgzcRXdXgLAAEE9QEAAAQUAAAAtc6xDoIwEIDh
3ae4jamWNgaUWZyIJo1OxpDSntAEOXItMby9vITrv3x/bczNVHCxYUQPiYDResjkIyJH2S1h9B0l
2YSOLa+yoT7Kc7D9RDEFZ3AmTltZPrPBySPfGbHVuSpEfhS6EFrl5eHU4jcqVe4d2zhkFTxr5olA
v+BKEBc3wHvzgRh8YHSJeK3+PLH7AVBLAwQUAAIACABUiB1Jxki8HfYDAABCCwAAUwAcAHNwdXRu
aWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEyLjdfVGhlX2NvbnRpbnVlX1N0YXRlbWVudC9T
MTIuN19BOV9UMS1zdGRlcnIudHh0VVQJAAMgzcRXIM3EV3V4CwABBPUBAAAEFAAAAMVW227jNhB9
91foKbCDtJZky5KMIsCu7aDeOhsjMuKHoggochSrS4sCSeXSr+9Q19jJejdAgb4YsmbmnDOcC/Up
iha3m+XNV+vq03K1mE+tVM2A8/6gN7wTvNiDGs6JJsPFNhpuIf4j1cNIFJLC8At5JBGVaa5nQsJQ
FplO9/g6mn2J7ggvYJnxNAP1667v2fbAmlpomk7xB/Gt8/pP6TmdkprVoiJTuudYlmU/O3Yc25PE
t63t5momidr13NpASOCNktA6iTJqUEae69tB5bzZSfEUUZGjvzbPi2cKuU5F1i/ti2egkSYazi8O
0Ae9ccPNWMwoq6w/BdFxnh2Deo3GSQKMeRbHM9P3ioun+5zo3X2J35s0Xr5NJ+Ok9oJMy5ee39li
6o4ObEFnG8cjsB73C/N+I7ri9cLGZ8yCsU9qfcvNTDA8IsBcCg1VYnfXTUZrKbSYEc6vJNnD+aDn
2A2KF7uTpPJaZhpkLgF/j5Aw/gEjF+U7EvP2qN45/pv4b6DacDhNAWJ37NmVHR7xIEmD+ya8alaT
S9UURwW4MK01nX4l34CttfytBqnLeXmGpG5H6gVQRedSJCkHtjhNvi7d0uzhFogS2X8maVRKctw4
YX4cWziXZgQNwjVJM+w2IKwV87+rHbdqYy8IOrXN8sCOFJyXLVILXGZbITnrH7m+I6X1mN9cbyXJ
c5Bl6GtTq2YOmqRcmU7yOk0Twn5G00fEvMc4qRmpTbBqx4wLDnsc2XZKqrc/5ERcv8UNaUi/i4tT
mBPZ4pqabeBZr4VKjdC3ORzFr+CB0JfNSw5RkedCaqQOKmonsKlLXlH/vrleVeG3RZaZQ8TL4Tij
Gvm8bqB3xCBD2DHYMTnF0GyXEmxNlLqFxPTjMd/lKT7Xrvn8UWB73iHfXNDCIKyJVAc5qSsh16RQ
wDYS4HORcgYSL1DX6dAcNjmNlhf7fCO+QZb+A3IlRN4/6R69ZBRvhkwU6hrb4cKKheCvqrdGuAiU
wuxMXm6rxHcd9gElH1KBRKOWaAIOfIBomWA1VIo3wUcpxy1l6CD/yWizIDJWNUnTIOY50hL33nKf
88szc171enCcMPHdV30wB4qkzHwRvQ/9+UWD6jJonLYyxTsQx4vuiKzaDRu/yFT6kAGzuMgekLVe
EY7LgoNMDlGQipUK+ifB/AYsHMU+vAVbCcIMGBX7fap/jFcPexgktj9m1i9/ImJ5+Ztsy4s+I3xg
3Xd40796bj3AYeiCh9NVRpnC3AIuJIUySDmAEiikj9XBTp9SvTMP1bZDlJHdcFNmJ6RC6TyOBBxg
YbDTSLDxDi8Xbym7yn/G03K9Vao1MPO6/53DOj+qH35nDXr/AlBLAwQKAAAAAABUiB1JAAAAAAAA
AAAAAAAAKwAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTNfRnVuY3Rpb25fRGVmaW5pdGlvbi9VVAkA
AyDNxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAAAABKABwAc3B1
dG5pay9Db25mb3JtYW5jZS8xM19GdW5jdGlvbl9EZWZpbml0aW9uLzEzLjJfQ3JlYXRpbmdfRnVu
Y3Rpb25fT2JqZWN0cy9VVAkAAyDNxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAFSIHUmA
e3zikQAAAPoAAABlABwAc3B1dG5pay9Db25mb3JtYW5jZS8xM19GdW5jdGlvbl9EZWZpbml0aW9u
LzEzLjJfQ3JlYXRpbmdfRnVuY3Rpb25fT2JqZWN0cy9TMTMuMi4xX0E4X1QyLWNyYXNoLWxvZy50
eHRVVAkAAyDNxFcgzcRXdXgLAAEE9QEAAAQUAAAAtc6xDoIwEIDh3ae4jamWNgaUWZyIJo1OxpDS
ntAEOXItMby9vITrv3x/bczNVHCxYUQPiYDResjkIyJH2S1h9B0l2YSOLa+yoT7Kc7D9RDEFZ3Am
TltZPrPBySPfGbHVuSpEfhS6EFrl5eHU4jcqVe4d2zhkFTxr5olAv+BKEBc3wHvzgRh8YHSJeK3+
PLH7AVBLAwQUAAIACABUiB1JZN4cifYDAABCCwAAYgAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTNf
RnVuY3Rpb25fRGVmaW5pdGlvbi8xMy4yX0NyZWF0aW5nX0Z1bmN0aW9uX09iamVjdHMvUzEzLjIu
MV9BOF9UMi1zdGRlcnIudHh0VVQJAAMgzcRXIM3EV3V4CwABBPUBAAAEFAAAAMVW227jNhB991fo
KbCDtNbFsmSjCLBrO6i3zsaIjPihKAKKHMXq0qJAUbn06zsUdYmdrHcDFOiLIWtmzjlz4VCfomhx
u1nefLWuPi1Xi/nUSosZcN4f9IZ3gpd7KIZzoshwsY2GW4j/SNUwEqWkMPxCHklEZZqrmZAwlGWm
0j2+jmZfojvCS1hmPM2g+HXX9217YE0tNE2n+IP41nn9p/KcTknNalGRFarnWJZlPzu253tuEtjW
dnM1k6TY9dza4I5ix0sm1kkUr3FmAQR2aJw3OymeIipy9Ff6efFMIVepyPqVffEMNFJEwfnFAfqg
N2rgQjtglBnrT0F0nGfHoH6TqeMSxnyLY83UfcHF031O1O6+wu+NWy8vHI+S2gsyJV96QWcLqOsd
2MLOZsceWI/7hX6/EV3zepMmrcQejQJS61tuZoJhiQBzKRWYxO6um4zWUigxI5xfSbKH80HPsWsU
CAN3nBivZaZA5hLw9wgJ4x8wclG9IzFvS/VO+W/iv4EqzeHUHAGDkW8bOzxiIUmD+ybcDKvOxQzF
UQMu9GhNp1/JN2BrJX+rQep2Xp4hqduR+iGY6FyKJOXAFqfJ15Vbmj3cAilE9p9J8owkMvacII4t
PJf6CGqEa5JmOG1AWCvmf1c7atS6iR+GndpmeeBECs6rEakFLrOtkJz1j1zfkdJ6zG+ut5LkOcgq
9LWpVTMHRVJe6EnyO01jwn5G00fEvMc4bnsGCQuOGRcc9nhk21Ni3v6QE3GDFpfRCf0uLp7CnMgW
V/dsA89qLYpUC32bw1H8Ch4Ifdm85BCVeS6kQurQUE/cke2SV9S/b65XJvy2zDJdRLwcjjOqkc/r
AXpHDDJMOgY7JqcYmu1Sga1JUdxCoufxmO/yFJ9bL7GJM6a27x/yzQUtNcKayOIgp+JKyDUpC2Ab
CfC5TDkDiReo63RoDhufRsvLfb4R3yBL/wG5EiLvn3SPXjKKN0MmyuIax+HCioXgr7q3RrgIigKz
03m5rZLYddgHlHxIBRJ5LREBBz5AtEywG0WKN8FHKUctJXOQ/2S0XhAZM0PSDIh+jpTEvbfc5/zy
TNerXg9hzLzAfTUHc6BIyvQX0fvQn18UFF0GjdNWpngH4vGiOyLNuOHgl1mRPmTALC6yB2StV0TI
bHqQySEKUrFKQf8kWL0XQkqDOIC3YCtBmAajYr9P1Y/xzGF3HM/1ghGzfvkTEavLX2dbXfQZ4QPr
vsOb/tVzJ03U2PHxdFVRujG3gAupQBmkOoASKKSPprDTp1Tt9IPZdoji2Q2KbdsJMSidx5GAAywM
dppgzyNm8VayTf4znlbrzahWwPTr/neKdX7UP/zOGvT+BVBLAwQKAAAAAABUiB1JAAAAAAAAAAAA
AAAAJgAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvVVQJAAMgzcRXX83E
V3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABUiB1JAAAAAAAAAAAAAAAAPQAcAHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC9VVAkAAyDN
xFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAAAABEABwAc3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1
LjEuMi9VVAkAAyDNxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAA
AABSABwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9i
YWxfT2JqZWN0LzE1LjEuMi8xNS4xLjIuMV9ldmFsL1VUCQADIM3EV1/NxFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAdYgdSZcaFVILVwAA0bYBAHEAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05h
dGl2ZV9PYmplY3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4yLzE1LjEuMi4xX2V2YWwv
UzE1LjEuMi4xX0EzLjNfVDQtY3Jhc2gtbG9nLnR4dFVUCQADXc3EVyDNxFd1eAsAAQT1AQAABBQA
AADsXW1z27ay/nz5K/jhjo+c1g5Bgm+aXHccWWrd+O1YTtJpJ8MBSdDmDUWqJOWX++vvAqQkipYs
wZabpgeeTipT4OLZxWJ3nyVkXeRZQIuiqy7+HE1G40uahjS/yilV/0AIGc4X5YKUN+2h8PP2U5ZM
RrR4++n85ONp/+2bt4v3K8chTcs4imneXT2L8onmRZyl7Ql++uknpZeFVL16GNPFN39zrD0Lq50z
Usa3dBfw5TCRetFS6uKhvMnSSgv7i3JJi3GWFrGfLIgrbtQ/dMv9onwsaK4eH7VxmBpSlCNS0rdX
8agFRNeQtac5e7qrIruroa6p7Zu6pe5ptqYp50N1mW6nJFDhrd9UpO3Df6baQXiAXM3dBYjjLC8f
3YWQcphm6cMomxTqx48NjO91+8h0+v29nosGe/33xuEeHhzae+6RrpmGZmmG/V5RFIZcPbwjX6k6
jNOAqu+zrOyqpqVpmlrQIEvDQlF6OSluaKhe3eSUhLM5NFixuBiTMrhR/5zQCdggyEb7ZDxO6P6I
xOleyW9QlP59QMclIF9cs/5vPe/94ZF32Ov1h0O1Mzz+edj/+dNuYzxb6NnCfehfnnnHZ58OT47h
pqOjS3YXKVXtXqt/fJ+EPqWRonw6VS/pNYgo1DNKchgzfa+r7O0dqAoT6HlX/d+uHvlvLQxpQYRd
eLE3uxDCFMw0f6iqbVsfvqj53v3b/O5eHZ7+T+/88xLXBxtzI4C1ajN2uxuaDezbeOdXckuGQR6P
y16W0wrof800Rxo1bTOybfXz1YBPpP6gGq6ChGSEOMJG5Kq/Dnvd7q/DTyQBdF1S9GiSdHZBUFqU
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