<?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>177099</bug_id>
          
          <creation_ts>2017-09-18 13:07:21 -0700</creation_ts>
          <short_desc>Remove the need for SetterMayThrowException</short_desc>
          <delta_ts>2017-09-27 12:55:44 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350057</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 13:07:21 -0700</bug_when>
    <thetext>Getting rid of SetterMayThrowException might be possible by inspecting the DOM class setter prototype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350060</commentid>
    <comment_count>1</comment_count>
      <attachid>321122</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 13:14:46 -0700</bug_when>
    <thetext>Created attachment 321122
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350062</commentid>
    <comment_count>2</comment_count>
      <attachid>321122</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-18 13:18:04 -0700</bug_when>
    <thetext>Comment on attachment 321122
WIP

Attachment 321122 did not pass bindings-ews (mac):
Output: http://webkit-queues.webkit.org/results/4586150

New failing tests:
(JS) JSTestCallTracer.cpp
(JS) JSTestCEReactions.cpp
(JS) JSTestCEReactionsStringifier.cpp
(JS) JSTestEnabledBySetting.cpp
(JS) JSTestGlobalObject.cpp
(JS) JSTestInterface.cpp
(JS) JSTestNode.cpp
(JS) JSTestObj.cpp
(JS) JSTestSerialization.cpp
(JS) JSTestSerializationInherit.cpp
(JS) JSTestSerializationInheritFinal.cpp
(JS) JSTestSerializedScriptValueInterface.cpp
(JS) JSTestStringifierReadWriteAttribute.cpp
(JS) JSTestTypedefs.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350086</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 14:07:29 -0700</bug_when>
    <thetext>Sam, Chris, any feedback on that patch before I finalize it?

This patch allows removing SetterMayThrowException and SetterCallWith from the binding generator.

A follow-up patch would clean the IDLs, remove GetterMayThrowException and probably CallWith from any attribute declaration.

The downside of the patch approach is that it reduces the flexibility on how to write setters. As can be seen in the patch, the removed flexibility is not huge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350087</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 14:07:36 -0700</bug_when>
    <thetext>Sam, Chris, any feedback on that patch before I finalize it?

This patch allows removing SetterMayThrowException and SetterCallWith from the binding generator.

A follow-up patch would clean the IDLs, remove GetterMayThrowException and probably CallWith from any attribute declaration.

The downside of the patch approach is that it reduces the flexibility on how to write setters. As can be seen in the patch, the removed flexibility is not huge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350093</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 14:31:16 -0700</bug_when>
    <thetext>If landing such patch, we should make sure there is no related perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350099</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-18 14:47:48 -0700</bug_when>
    <thetext>Rather than overloading like this, could instead do something like (I have not compiled this, this is a sketch):


template&lt;bool canThrowException&gt;
struct CallSetter;

template&lt;&gt;
struct CallSetter&lt;true&gt; {
    template&lt;typename Functor&gt;
    static void call(JSC::ExecState&amp; state, JSC::ThrowScope&amp; throwScope, Functor functor)
    {
        propagateException(state, throwScope, functor());
    }
};

template&lt;&gt;
struct CallSetter&lt;false&gt; {
    template&lt;typename Functor&gt;
    static void convert(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Functor functor)
    {
        functor();
    }
};


---


CallSetter&lt;WTF::IsTemplate&lt;decltype(impl.setValues(WTFMove(nativeValue))), ExceptionOr&gt;::value&gt;::call(state, throwScope, [&amp;] {
    return impl.setValue(WTFMove(nativeValue));
});</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350132</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 15:58:42 -0700</bug_when>
    <thetext>It is probably working and this would be probably applicable to methods as well.
It would not get rid of CallWith though.
Might be a good tradeoff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350156</commentid>
    <comment_count>8</comment_count>
      <attachid>321151</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-18 16:32:15 -0700</bug_when>
    <thetext>Created attachment 321151
Proof of concept that works

Working proof of concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350174</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 17:13:06 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #8)
&gt; Created attachment 321151 [details]
&gt; Proof of concept that works
&gt; 
&gt; Working proof of concept.

Do you want to take over this one?
Otherwise, I will finalize the patch with your proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350197</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-18 18:40:00 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; (In reply to Sam Weinig from comment #8)
&gt; &gt; Created attachment 321151 [details]
&gt; &gt; Proof of concept that works
&gt; &gt; 
&gt; &gt; Working proof of concept.
&gt; 
&gt; Do you want to take over this one?
&gt; Otherwise, I will finalize the patch with your proposal.

You should do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351300</commentid>
    <comment_count>11</comment_count>
      <attachid>321457</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-21 11:45:21 -0700</bug_when>
    <thetext>Created attachment 321457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351390</commentid>
    <comment_count>12</comment_count>
      <attachid>321457</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-21 14:19:52 -0700</bug_when>
    <thetext>Comment on attachment 321457
Patch

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

&gt; Source/WebCore/ChangeLog:56
&gt; +        * bindings/scripts/test/JS/JSTestObj.cpp:
&gt; +        (WebCore::setJSTestObjConstructorStaticStringAttrSetter):
&gt; +        (WebCore::setJSTestObjEnumAttrSetter):
&gt; +        (WebCore::setJSTestObjByteAttrSetter):
&gt; +        (WebCore::setJSTestObjOctetAttrSetter):
&gt; +        (WebCore::setJSTestObjShortAttrSetter):
&gt; +        (WebCore::setJSTestObjClampedShortAttrSetter):

I think you can remove some of these function names that changed in test result lines.

&gt; Source/WebCore/bindings/js/JSDOMAttribute.h:111
&gt; +    static void call(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Functor&amp;&amp; functor) { functor(); }

This should use the normal syntax, braces on their own lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351391</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-21 14:20:47 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #12)
&gt; Comment on attachment 321457 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321457&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:56
&gt; &gt; +        * bindings/scripts/test/JS/JSTestObj.cpp:
&gt; &gt; +        (WebCore::setJSTestObjConstructorStaticStringAttrSetter):
&gt; &gt; +        (WebCore::setJSTestObjEnumAttrSetter):
&gt; &gt; +        (WebCore::setJSTestObjByteAttrSetter):
&gt; &gt; +        (WebCore::setJSTestObjOctetAttrSetter):
&gt; &gt; +        (WebCore::setJSTestObjShortAttrSetter):
&gt; &gt; +        (WebCore::setJSTestObjClampedShortAttrSetter):
&gt; 
&gt; I think you can remove some of these function names that changed in test
&gt; result lines.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMAttribute.h:111
&gt; &gt; +    static void call(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Functor&amp;&amp; functor) { functor(); }
&gt; 
&gt; This should use the normal syntax, braces on their own lines.

Mind if I do the others?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351396</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-21 14:31:39 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; (In reply to Sam Weinig from comment #12)
&gt; &gt; Comment on attachment 321457 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=321457&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:56
&gt; &gt; &gt; +        * bindings/scripts/test/JS/JSTestObj.cpp:
&gt; &gt; &gt; +        (WebCore::setJSTestObjConstructorStaticStringAttrSetter):
&gt; &gt; &gt; +        (WebCore::setJSTestObjEnumAttrSetter):
&gt; &gt; &gt; +        (WebCore::setJSTestObjByteAttrSetter):
&gt; &gt; &gt; +        (WebCore::setJSTestObjOctetAttrSetter):
&gt; &gt; &gt; +        (WebCore::setJSTestObjShortAttrSetter):
&gt; &gt; &gt; +        (WebCore::setJSTestObjClampedShortAttrSetter):
&gt; &gt; 
&gt; &gt; I think you can remove some of these function names that changed in test
&gt; &gt; result lines.

OK

&gt; &gt; &gt; Source/WebCore/bindings/js/JSDOMAttribute.h:111
&gt; &gt; &gt; +    static void call(JSC::ExecState&amp;, JSC::ThrowScope&amp;, Functor&amp;&amp; functor) { functor(); }
&gt; &gt; 
&gt; &gt; This should use the normal syntax, braces on their own lines.

I like one-line getters/setters and it does seem very close to that.
But I don&apos;t have a strong opinion.

&gt; Mind if I do the others?

Meaning to apply this for getters and operations? Sure!
I&apos;ll land this one and will update all IDLs using SetterRaisesException in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351447</commentid>
    <comment_count>15</comment_count>
      <attachid>321489</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-21 16:14:05 -0700</bug_when>
    <thetext>Created attachment 321489
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351456</commentid>
    <comment_count>16</comment_count>
      <attachid>321489</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 16:37:12 -0700</bug_when>
    <thetext>Comment on attachment 321489
Patch for landing

Clearing flags on attachment: 321489

Committed r222365: &lt;http://trac.webkit.org/changeset/222365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351457</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 16:37:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353739</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:55:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694289&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321122</attachid>
            <date>2017-09-18 13:14:46 -0700</date>
            <delta_ts>2017-09-21 11:45:19 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-177099-20170918131445.patch</filename>
            <type>text/plain</type>
            <size>14171</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU0MWIxYjgzMzE4NTNj
NzAyNDQ4MDE5OTY2MTdlODJiMDVhMGQxNC4uN2U2MjA0MmM0MjgwZTZhMjU0M2IyMjVhNTA3Zjlh
ZDA0ZWZjMjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIG5lZWQg
Zm9yIFNldHRlck1heVRocm93RXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXRjaCBzaG91bGQgbm90IGNoYW5nZSBhbnkgYmVoYXZpb3Iu
CisgICAgICAgIEludHJvZHVjaW5nIEF0dHJpYnV0ZVNldHRlciB0byBoYW5kbGUgZGV0ZWN0aW9u
IG9mIHRoZSByZXR1cm4gdHlwZSBhbmQgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIHNldHRlci4K
KyAgICAgICAgRGV0ZWN0aW9uIGlzIGRvbmUgYnkgdGhlIGNvbXBpbGVyIHdoZW4gcGFzc2luZyB0
aGUgc2V0dGVyIG1ldGhvZCBwb2ludGVyLgorICAgICAgICBUaGlzIGFsc28gYWxsb3dzIHJlbW92
aW5nIHRoZSBuZWVkIGZvciBDYWxsV2l0aCBmb3IgYXR0cmlidXRlIHNldHRlcnMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXR0
cmlidXRlU2V0dGVyOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdldEZ1bGx5UXVhbGlmaWVkSW1wbGVtZW50YXRpb25DYWxs
TmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZyYW1lRWxlbWVudDo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENo
ZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVBc051bWJlcik6CisK
IDIwMTctMDktMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBDYWNoZVN0b3JhZ2UgdG8gRE9NQ2FjaGVTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggOGQ5OGQ0MDA2NjZiZGEyYTkxMTZjNDI0MDJlMTA0NjQ1NjIyODUwNy4u
ZTBkYWU1M2Q3NGRlMTJkNmE2MmFhMWQ4OGQyNDUwMzc1OGQ5NTJlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA5LTE4ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIG5lZWQgZm9yIFNldHRl
ck1heVRocm93RXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBpbXByb3ZlbWVudHMKKworICAgICAgICBTZXR0ZXIgYXR0cmlidXRlIGhhbmRs
aW5nCisKKyAgICAgICAgKiBET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKC1b
RE9NSFRNTEZyYW1lRWxlbWVudCBzZXRMb2NhdGlvbjpdKToKKwogMjAxNy0wOS0xNSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBNZWRp
YVJlbW90ZSBhbmQgVmlkZW9Ub29sYm94IFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCmluZGV4IDYzNGY0
NDI0ZDUyNjM2N2UyYTg3MTI3ODE2ZmIyZGYxMDY4ODI0NGMuLmQ2MzY4NGMzMjc4ODJmYjdjN2Fi
YzRhNDA4ZWZlNmZkZGNiMmQ5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01BdHRyaWJ1dGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiSlNET01DYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvci5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC05MCw0ICs5MSw2OSBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAorY2xhc3MgRE9NV2luZG93Owor
Y2xhc3MgUXVhbGlmaWVkTmFtZTsKK3N0cnVjdCBBdHRyaWJ1dGVTZXR0ZXIgeworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgUGFyZW50T3JTZWxmQ2xhc3MsIHR5cGVu
YW1lIEFyZ3VtZW50LCB0eXBlbmFtZSBQYXJhbWV0ZXI+CisgICAgc3RhdGljIGF1dG8gY2FsbChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRE9NQ2xh
c3MmIG9iamVjdCwgRXhjZXB0aW9uT3I8dm9pZD4gKFBhcmVudE9yU2VsZkNsYXNzOjoqIGZ1bmN0
aW9uKShET01XaW5kb3cmLCBET01XaW5kb3cmLCBQYXJhbWV0ZXIpLCBBcmd1bWVudCYmIGFyZ3Vt
ZW50KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSAob2JqZWN0LipmdW5jdGlvbikoYWN0
aXZlRE9NV2luZG93KHN0YXRlKSwgZmlyc3RET01XaW5kb3coc3RhdGUpLCBzdGQ6OmZvcndhcmQ8
QXJndW1lbnQ+KGFyZ3VtZW50KSk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHRocm93U2NvcGUsIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBE
T01DbGFzcywgdHlwZW5hbWUgUGFyZW50T3JTZWxmQ2xhc3MsIHR5cGVuYW1lIEFyZ3VtZW50LCB0
eXBlbmFtZSBQYXJhbWV0ZXI+CisgICAgc3RhdGljIGF1dG8gY2FsbChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6VGhyb3dTY29wZSYsIERPTUNsYXNzJiBvYmplY3QsIHZvaWQgKFBhcmVudE9y
U2VsZkNsYXNzOjoqIGZ1bmN0aW9uKShKU0M6OkV4ZWNTdGF0ZSYsIFBhcmFtZXRlciksIEFyZ3Vt
ZW50JiYgYXJndW1lbnQpCisgICAgeworICAgICAgICAob2JqZWN0LipmdW5jdGlvbikoc3RhdGUs
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudD4oYXJndW1lbnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFBhcmVudE9yU2VsZkNsYXNzLCB0eXBlbmFt
ZSBBcmd1bWVudCwgdHlwZW5hbWUgUGFyYW1ldGVyPgorICAgIHN0YXRpYyBhdXRvIGNhbGwoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIERPTUNsYXNz
JiBvYmplY3QsIEV4Y2VwdGlvbk9yPHZvaWQ+IChQYXJlbnRPclNlbGZDbGFzczo6KiBmdW5jdGlv
bikoSlNDOjpFeGVjU3RhdGUmLCBQYXJhbWV0ZXIpLCBBcmd1bWVudCYmIGFyZ3VtZW50KQorICAg
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSAob2JqZWN0LipmdW5jdGlvbikoc3RhdGUsIHN0ZDo6
Zm9yd2FyZDxBcmd1bWVudD4oYXJndW1lbnQpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29w
ZSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBQYXJlbnRPclNlbGZDbGFzcywgdHlwZW5hbWUgQXJn
dW1lbnQsIHR5cGVuYW1lIFBhcmFtZXRlcj4KKyAgICBzdGF0aWMgYXV0byBjYWxsKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgRE9NQ2xhc3MmIG9iamVjdCwgdm9pZCAoUGFyZW50
T3JTZWxmQ2xhc3M6OiogZnVuY3Rpb24pKFBhcmFtZXRlciksIEFyZ3VtZW50JiYgYXJndW1lbnQp
CisgICAgeworICAgICAgICAob2JqZWN0LipmdW5jdGlvbikoc3RkOjpmb3J3YXJkPEFyZ3VtZW50
Pihhcmd1bWVudCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcywg
dHlwZW5hbWUgUGFyZW50T3JTZWxmQ2xhc3MsIHR5cGVuYW1lIEFyZ3VtZW50LCB0eXBlbmFtZSBQ
YXJhbWV0ZXI+CisgICAgc3RhdGljIGF1dG8gY2FsbChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRE9NQ2xhc3MmIG9iamVjdCwgRXhjZXB0aW9uT3I8
dm9pZD4gKFBhcmVudE9yU2VsZkNsYXNzOjoqIGZ1bmN0aW9uKShQYXJhbWV0ZXIpLCBBcmd1bWVu
dCYmIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSAob2JqZWN0LipmdW5j
dGlvbikoc3RkOjpmb3J3YXJkPEFyZ3VtZW50Pihhcmd1bWVudCkpOworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRl
LCB0aHJvd1Njb3BlLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFBhcmVudE9yU2VsZkNsYXNzLCB0
eXBlbmFtZSBBcmd1bWVudD4KKyAgICBzdGF0aWMgYXV0byBjYWxsKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpUaHJvd1Njb3BlJiwgRE9NQ2xhc3MmIG9iamVjdCwgdm9pZCAoUGFyZW50T3JTZWxmQ2xh
c3M6OiogZnVuY3Rpb24pKEFyZ3VtZW50JiYpLCBBcmd1bWVudCYmIGFyZ3VtZW50KQorICAgIHsK
KyAgICAgICAgKG9iamVjdC4qZnVuY3Rpb24pKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudD4oYXJndW1l
bnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1l
IEFyZ3VtZW50PgorICAgIHN0YXRpYyBhdXRvIGNhbGwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRo
cm93U2NvcGUmLCBET01DbGFzcyYgb2JqZWN0LCB2b2lkIChET01DbGFzczo6KiBmdW5jdGlvbiko
QXJndW1lbnQpLCBBcmd1bWVudCYmIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAgKG9iamVjdC4q
ZnVuY3Rpb24pKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudD4oYXJndW1lbnQpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEFyZ3VtZW50PgorICAgIHN0
YXRpYyBhdXRvIGNhbGwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBET01DbGFz
cyYgb2JqZWN0LCB2b2lkIChET01DbGFzczo6KiBmdW5jdGlvbikoY29uc3QgQXJndW1lbnQmKSwg
QXJndW1lbnQmJiBhcmd1bWVudCkKKyAgICB7CisgICAgICAgIChvYmplY3QuKmZ1bmN0aW9uKShz
dGQ6OmZvcndhcmQ8QXJndW1lbnQ+KGFyZ3VtZW50KSk7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBQYXJlbnRPclNlbGZDbGFzcywgdHlwZW5hbWUg
QXJndW1lbnQsIHR5cGVuYW1lIFBhcmFtZXRlcj4KKyAgICBzdGF0aWMgYXV0byBjYWxsKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgRE9NQ2xhc3MmIG9iamVjdCwgdm9pZCAoUGFy
ZW50T3JTZWxmQ2xhc3M6OiogZnVuY3Rpb24pKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBQYXJhbWV0
ZXIpLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBBcmd1bWVudCYmIGFyZ3VtZW50KQorICAg
IHsKKyAgICAgICAgKG9iamVjdC4qZnVuY3Rpb24pKG5hbWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVu
dD4oYXJndW1lbnQpKTsKKyAgICB9Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggNWU3MDlmMThjNGU4ZWZiZDFjNjRiY2M3YWYxNmNiODFmYTkzNzk5Zi4uNzAyZDQ4NThh
NDQ2ZDQ3ZDZmZmZjZjlmMjBhNDgxZmM5NjhjZGQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE1OTgsNyArMTU5OCw4
IEBAIHN1YiBHZXRGdWxseVF1YWxpZmllZEltcGxlbWVudGF0aW9uQ2FsbE5hbWUKICAgICAgICAg
cmV0dXJuICJmb3J3YXJkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRwcm9wZXJ0eS0+
bmFtZSkgLiAiVG9NYXBMaWtlIjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuICIke2ltcGxFeHBy
ZXNzaW9ufS4ke2ltcGxlbWVudGF0aW9uTmFtZX0iOworICAgIHJldHVybiAiJHtpbXBsRXhwcmVz
c2lvbn0uJHtpbXBsZW1lbnRhdGlvbk5hbWV9IiBpZiAkaW1wbEV4cHJlc3Npb247CisgICAgcmV0
dXJuICIke2ltcGxlbWVudGF0aW9uTmFtZX0iOwogfQogCiBzdWIgQWRkQWRkaXRpb25hbEFyZ3Vt
ZW50c0ZvckltcGxlbWVudGF0aW9uQ2FsbApAQCAtNDkwOSwxNCArNDkxMCwxMSBAQCBzdWIgR2Vu
ZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbgogCiAgICAgICAgIHB1c2goQGFyZ3Vt
ZW50cywgUGFzc0FyZ3VtZW50RXhwcmVzc2lvbigibmF0aXZlVmFsdWUiLCAkYXR0cmlidXRlKSk7
CiAKLSAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bGx5UXVhbGlmaWVkSW1wbGVtZW50
YXRpb25DYWxsTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlLCAkYmFzZUZ1bmN0aW9uTmFtZSwg
ImltcGwiLCAkY29uZGl0aW9uYWwpOworICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVs
bHlRdWFsaWZpZWRJbXBsZW1lbnRhdGlvbkNhbGxOYW1lKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUs
ICRiYXNlRnVuY3Rpb25OYW1lLCAiIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgQWRkQWRkaXRp
b25hbEFyZ3VtZW50c0ZvckltcGxlbWVudGF0aW9uQ2FsbChcQGFyZ3VtZW50cywgJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZSwgImltcGwiLCAic3RhdGUiLCAidGhpc09iamVjdCIpOwogCi0gICAgICAg
IHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJDYWxsV2l0aH0sICRvdXRwdXRBcnJh
eSwgImZhbHNlIiwgInRoaXNPYmplY3QiKSk7Ci0gICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywg
R2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgImZhbHNlIiwgInRoaXNPYmplY3QiKSk7
Ci0KLSAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInBy
b3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYg
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyTWF5VGhyb3dFeGNlcHRpb259
OworICAgICAgICBteSAkZG9tQ2xhc3NOYW1lID0gJHtpbnRlcmZhY2V9LT50eXBlLT5uYW1lOwor
ICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiQXR0cmlidXRlU2V0dGVyOjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBpbXBsLCAmJHtkb21DbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0sICIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwogCiAgICAgICAgIG15ICRjYWxsVHJhY2lu
Z0NhbGxiYWNrID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNpbmdD
YWxsYmFja30gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNpbmdD
YWxsYmFja307CiAgICAgICAgIGlmICgkY2FsbFRyYWNpbmdDYWxsYmFjaykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggMzkzMzJhMmI4NWY0MzhiNDk0MTVk
MjFiMjE0N2U0YmNiMjg1Y2I1Ny4uZmMyMmJkZmE1ODg1NTVjMmNiMTBjNWFiZTM4YWUwNGNkZmQx
MWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC0yNyw2
ICsyNyw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiUmVuZGVy
RnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODQsNCArODYsMTQgQEAgdm9pZCBI
VE1MRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHIKICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAordm9pZCBIVE1MRnJhbWVFbGVtZW50OjpzZXRMb2Nh
dGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbmV3TG9jYXRpb24pCit7
CisgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CisgICAgICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERvY3VtZW50KCkpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2Nh
dGlvbihuZXdMb2NhdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKaW5kZXggNGYwOGFiMDQ2MTJhODFmYmU2YTY5ZGQ4
MzM2NzI4NmEzYmY1ZTIyZC4uMjJlNWQwYmJhMWZhMDliYzllOWYwMDRhYzExZmM3ZTVjYjU1MWE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKQEAgLTM4LDYgKzM4LDgg
QEAgcHVibGljOgogCiAgICAgUmVuZGVyRnJhbWUqIHJlbmRlcmVyKCkgY29uc3Q7CiAKKyAgICB2
b2lkIHNldExvY2F0aW9uKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJik7CisKIHByaXZh
dGU6CiAgICAgSFRNTEZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAppbmRl
eCBkODEyODdiYzIzYTI1YmJkNzQwMTRhNGM5MDUzZGFjNmE5ZDBlNWM0Li5hODQyOTFhZTFjZWYz
NTk0MDhiYzQ4ZjJiNDE3Yjc1MTQ5YjU4NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCkBAIC0xODksMTYgKzE4OCw2IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExv
Y2F0aW9uKGNvbnN0IFN0cmluZyYgc3RyKQogICAgICAgICBvcGVuVVJMKExvY2tIaXN0b3J5OjpO
bywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogfQogCi12b2lkIEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjpzZXRMb2NhdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbmV3
TG9jYXRpb24pCi17Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7Ci0gICAgICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERvY3VtZW50
KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNldExvY2F0aW9uKG5ld0xv
Y2F0aW9uKTsKLX0KLQogYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c3VwcG9ydHNGb2N1cygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgKaW5kZXggODEyNmI5ZTQ4ZjI1NmNmMTIxMWViYmU0OTFlMTQ5ZWZjNmEy
ZTc4OC4uZjdhNzc0NDhmZTMzYmViNjViOTAzZDc3OWEwMTkzYWJjMTY3MWFjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAtMzYsNyArMzYsNiBAQCBj
bGFzcyBIVE1MRnJhbWVFbGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQg
ewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBsb2NhdGlvbigpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCBzZXRMb2NhdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgU2Ny
b2xsYmFyTW9kZSBzY3JvbGxpbmdNb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY3JvbGxp
bmc7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggOGM4
OTIxYWE4YzkzMGY3MGU1ZDVmNjc3NzNjMTU2NmU1N2Y0NDY5Zi4uMDc4YjcwNGZiNzQ1MzJhMTUx
YjM3ZjFjMzg3ZWMyMjdmOWRiMDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKQEAgLTE0OCw3ICsxNDgsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRN
TEVsZW1lbnQqIGF1dG9GaWxsQnV0dG9uRWxlbWVudCgpIGNvbnN0OwogCiAgICAgYm9vbCBjaGVj
a2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NoZWNrZWQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENoZWNrZWQoYm9vbCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9F
dmVudCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDaGVja2VkKGJvb2wsIFRleHRGaWVs
ZEV2ZW50QmVoYXZpb3IpOworICAgIHZvaWQgc2V0Q2hlY2tlZChib29sIHZhbHVlKSB7IHNldENo
ZWNrZWQodmFsdWUsIERpc3BhdGNoTm9FdmVudCk7IH0KIAogICAgIC8vICdpbmRldGVybWluYXRl
JyBpcyBhIHN0YXRlIGluZGVwZW5kZW50IG9mIHRoZSBjaGVja2VkIHN0YXRlIHRoYXQgY2F1c2Vz
IHRoZSBjb250cm9sIHRvIGRyYXcgaW4gYSB3YXkgdGhhdCBoaWRlcyB0aGUgYWN0dWFsIHN0YXRl
LgogICAgIGJvb2wgaW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmRldGVybWlu
YXRlOyB9CkBAIC0xNjUsNyArMTY2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB2YWx1ZSgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgPSBE
aXNwYXRjaE5vRXZlbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFZhbHVlKGNvbnN0IFN0cmluZyYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmV0dXJuIHNldFZh
bHVlKHZhbHVlLCBEaXNwYXRjaE5vRXZlbnQpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7CiAgICAgLy8gQ2hlY2tzIGlmIHRoZSBzcGVj
aWZpZWQgc3RyaW5nIHdvdWxkIGJlIGEgdmFsaWQgdmFsdWUuCiAgICAgLy8gV2Ugc2hvdWxkIG5v
dCBjYWxsIHRoaXMgZm9yIHR5cGVzIHdpdGggbm8gc3RyaW5nIHZhbHVlIHN1Y2ggYXMgQ0hFQ0tC
T1ggYW5kIFJBRElPLgpAQCAtMTg1LDcgKzE4Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFzRGF0ZShkb3VibGUpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgZG91YmxlIHZhbHVlQXNOdW1iZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSwgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc051bWJlcihkb3VibGUsIFRleHRGaWVsZEV2ZW50QmVo
YXZpb3IpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNOdW1iZXIoZG91YmxlIHZh
bHVlKSB7IHJldHVybiBzZXRWYWx1ZUFzTnVtYmVyKHZhbHVlLCBEaXNwYXRjaE5vRXZlbnQpOyB9
CiAKICAgICBTdHJpbmcgdmFsdWVXaXRoRGVmYXVsdCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCmluZGV4IDk3N2Vi
NGE2YjgyOTY3ZDRkOGJkZDhiZWZiM2IwMTk3ZDU0OWU2ODYuLjEzMzE1Zjc0YWFjYTEyYmI5NzJk
NmUyYTY0YWJmYzhkYTk1YjBiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCkBAIC0xNjAsNyArMTYwLDcgQEAKIC0gKHZvaWQp
c2V0TG9jYXRpb246KE5TU3RyaW5nICopbmV3TG9jYXRpb24KIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0TG9jYXRpb24obmV3TG9jYXRp
b24pOworICAgIElNUEwtPldlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlv
bihuZXdMb2NhdGlvbik7CiB9CiAKIC0gKGludCl3aWR0aAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>321151</attachid>
            <date>2017-09-18 16:32:15 -0700</date>
            <delta_ts>2017-09-18 16:32:15 -0700</delta_ts>
            <desc>Proof of concept that works</desc>
            <filename>testCallSetter.cpp</filename>
            <type>text/plain</type>
            <size>1585</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">Ly8gYysrIC0tc3RkPWMrKzE0IGZvby5jcHAKCiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDx0
eXBlX3RyYWl0cz4KCnRlbXBsYXRlPGJvb2wgY2FuVGhyb3dFeGNlcHRpb24+CnN0cnVjdCBDYWxs
U2V0dGVyOwoKdGVtcGxhdGU8PgpzdHJ1Y3QgQ2FsbFNldHRlcjx0cnVlPiB7CiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgc3RhdGljIHZvaWQgY2FsbChpbnQgaSwgRnVuY3RvciBm
dW5jdG9yKQogICAgewogICAgICAgIHByaW50ZigiRVhDRVBUSU9OICVkXG4iLCBpKTsKICAgICAg
ICBmdW5jdG9yKCk7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CnN0cnVjdCBDYWxsU2V0dGVyPGZhbHNl
PiB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgc3RhdGljIHZvaWQgY2FsbChp
bnQgaSwgRnVuY3RvciBmdW5jdG9yKQogICAgewogICAgICAgIHByaW50ZigiTk8gRVhDRVBUSU9O
ICVkXG4iLCBpKTsKICAgICAgICBmdW5jdG9yKCk7CiAgICB9Cn07CgpuYW1lc3BhY2UgRGV0YWls
CnsKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdGVtcGxhdGUgPHR5cGVuYW1lLi4uPiBjbGFzcz4K
ICAgIHN0cnVjdCBJc1RlbXBsYXRlXyA6IHN0ZDo6ZmFsc2VfdHlwZQogICAgewogICAgfTsKCiAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHMsIHRlbXBsYXRlIDx0eXBlbmFtZS4uLj4gY2xhc3Mg
Qz4KICAgIHN0cnVjdCBJc1RlbXBsYXRlXzxDPFRzLi4uPiwgQz4gOiBzdGQ6OnRydWVfdHlwZQog
ICAgewogICAgfTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHRlbXBsYXRlIDx0eXBlbmFtZS4u
Lj4gY2xhc3MgVGVtcGxhdGU+CnN0cnVjdCBJc1RlbXBsYXRlIDogcHVibGljIHN0ZDo6aW50ZWdy
YWxfY29uc3RhbnQ8Ym9vbCwgRGV0YWlsOjpJc1RlbXBsYXRlXzxULCBUZW1wbGF0ZT46OnZhbHVl
PiB7fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBFeGNlcHRpb25PciB7Cn07CgpzdHJ1
Y3QgVGVzdCB7CiAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZShkb3VibGUgdikgeyBwcmlu
dGYoInNldFZhbHVlICVmXG4iLCB2KTsgcmV0dXJuIHsgfTsgfQogICAgdm9pZCBzZXRPdGhlclZh
bHVlKGRvdWJsZSB2KSB7IHByaW50Zigic2V0T3RoZXJWYWx1ZSAlZlxuIiwgdik7IH0KfTsKCgpp
bnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgY29uc3QgKmFyZ3ZbXSkKewogICAgVGVzdCBpbXBsOwog
ICAgCiAgICBkb3VibGUgbmF0aXZlVmFsdWUgPSAxMDsKICAgIENhbGxTZXR0ZXI8SXNUZW1wbGF0
ZTxkZWNsdHlwZShpbXBsLnNldFZhbHVlKG5hdGl2ZVZhbHVlKSksIEV4Y2VwdGlvbk9yPjo6dmFs
dWU+OjpjYWxsKDEwLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFZhbHVlKG5hdGl2ZVZh
bHVlKTsKICAgIH0pOwoKICAgIG5hdGl2ZVZhbHVlID0gMjA7CiAgICBDYWxsU2V0dGVyPElzVGVt
cGxhdGU8ZGVjbHR5cGUoaW1wbC5zZXRPdGhlclZhbHVlKG5hdGl2ZVZhbHVlKSksIEV4Y2VwdGlv
bk9yPjo6dmFsdWU+OjpjYWxsKDEwLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldE90aGVy
VmFsdWUobmF0aXZlVmFsdWUpOwogICAgfSk7CgoKICAgIHJldHVybiAwOwp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321457</attachid>
            <date>2017-09-21 11:45:21 -0700</date>
            <delta_ts>2017-09-21 16:14:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177099-20170921114520.patch</filename>
            <type>text/plain</type>
            <size>121785</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGYwYTZlYzRmMmQ4N2Zl
NWYyMmQ2NjMyMTdjZjE1OTk5MDgxMDA3Zi4uOTUzYjk3Y2Q5YzlkNmUzMWFiZDE5MWI0NzU3NDlh
OGIwNjIyZjAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxNy0wOS0yMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBuZWVk
IGZvciBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorICAgICAgICBJbnRy
b2R1Y2luZyBBdHRyaWJ1dGVTZXR0ZXIgdG8gaGFuZGxlIGV4Y2VwdGlvbiByYWlzaW5nIGF0dHJp
YnV0ZSBzZXR0ZXJzLAorICAgICAgICBiYXNlZCBvbiB0aGUgQysrIGNsYXNzIG1ldGhvZCBpbnN0
ZWFkIG9mIFNldHRlck1heVRocm93RXhjZXB0aW9uLgorICAgICAgICBBIGZvbGxvdy11cCBwYXRj
aCBzaG91bGQgcmVtb3ZlIFNldHRlck1heVRocm93RXhjZXB0aW9uIGZyb20gdGhlIElETHMKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdHRyaWJ1dGVTZXR0ZXI8RXhjZXB0aW9uT3I8dm9pZD4+OjpjYWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkF0dHJpYnV0ZVNldHRlcjx2b2lkPjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZVNl
dHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q0VSZWFj
dGlvbnNBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJBdHRy
aWJ1dGVTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1ZVNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJbnRlcmZhY2VTZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVTcGVjaWZpZWRTZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVXaXRo
VmFyaWFudFNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0VuYWJsZWRCeVNldHRp
bmdBdHRyaWJ1dGVTZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFs
T2JqZWN0UmVndWxhckF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25h
bEF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHJTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjJTZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjNTZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGVT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JT
dXBwbGVtZW50YWxTdGF0aWNBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyM1NldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVJlZmxlY3RBdHRyaWJ1dGVTZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RB
dHRyaWJ1dGVSV0N1c3RvbVNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9kZU5hbWVT
ZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakVudW1BdHRyU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5dGVBdHRyU2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqQ2xhbXBlZFNob3J0QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqTG9uZ0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqTG9uZ0xvbmdBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVu
c2lnbmVkTG9uZ0xvbmdBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alN0cmluZ0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVXN2c3Ry
aW5nQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0
clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxlbmllbnRUZXN0T2Jq
QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZ1NldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ1NldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpCeXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmdTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nTG9u
Z1JlY29yZEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVXN2c3Ry
aW5nTG9uZ1JlY29yZEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
U3RyaW5nT2JqUmVjb3JkQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpTdHJpbmdOdWxsYWJsZU9ialJlY29yZEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqRGljdGlvbmFyeUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqTnVsbGFibGVEaWN0aW9uYXJ5QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpBbm5vdGF0ZWRUeXBlSW5VbmlvbkF0dHJTZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHJTZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqWE1MT2JqQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVhdGVTZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0clNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyU2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlVS
TEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uU2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhTZXR0ZXJFeGNlcHRpb25T
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25TZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25TZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqQ3VzdG9tQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpP
bmZvb1NldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPbndlYmtpdGZvb1Nl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aENhbGxXaXRo
QW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGVTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVTZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc1NldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIxU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyM1NldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3JTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yU2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvclNldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGVTZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlU2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak11dGFibGVQb2ludFNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iaklkU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJl
cGxhY2VhYmxlQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
ak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGVTZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJp
YnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZUJ5dGVT
dHJpbmdTZXR0YWJsZUF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGVTZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5naWZpZXJBdHRyaWJ1dGVTZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxseVJlYWRXcml0
ZUF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVTZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0
ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbGx5RXhw
b3NlZFRvV29ya2VyQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGVTZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6YXRpb25GaXJzdFN0cmlu
Z0F0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0
aW9uU2Vjb25kTG9uZ0F0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RTZXJpYWxpemF0aW9uVGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZVNldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRm91cnRoVW5yZXN0cmljdGVkRG91
YmxlQXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6
YXRpb25GaWZ0aExvbmdBdHRyaWJ1dGVTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0U2VyaWFsaXphdGlvblNpeHRoVHlwZWRlZkF0dHJpYnV0ZVNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0aW9uU2V2ZW50aERpcmVjdGx5U2VyaWFsaXphYmxl
QXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6YXRp
b25FaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0
ZVNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUZvb1NldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsRmluYWxMb25n
QXR0cmlidXRlQmFyU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNhY2hlZFZhbHVlU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVJZGVudGlmaWVyU2V0dGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0
clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZVNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0F0
dHJpYnV0ZVdpdGhDbGFtcFNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBl
ZGVmc0F0dHJpYnV0ZVdpdGhDbGFtcEluVHlwZWRlZlNldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uU2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25TZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvblNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVm
c1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdFR5cGVkZWZzQnVmZmVyU291cmNlQXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0RvbVRpbWVTdGFtcEF0dHJTZXR0ZXIpOgorCiAyMDE3LTA5
LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRml4IEFTQU4gYnVpbGQgYWZ0ZXIgcjIyMjMwNgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXR0cmlidXRlLmgKaW5kZXggNjM0ZjQ0MjRkNTI2MzY3ZTJhODcxMjc4MTZmYjJk
ZjEwNjg4MjQ0Yy4uNjgwZTExNjM5Y2UwYWMyZDI4YjA5M2FlYzAwOTQyOWI4ZDYyYWY3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCkBAIC05MCw0ICs5
MCwyNSBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlw
ZT4KK3N0cnVjdCBBdHRyaWJ1dGVTZXR0ZXI7CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBdHRyaWJ1
dGVTZXR0ZXI8RXhjZXB0aW9uT3I8dm9pZD4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgorICAgIHN0YXRpYyB2b2lkIGNhbGwoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUsIEZ1bmN0b3ImJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBmdW5jdG9yKCk7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3Rh
dGUsIHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgIH0KK307CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBBdHRyaWJ1dGVTZXR0ZXI8dm9pZD4geworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgc3RhdGljIHZvaWQgY2FsbChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6VGhyb3dTY29wZSYsIEZ1bmN0b3ImJiBmdW5jdG9yKSB7IGZ1bmN0b3IoKTsgfQorfTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1ZTcwOWYxOGM0ZThlZmJkMWM2NGJj
YzdhZjE2Y2I4MWZhOTM3OTlmLi40ZWMxMmNmN2U4YzRmOWVhYWQ2YTVlY2Y3MjZmZTZjZGMwNDg0
M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtNDgwMSw3ICs0ODAxLDYgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyQm9keURlZmluaXRpb24KICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMg
aW5saW5lIGJvb2wgJHthdHRyaWJ1dGVTZXR0ZXJCb2R5TmFtZX0oIiAuIGpvaW4oIiwgIiwgQHNp
Z25hdHVyZUFyZ3VtZW50cykgLiAiKVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
O1xuIik7CiAgICAgCiAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NF
UmVhY3Rpb25zfSkgewpAQCAtNDkxNSw5ICs0OTE0LDYgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRl
U2V0dGVyQm9keURlZmluaXRpb24KICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0
ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1NldHRlckNhbGxXaXRofSwgJG91dHB1dEFycmF5LCAiZmFsc2UiLCAidGhpc09iamVjdCIpKTsK
ICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVu
Y2VzKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgJG91dHB1dEFy
cmF5LCAiZmFsc2UiLCAidGhpc09iamVjdCIpKTsKIAotICAgICAgICBteSAkZnVuY3Rpb25TdHJp
bmcgPSAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwot
ICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJv
d1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn07Ci0KICAgICAgICAgbXkgJGNhbGxUcmFjaW5n
Q2FsbGJhY2sgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsVHJhY2luZ0Nh
bGxiYWNrfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsVHJhY2luZ0Nh
bGxiYWNrfTsKICAgICAgICAgaWYgKCRjYWxsVHJhY2luZ0NhbGxiYWNrKSB7CiAgICAgICAgICAg
ICBteSAkaW5kZW50ID0gIiAgICAiOwpAQCAtNDkyNiw3ICs0OTIyLDggQEAgc3ViIEdlbmVyYXRl
QXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpb24KICAgICAgICAgICAgIEdlbmVyYXRlQ2FsbFRy
YWNlcigkb3V0cHV0QXJyYXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkYXR0cmlidXRlLT5uYW1l
LCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICRpbmRlbnQpOwogICAgICAgICB9CiAKLSAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7ZnVuY3Rpb25TdHJpbmd9O1xuIik7CisgICAgICAg
IG15ICRmdW5jdGlvblN0cmluZyA9ICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKSI7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBdHRyaWJ1
dGVTZXR0ZXI8ZGVjbHR5cGUoJGZ1bmN0aW9uU3RyaW5nKT46OmNhbGwoc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7IHJldHVybiAkZnVuY3Rpb25TdHJpbmc7IH0pO1xuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgIH0KICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ9XG5cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKaW5kZXggNzBh
ZjRiYzYzMWU1ZmE5NTAxNzE1ODcxMTk1NWZkZjIxYzJiZjg5OS4uNmQwYmE3MTBmMzBlZWRiNWUz
NzBlNjFjNzk1MjFiYzc5MDgwMDZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCkBAIC0y
MDEsMTMgKzIwMSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0
ZVdpdGhDRVJlYWN0aW9ucyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZAogCiBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNTZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Q0VSZWFjdGlvbnMmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyhXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0
cmlidXRlV2l0aENFUmVhY3Rpb25zKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlv
bnMoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MjMyLDEzICsyMzEsMTIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0
QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKEV4ZWNTdGF0ZSogc3RhdGUKIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zUmVmbGVjdEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9u
c1NldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RDRVJlYWN0aW9ucyYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjazsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RhdHRyaWJ1dGV3aXRoY2VyZWFjdGlv
bnNBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1M
TmFtZXM6OnJlZmxlY3RhdHRyaWJ1dGV3aXRoY2VyZWFjdGlvbnNBdHRyLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RhdHRyaWJ1dGV3aXRoY2VyZWFjdGlvbnNBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0p
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjMsNyArMjYxLDYgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlMKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Q0VSZWFjdGlv
bnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigic3RyaW5naWZpZXJBdHRyaWJ1dGUiKSwgc3RybGVu
KCJzdHJpbmdpZmllckF0dHJpYnV0ZSIpKTsKICAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSB0
aGlzT2JqZWN0LmdldCgmc3RhdGUsIGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyLmNwcAppbmRleCBjOWUyOTE1ZDA5NmQ2YzExZGVhZGZhOTdhODA2YTdmYWNm
ZTdhMjNmLi5iMWI0ZGVhOGI1NzIxYjg1MzE2YTFiY2E3MDRmNDllMDJlOTExYTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCkBAIC0xOTEsMTMgKzE5
MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXImIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKLSAgICBpbXBsLnNldFZhbHVlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRy
aWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRWYWx1ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkp
Pjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0VmFsdWUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFj
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxUcmFjZXIuY3BwCmluZGV4IDRkNmQ5NTM3MGIzNmJmNTdmMzFhZGVhZTI2OGU0N2E0MDkwZjEy
MGMuLmE1MTdkZTczY2Y1OGNjZTdlNWFjMDZiMTI1MDU3YTgxMjQxMTA3NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbFRyYWNlci5jcHAKQEAgLTIzNCw3ICsyMzQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RD
YWxsVHJhY2VyVGVzdEF0dHJpYnV0ZUludGVyZmFjZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJ
bnRlcmZhY2VTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Q2FsbFRyYWNlciYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIHZhbHVlKTsKQEAgLTI0NCw3ICsyNDMsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJbnRlcmZhY2VT
ZXR0ZXIoRXhlY1N0YXRlJiBzdAogICAgICAgICBjYWxsVHJhY2VyUGFyYW1ldGVycy5hcHBlbmQo
bmF0aXZlVmFsdWUpOwogICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFj
ZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RBdHRyaWJ1dGVJbnRlcmZhY2UiKSwgV1RGTW92ZShj
YWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAgICBpbXBsLnNldFRlc3RBdHRyaWJ1dGVJ
bnRlcmZhY2UoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNs
dHlwZShpbXBsLnNldFRlc3RBdHRyaWJ1dGVJbnRlcmZhY2UoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
KT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldFRlc3RBdHRy
aWJ1dGVJbnRlcmZhY2UoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMjcxLDcgKzI3MCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFj
ZXJUZXN0QXR0cmlidXRlU3BlY2lmaWVkKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVNwZWNpZmll
ZFNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RDYWxsVHJhY2VyJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExCb29sZWFuPihzdGF0ZSwgdmFsdWUpOwpAQCAtMjgxLDcgKzI3OSw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVNwZWNpZmllZFNldHRlcihF
eGVjU3RhdGUmIHN0CiAgICAgICAgIGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFwcGVuZChuYXRpdmVW
YWx1ZSk7CiAgICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VyQXR0cmlidXRlKGltcGws
IEFTQ0lJTGl0ZXJhbCgidGVzdEF0dHJpYnV0ZVNwZWNpZmllZCIpLCBXVEZNb3ZlKGNhbGxUcmFj
ZXJQYXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwuc2V0VGVzdEF0dHJpYnV0ZVNwZWNpZmll
ZChXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGlt
cGwuc2V0VGVzdEF0dHJpYnV0ZVNwZWNpZmllZChXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0VGVzdEF0dHJpYnV0ZVNw
ZWNpZmllZChXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zMDgsNyArMzA2LDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclRlc3RB
dHRyaWJ1dGVXaXRoVmFyaWFudChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGUKIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlV2l0aFZhcmlhbnRTZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Q2FsbFRyYWNlciYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5p
b248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CkBA
IC0zMTgsNyArMzE1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENhbGxUcmFjZXJU
ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnRTZXR0ZXIoRXhlY1N0YXRlJgogICAgICAgICBXVEY6OnZp
c2l0KFsmXSAoYXV0byYgdmFsdWUpIHsgY2FsbFRyYWNlclBhcmFtZXRlcnMuYXBwZW5kKHZhbHVl
KTsgfSwgbmF0aXZlVmFsdWUpOwogICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlcklu
dGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudCIpLCBX
VEZNb3ZlKGNhbGxUcmFjZXJQYXJhbWV0ZXJzKSk7CiAgICAgfQotICAgIGltcGwuc2V0VGVzdEF0
dHJpYnV0ZVdpdGhWYXJpYW50KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVT
ZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRUZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LnNldFRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudChXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAK
aW5kZXggNTllY2M4N2EwNTMwYjUwOWZkNWRkYzA4OTY0M2M5ZTVhMzFhMDk1OC4uMWE2ODViZjVm
ZWZiMjViYzhjMTllZGZiNDM2MmQ5NWVlNGQ0ZDMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcApAQCAtMjI1LDcgKzIyNSw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEVu
YWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNT
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9i
akVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
LgogICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
IlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiksIHN0cmxlbigiVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmciKSksIHZhbHVlKTsKQEAgLTI1NiwxMiArMjU1LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRF
bmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRFbmFibGVkQnlTZXR0aW5nQXR0
cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggNWQwOGJkMTY1NzVlYWI4NTJmZjkwNjE3
OGJlM2JlNWFiYTMyYmRmYi4uNjlhZTBiY2I0OGNiZWZiMTc2OTkyMGNiYTQ2M2RkMWUxMDBlYTg5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTI1OCwxMiArMjU4LDExIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RSZWd1bGFyQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0UmVn
dWxhckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVy
PGRlY2x0eXBlKGltcGwuc2V0UmVndWxhckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkp
Pjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0UmVndWxhckF0
dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0yODgsMTIgKzI4NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQ
dWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuYwogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0
ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBs
LnNldFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNh
bGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldFB1YmxpY0FuZFByaXZh
dGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMzIyLDEyICszMjAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKEV4ZWNTdGF0ZSoKICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3Rh
dGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
LSAgICBpbXBsLnNldFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZShXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0UHVi
bGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+
OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRQdWJsaWNBbmRQ
cml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzU4LDEyICszNTUsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmMKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgaW1wbC5zZXRFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRFbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKaW5kZXggNDZiMWYzNmZmODMxZTRiMzA0YWRjOWNhZDM5OWVkZDVhMjJkNDQ5
OS4uZTU0ZjI0NmRjYmVhM2E0OTY0YTYzNjg0NmVkZWY4NzJmYmQ0MzEyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKQEAgLTQ5MSwxMSArNDkxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNB
dHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwotICAgIFRlc3RJbnRlcmZhY2U6OnNldEltcGxlbWVudHNTdGF0aWNBdHRyKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoVGVzdEludGVyZmFj
ZTo6c2V0SW1wbGVtZW50c1N0YXRpY0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwo
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBUZXN0SW50ZXJmYWNlOjpzZXRJbXBsZW1l
bnRzU3RhdGljQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC01NDMsMTIgKzU0MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwg
dmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAg
IGltcGwuc2V0SW1wbGVtZW50c1N0cjIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJp
YnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEltcGxlbWVudHNTdHIyKFdURk1vdmUobmF0aXZl
VmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRJ
bXBsZW1lbnRzU3RyMihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC01NzcsNyArNTc1LDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyM1NldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgdGhpc09iamVjdC5zZXRJbXBsZW1lbnRzU3RyMyhzdGF0
ZSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEwLDEyICs2MDcsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGgKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
Tm9kZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETEludGVyZmFjZTxOb2RlPj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIsICJOb2RlIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwu
c2V0SW1wbGVtZW50c05vZGUoKm5hdGl2ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVj
bHR5cGUoaW1wbC5zZXRJbXBsZW1lbnRzTm9kZSgqbmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEltcGxlbWVudHNOb2RlKCpuYXRpdmVW
YWx1ZSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NjEsMTEgKzY1NywxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRp
Y0F0dHIoRXhlY1N0YXRlKiBzdGF0ZQogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVu
dGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0aWNBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0
U3VwcGxlbWVudGFsU3RhdGljQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNl
dFN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzEzLDEyICs3MDgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZQogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjJTZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3Ry
MihpbXBsLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0cjIoaW1wbCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcGws
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTc0
Nyw3ICs3NDEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxT
dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyM1NldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJ
bnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgdGhpc09iamVjdC5zZXRTdXBwbGVtZW50YWxTdHIzKHN0YXRlLCB2YWx1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC03ODAsMTIgKzc3MywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZVNldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVy
ZmFjZTxOb2RlPj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIiwgIk5vZGUiKTsgfSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXBsLCAqbmF0aXZlVmFsdWUpOwor
ICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpz
ZXRTdXBwbGVtZW50YWxOb2RlKGltcGwsICpuYXRpdmVWYWx1ZSkpPjo6Y2FsbChzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBs
ZW1lbnRhbE5vZGUoaW1wbCwgKm5hdGl2ZVZhbHVlKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTgxNiwxMiArODA4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVJl
ZmxlY3RBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RJbnRlcmZhY2VSZWZsZWN0QXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlt
cGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6
OnJlZmxlY3RhdHRyaWJ1dGVBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmli
dXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RhdHRyaWJ1dGVBdHRyLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RhdHRyaWJ1dGVBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRl
eCBkYjAyNWRjY2YzMmI1MTdmZmY3NmQ5ZTI1ZWFlMzc2OTZjOWRjNGNmLi4yNzRjNDUzZGE0NjVj
OTcwNzc0N2RlMTE2ZjczZTdkYjQwMzQzMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTIwNyw3ICsyMDcsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShFeGVjU3RhdGUqIHN0
YXRlLAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JU
ZXN0QXR0cmlidXRlUldDdXN0b21TZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3ImIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgdGhpc09iamVjdC5zZXRUZXN0QXR0cmlidXRlUldDdXN0b20oc3Rh
dGUsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA0ZGEyN2QwZGZh
ZjVjNGZiZmZiMjJmMTc0ZWMwMWEyODRiYzVlYjAwLi41OGNiOTgzMjgzMTMxOTUxMTc2NmI4MzQz
NjA0YjkxZWZjMDkyMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0yNjIsMTIgKzI2MiwxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Tm9kZU5h
bWVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Tm9kZSYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwotICAgIGltcGwuc2V0TmFtZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0TmFtZShXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0TmFtZShX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CmluZGV4IGU2NWY1MmE2MmVmMDQ2MjFjNjZhOTQ3ZmQ3MDk3Y2Y2MmZhYWI0MGQuLmQ1N2FmNzYy
M2E1MDI3ZmY4YTcxZTZmMDI1MzRhYTE0MjZhNDYzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0yMjMzLDEx
ICsyMjMzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3Ry
aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHJTZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgVGVzdE9iajo6
c2V0U3RhdGljU3RyaW5nQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRl
U2V0dGVyPGRlY2x0eXBlKFRlc3RPYmo6OnNldFN0YXRpY1N0cmluZ0F0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBUZXN0T2Jq
OjpzZXRTdGF0aWNTdHJpbmdBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTIyNzQsNyArMjI3Myw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpFbnVtQXR0clNldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgIGF1dG8gb3B0aW9uYWxOYXRpdmVWYWx1ZSA9IHBhcnNlRW51bWVyYXRpb248VGVz
dE9iajo6RW51bVR5cGU+KHN0YXRlLCB2YWx1ZSk7CkBAIC0yMjgyLDcgKzIyODAsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW51bUF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZXN0T2JqJiB0aGlzTwogICAgIGlmIChVTkxJS0VMWSghb3B0aW9uYWxOYXRpdmVWYWx1
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gb3B0aW9u
YWxOYXRpdmVWYWx1ZS52YWx1ZSgpOwotICAgIGltcGwuc2V0RW51bUF0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEVudW1BdHRy
KFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5zZXRFbnVtQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0yMzA3LDEyICsyMzA1LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0clNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEJ5dGU+KHN0YXRlLCB2
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAg
aW1wbC5zZXRCeXRlQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0
dGVyPGRlY2x0eXBlKGltcGwuc2V0Qnl0ZUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNh
bGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEJ5dGVBdHRyKFdURk1v
dmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIzMzcsMTIg
KzIzMzQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHIKIAogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9iak9jdGV0QXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETE9jdGV0PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0T2N0ZXRBdHRyKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRPY3Rl
dEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLnNldE9jdGV0QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzY3LDEyICsyMzYzLDExIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHJT
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExTaG9ydD4o
c3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBpbXBsLnNldFNob3J0QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0
cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0U2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFs
dWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRTaG9y
dEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjM5NywxMiArMjM5MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hv
cnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQ2xhbXBlZFNob3J0QXR0clNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExTaG9ydD4+
KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgaW1wbC5zZXRDbGFtcGVkU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRDbGFtcGVkU2hvcnRBdHRyKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5zZXRDbGFtcGVkU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0MjcsMTIgKzI0MjEsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHQKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakVuZm9yY2VSYW5n
ZVNob3J0QXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETEVuZm9yY2VSYW5nZUFkYXB0b3I8SURMU2hvcnQ+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0RW5mb3Jj
ZVJhbmdlU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0
ZXI8ZGVjbHR5cGUoaW1wbC5zZXRFbmZvcmNlUmFuZ2VTaG9ydEF0dHIoV1RGTW92ZShuYXRpdmVW
YWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEVu
Zm9yY2VSYW5nZVNob3J0QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0yNDU3LDEyICsyNDUwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0clNl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVuc2lnbmVk
U2hvcnQ+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRVbnNpZ25lZFNob3J0QXR0cihXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VW5zaWduZWRTaG9y
dEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7IHJldHVybiBpbXBsLnNldFVuc2lnbmVkU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUp
KTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0ODcsMTIgKzI0NzksMTEgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm8KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakxv
bmdBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TG9uZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldExvbmdBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRMb25nQXR0cihXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0
TG9uZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjUxNywxMiArMjUwOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogCiBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZ0xvbmc+KHN0YXRlLCB2YWx1ZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5z
ZXRMb25nTG9uZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRl
cjxkZWNsdHlwZShpbXBsLnNldExvbmdMb25nQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6
Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0TG9uZ0xvbmdBdHRy
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI1
NDcsMTIgKzI1MzcsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oc3RhdGUs
IHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAg
ICBpbXBsLnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRVbnNpZ25lZExvbmdMb25nQXR0cihX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0
dXJuIGltcGwuc2V0VW5zaWduZWRMb25nTG9uZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU3NywxMiArMjU2NiwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5n
QXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFN0cmluZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFN0cmluZ0F0dHIoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLnNldFN0cmluZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMjYwNywxMiArMjU5NSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpVc3ZzdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVXN2c3RyaW5nQXR0clNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVTVlN0cmluZz4oc3Rh
dGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
LSAgICBpbXBsLnNldFVzdnN0cmluZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0
dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFVzdnN0cmluZ0F0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNl
dFVzdnN0cmluZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMjYzNywxMiArMjYyNCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpU
ZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0clNldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4o
c3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdE9iamVj
dCIsICJ0ZXN0T2JqQXR0ciIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0VGVzdE9iakF0dHIoKm5hdGl2ZVZh
bHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRUZXN0T2JqQXR0cigq
bmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBs
LnNldFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0yNjY3LDEyICsyNjUzLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3ROdWxs
YWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyU2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJm
YWNlPFRlc3RPYmo+Pj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIiwgIlRlc3RPYmoiKTsgfSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5z
ZXRUZXN0TnVsbGFibGVPYmpBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1
dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKFdURk1vdmUobmF0
aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5z
ZXRUZXN0TnVsbGFibGVPYmpBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTI2OTcsMTIgKzI2ODIsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXMKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0
clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVy
ZmFjZTxUZXN0T2JqPj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiVGVzdE9iamVjdCIsICJsZW5pZW50VGVzdE9iakF0dHIiLCAiVGVzdE9iaiIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNl
dExlbmllbnRUZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpOworICAgIEF0dHJpYnV0ZVNldHRlcjxk
ZWNsdHlwZShpbXBsLnNldExlbmllbnRUZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpKT46OmNhbGwo
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldExlbmllbnRUZXN0T2JqQXR0
cigqbmF0aXZlVmFsdWUpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjc0MSwxMiAr
MjcyNSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbgogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5
QWRhcHRvcjxJRExET01TdHJpbmc+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0U3RyaW5nQXR0clRyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNl
dHRlcjxkZWNsdHlwZShpbXBsLnNldFN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5zZXRTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNzcxLDEyICsy
NzU0LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ1NldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1w
dHlBZGFwdG9yPElETFVTVlN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRVc3ZzdHJpbmdBdHRyVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmli
dXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLnNldFVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTI4MDEsMTIgKzI3ODMsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZVN0cmluZ0F0
dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUKIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9iakJ5dGVTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZ1NldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRy
ZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETEJ5dGVTdHJpbmc+PihzdGF0ZSwgdmFsdWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Qnl0
ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRCeXRlU3RyaW5nQXR0clRy
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEJ5dGVTdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0yODMxLDEyICsyODEyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialN0cmluZ0xvbmdSZWNvcmRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdMb25nUmVjb3JkQXR0
clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFJlY29y
ZDxJRExET01TdHJpbmcsIElETExvbmc+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0U3RyaW5nTG9uZ1JlY29y
ZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlw
ZShpbXBsLnNldFN0cmluZ0xvbmdSZWNvcmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+Ojpj
YWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRTdHJpbmdMb25nUmVj
b3JkQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0yODYxLDEyICsyODQxLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmlu
Z0xvbmdSZWNvcmRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdMb25nUmVjb3JkQXR0clNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFJlY29yZDxJRExVU1ZT
dHJpbmcsIElETExvbmc+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0VXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBs
LnNldFVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxs
KHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRVc3ZzdHJpbmdMb25nUmVj
b3JkQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0yODkxLDEyICsyODcwLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmlu
Z0xvbmdSZWNvcmRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdMb25nUmVjb3JkQXR0clNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFJlY29yZDxJRExCeXRl
U3RyaW5nLCBJRExMb25nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFVzdnN0cmluZ0xvbmdSZWNvcmRBdHRy
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1w
bC5zZXRVc3ZzdHJpbmdMb25nUmVjb3JkQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0VXN2c3RyaW5nTG9uZ1Jl
Y29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjkyMSwxMiArMjg5OSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdP
YmpSZWNvcmRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nT2JqUmVjb3JkQXR0clNldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFJlY29yZDxJRExET01TdHJp
bmcsIElETEludGVyZmFjZTxUZXN0T2JqPj4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRTdHJpbmdPYmpSZWNv
cmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRTdHJpbmdPYmpSZWNvcmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+Ojpj
YWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRTdHJpbmdPYmpSZWNv
cmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTI5NTEsMTIgKzI5MjgsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nTnVs
bGFibGVPYmpSZWNvcmRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1YKIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9ialN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0clNldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFJlY29yZDxJRExE
T01TdHJpbmcsIElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+PihzdGF0ZSwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlt
cGwuc2V0U3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRTdHJpbmdOdWxsYWJsZU9ialJl
Y29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLnNldFN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0cihXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yOTgxLDEyICsy
OTU3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRpY3Rpb25hcnlBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpEaWN0aW9uYXJ5QXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaW1wbC5zZXREaWN0aW9uYXJ5QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0
cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0RGljdGlvbmFyeUF0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNl
dERpY3Rpb25hcnlBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTMwMTEsMTIgKzI5ODYsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVEaWN0aW9uYXJ5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVEaWN0aW9uYXJ5QXR0clNl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxl
PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+PihzdGF0ZSwgdmFsdWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0TnVs
bGFibGVEaWN0aW9uYXJ5QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRl
U2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0TnVsbGFibGVEaWN0aW9uYXJ5QXR0cihXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwu
c2V0TnVsbGFibGVEaWN0aW9uYXJ5QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zMDQxLDEyICszMDE1LDExIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakFubm90YXRlZFR5cGVJblVuaW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpBbm5vdGF0ZWRUeXBl
SW5VbmlvbkF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExVbmlvbjxJRExET01TdHJpbmcsIElETENsYW1wQWRhcHRvcjxJRExMb25nPj4+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaW1wbC5zZXRBbm5vdGF0ZWRUeXBlSW5VbmlvbkF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEFubm90YXRlZFR5cGVJblVu
aW9uQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsgcmV0dXJuIGltcGwuc2V0QW5ub3RhdGVkVHlwZUluVW5pb25BdHRyKFdURk1vdmUobmF0
aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMwNzEsMTIgKzMwNDQs
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1YKIAogc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdE9iakFubm90YXRlZFR5cGVJblNlcXVlbmNlQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETENsYW1wQWRhcHRvcjxJRExM
b25nPj4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRBbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHIoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEFu
bm90YXRlZFR5cGVJblNlcXVlbmNlQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0QW5ub3RhdGVkVHlwZUluU2Vx
dWVuY2VBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTMxMDEsNyArMzA3Myw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltcGxlbWVu
dGF0aW9uRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHJTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG9wdGlvbmFsTmF0aXZlVmFsdWUgPSBwYXJzZUVudW1lcmF0aW9uPEFs
dGVybmF0ZUVudW1OYW1lPihzdGF0ZSwgdmFsdWUpOwpAQCAtMzEwOSw3ICszMDgwLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHJTZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlMKICAgICBpZiAoVU5MSUtFTFkoIW9wdGlvbmFsTmF0aXZlVmFs
dWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IG9wdGlv
bmFsTmF0aXZlVmFsdWUudmFsdWUoKTsKLSAgICBpbXBsLnNldEltcGxlbWVudGF0aW9uRW51bUF0
dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShp
bXBsLnNldEltcGxlbWVudGF0aW9uRW51bUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNh
bGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEltcGxlbWVudGF0aW9u
RW51bUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMzEzNCwxMiArMzEwNSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUAogCiBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0clNldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUs
IHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJY
TUxPYmpBdHRyIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRYTUxPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7Cisg
ICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0WE1MT2JqQXR0cigqbmF0aXZlVmFs
dWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldFhNTE9i
akF0dHIoKm5hdGl2ZVZhbHVlKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxNjQs
MTIgKzMxMzQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGUKIAogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iakNyZWF0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRDcmVhdGUoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldENyZWF0
ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwuc2V0Q3JlYXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTMxOTQsMTIgKzMxNjMsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGkKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0
dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01T
dHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5n
YXR0ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMyMjQsMTIgKzMxOTIsMTEg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETFVTVlN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJp
bmdhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxk
ZWNsdHlwZShpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1
c3ZzdHJpbmdhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMzI1NCwxMiArMzIyMSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRy
U2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4o
c3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBpbXBsLnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVm
bGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJp
YnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
KT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEludGVncmFs
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzI4
NCwxMiArMzI1MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KHN0
YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgaW1wbC5zZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VW5zaWduZWRJbnRlZ3Jh
bEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxh
dHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7IHJldHVybiBpbXBsLnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMzMTQsMTIgKzMyNzks
MTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKIAogc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEJvb2xlYW5BdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRC
b29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJB
dHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuc2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzM0NCwxMiArMzMwOCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0
clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0
ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzM3NCwxMiArMzMzNywxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkVVNWVVJMQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETFVTVlN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0ciwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWR1c3Z1cmxhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0ciwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQwNCwx
MiArMzM2NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21D
b250ZW50U3RyaW5nQXR0ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1
dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6
OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQzNCwxMiArMzM5NSwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEludGVncmFsQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0dHIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRJbnRlZ3Jh
bEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJB
dHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuc2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpj
dXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQ2NCwxMiArMzQyNCwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tQm9vbGVhbkF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRCb29sZWFu
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0
ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
IHJldHVybiBpbXBsLnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zNDk0LDEyICszNDUzLDExIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3Rv
bVVSTEF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNv
bnRlbnRVUkxBdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM1MjgsMTIg
KzM0ODYsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWwKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRF
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRFbmFibGVkQXRSdW50aW1lQXR0
cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM1NjAsMTIgKzM1MTcsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJh
eUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHUKIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRmxvYXQzMkFycmF5PihzdGF0ZSwgdmFs
dWUsIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgInR5cGVk
QXJyYXlBdHRyIiwgIkZsb2F0MzJBcnJheSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZh
bHVlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBs
LnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZhbHVlLnJlbGVhc2VOb25OdWxsKCkpKT46OmNhbGwo
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5h
dGl2ZVZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMzU5MCwxMiArMzU0NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvblNldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExvbmc+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRBdHRyaWJ1dGVXaXRo
R2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9u
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2
MjAsMTIgKzM1NzUsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFNl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlMKIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhTZXR0ZXJFeGNlcHRpb25TZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIHBy
b3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5zZXRBdHRyaWJ1dGVXaXRo
U2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKSk7CisgICAgQXR0cmlidXRlU2V0
dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aFNldHRlckV4Y2VwdGlvbihXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwuc2V0QXR0cmlidXRlV2l0aFNldHRlckV4Y2VwdGlvbihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNjUwLDEyICszNjA0LDExIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvblNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVT
ZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJu
IGltcGwuc2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY4MCwxMiArMzYzMywxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25TZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0
aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBl
KGltcGwuc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1
ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldFN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTM3MDgsNyArMzY2MCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRyU2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICB0aGlzT2JqZWN0LnNldEN1c3RvbUF0dHIo
c3RhdGUsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3MzMsNyArMzY4NCw2IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVyCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpP
bmZvb1NldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2V0RXZlbnRIYW5kbGVy
QXR0cmlidXRlKHN0YXRlLCB0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LndyYXBwZWQoKSwgZXZlbnRO
YW1lcygpLmZvb0V2ZW50LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNzU4LDcgKzM3
MDgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbndlYmtpdGZvbyhFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpPbndlYmtpdGZvb1NldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
c2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKHN0YXRlLCB0aGlzT2JqZWN0LCB0aGlzT2JqZWN0Lndy
YXBwZWQoKSwgZXZlbnROYW1lcygpLmZvb0V2ZW50LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0zNzg1LDEyICszNzM0LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVTZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwg
dmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAg
IGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0V2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlKHN0YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KHN0YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zODE1LDEyICszNzYzLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0
dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJp
YnV0ZShzdGF0ZSwgYWN0aXZlRE9NV2luZG93KHN0YXRlKSwgZmlyc3RET01XaW5kb3coc3RhdGUp
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGlt
cGwuc2V0V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoc3RhdGUsIGFjdGl2
ZURPTVdpbmRvdyhzdGF0ZSksIGZpcnN0RE9NV2luZG93KHN0YXRlKSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldFdp
dGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKHN0YXRlLCBhY3RpdmVET01XaW5k
b3coc3RhdGUpLCBmaXJzdERPTVdpbmRvdyhzdGF0ZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsg
fSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM4NDgsNyArMzc5NSw2IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUsIHZhbHVlLCBb
XShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
dHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7IH0pOwpAQCAtMzg1Niw3ICsz
ODAyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlU2V0dGVyKEV4ZWNTdGEKICAgICBhdXRvKiBjb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKCpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOworICAgIEF0dHJpYnV0ZVNldHRlcjxk
ZWNsdHlwZShpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpjb250
ZXh0LCAqbmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpjb250ZXh0LCAq
bmF0aXZlVmFsdWUpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzg4MSwxMiArMzgy
NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0
ZSwgdmFsdWUsIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsICJUZXN0T2JqIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0V2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKHN0YXRlLCAqbmF0aXZlVmFsdWUpOworICAgIEF0dHJp
YnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyhzdGF0ZSwgKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoc3RhdGUsICpuYXRp
dmVWYWx1ZSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTE0LDcgKzM4NTksNiBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNTZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+
KHN0YXRlLCB2YWx1ZSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlRlc3RPYmpl
Y3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9i
aiIpOyB9KTsKQEAgLTM5MjIsNyArMzg2Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc1NldHRlcihFCiAg
ICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNvbnRleHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29udGV4dCwgKm5hdGl2ZVZh
bHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29udGV4dCwgKm5hdGl2ZVZhbHVlKSk+Ojpj
YWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsgfSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5NTAsNyArMzg5NCw2IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoRXhlY1N0CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0
ZSwgdmFsdWUsIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCAiVGVz
dE9iaiIpOyB9KTsKQEAgLTM5NTgsNyArMzkwMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNvbnRleHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRlLCAq
Y29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1w
bC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0
YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geyByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTM5ODYsNyArMzkyOSw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzU2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0ZSwg
dmFsdWUsIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAi
VGVzdE9iaiIpOyB9KTsKQEAgLTM5OTQsNyArMzkzNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlCiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRl
LmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNvbnRleHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5z
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KHN0YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVj
bHR5cGUoaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKHN0YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKHN0YXRlLCAqY29udGV4dCwgKm5hdGl2
ZVZhbHVlKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQwMjIsNyArMzk2NCw2IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmliCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETElu
dGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsICJUZXN0T2JqIik7IH0pOwpAQCAtNDAzMCw3ICsz
OTcxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2UKICAgICBhdXRvKiBjb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCwgKm5hdGl2
ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShzdGF0ZSwg
KmNvbnRleHQsICpuYXRpdmVWYWx1ZSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsg
cmV0dXJuIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUoc3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOyB9KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA1OSwxMiArNDAwMCwxMSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYQogI2lmIEVOQUJMRShDb25kaXRpb24xKQogc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjFTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRy
MShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGlt
cGwuc2V0Q29uZGl0aW9uYWxBdHRyMShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMShXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MDk1LDEy
ICs0MDM1LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMihXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q29u
ZGl0aW9uYWxBdHRyMihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMihXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MTMxLDEyICs0MDcwLDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVO
QUJMRShDb25kaXRpb24yKQogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjNTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMyhXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q29uZGl0aW9uYWxB
dHRyMyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MTY1LDcgKzQxMDMsNiBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVgogI2lmIEVOQUJMRShDb25kaXRpb24xKQogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvclNldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IuCiAgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiY29uZGl0aW9uYWxBdHRyNCIpLCBzdHJsZW4oImNvbmRpdGlvbmFsQXR0cjQiKSksIHZhbHVl
KTsKQEAgLTQxOTYsNyArNDEzMyw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvclNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3Iu
CiAgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
Y29uZGl0aW9uYWxBdHRyNSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsQXR0cjUiKSksIHZhbHVlKTsK
QEAgLTQyMjcsNyArNDE2Myw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvclNldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCiAg
ICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29u
ZGl0aW9uYWxBdHRyNiIpLCBzdHJsZW4oImNvbmRpdGlvbmFsQXR0cjYiKSksIHZhbHVlKTsKQEAg
LTQyOTAsMTIgKzQyMjUsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEFueT4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEFueUF0dHJp
YnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBl
KGltcGwuc2V0QW55QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRBbnlBdHRyaWJ1dGUoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDMyMCwxMiArNDI1
NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMT2JqZWN0PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0T2JqZWN0QXR0cmlidXRl
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1w
bC5zZXRPYmplY3RBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldE9iamVjdEF0dHJpYnV0ZShXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MzY0LDEyICs0
Mjk3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnRTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+PihzdGF0ZSwgdmFsdWUsIFtdKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2ludCIs
ICJTVkdQb2ludCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKLSAgICBpbXBsLnNldE11dGFibGVQb2ludCgqbmF0aXZlVmFsdWUpOworICAgIEF0dHJp
YnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldE11dGFibGVQb2ludCgqbmF0aXZlVmFsdWUpKT46
OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldE11dGFibGVQb2lu
dCgqbmF0aXZlVmFsdWUpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDM5NCwxMiAr
NDMyNiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUAogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqU3RyYXdiZXJyeVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRCbHVlYmVycnkoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEJsdWVi
ZXJyeShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZd
IHsgcmV0dXJuIGltcGwuc2V0Qmx1ZWJlcnJ5KFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ0MzgsMTIgKzQzNjksMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU4KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iaklkU2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZh
bHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBp
bXBsLnNldElkKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVj
bHR5cGUoaW1wbC5zZXRJZChXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0SWQoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDQ4Miw3ICs0NDEyLDYgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGgKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlcGxhY2Vh
YmxlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBwcm9wZXJ0eS4KICAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJl
Y3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUudm0oKSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCBzdHJsZW4o
InJlcGxhY2VhYmxlQXR0cmlidXRlIikpLCB2YWx1ZSk7CkBAIC00NTY1LDEyICs0NDk0LDExIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETExvbmc+PihzdGF0ZSwgdmFsdWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwu
c2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldE51bGxhYmxlTG9uZ1NldHRhYmxl
QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5zZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NTk1LDEy
ICs0NTIzLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFi
bGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlCiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlU2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMRE9NU3Ry
aW5nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldE51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNl
dE51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46
OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldE51bGxhYmxlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtNDYyNSwxMiArNDU1MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuYwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdT
ZXR0YWJsZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETE51bGxhYmxlPElETFVTVlN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXROdWxsYWJs
ZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBB
dHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXROdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxl
QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5zZXROdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRl
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ2
NTUsMTIgKzQ1ODEsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCeXRlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW4KIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9iak51bGxhYmxlQnl0ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlU2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8
SURMQnl0ZVN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXROdWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJs
ZUF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRl
Y2x0eXBlKGltcGwuc2V0TnVsbGFibGVCeXRlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLnNldE51bGxhYmxlQnl0ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKFdURk1vdmUobmF0aXZl
VmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ2ODUsMTIgKzQ2MTAsMTEg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9iak51bGxhYmxlU3RyaW5nVmFsdWVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExMb25nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldE51bGxh
YmxlU3RyaW5nVmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRl
cjxkZWNsdHlwZShpbXBsLnNldE51bGxhYmxlU3RyaW5nVmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1
ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldE51bGxh
YmxlU3RyaW5nVmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDcyOSw3ICs0NjUzLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEoKIAog
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1U
eXBlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBvcHRpb25hbE5hdGl2ZVZhbHVlID0gcGFyc2VF
bnVtZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4oc3RhdGUsIHZhbHVlKTsKQEAgLTQ3MzcsNyAr
NDY2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVz
ZXJ2ZWRFbnVtVHlwZVNldHRlcihFeGVjU3RhdGUmIHN0CiAgICAgaWYgKFVOTElLRUxZKCFvcHRp
b25hbE5hdGl2ZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBvcHRpb25hbE5hdGl2ZVZhbHVlLnZhbHVlKCk7Ci0gICAgaW1wbC5zZXRBdHRyaWJ1
dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmli
dXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLnNldEF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKFdURk1vdmUobmF0aXZl
VmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ3OTAsNyArNDcxMyw2IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpQdXRGb3J3YXJkc0F0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKSwgc3RybGVuKCJw
dXRGb3J3YXJkc0F0dHJpYnV0ZSIpKTsKICAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSB0aGlz
T2JqZWN0LmdldCgmc3RhdGUsIGlkKTsKQEAgLTQ4MjcsNyArNDc0OSw2IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJk
c051bGxhYmxlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUudm0oKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIiksIHN0cmxl
bigicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpKTsKICAgICBhdXRvIHZhbHVlVG9Gb3J3
YXJkVG8gPSB0aGlzT2JqZWN0LmdldCgmc3RhdGUsIGlkKTsKQEAgLTQ4NjQsMTIgKzQ3ODUsMTEg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5naWZpZXJBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9ialN0cmluZ2lmaWVyQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMVVNWU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0U3RyaW5naWZpZXJB
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNs
dHlwZShpbXBsLnNldFN0cmluZ2lmaWVyQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+
OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRTdHJpbmdpZmll
ckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC00ODk1LDEyICs0ODE1LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRp
dGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlCiAjaWYg
RU5BQkxFKENPTkRJVElPTikKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbGx5UmVhZFdyaXRlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PihzdGF0ZSwgdmFsdWUsIFtdKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0
ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsbHlSZWFk
V3JpdGVBdHRyaWJ1dGUiLCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRy
aWJ1dGUoKm5hdGl2ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5z
ZXRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSkpPjo6Y2FsbChz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDkzMiwxMiArNDg1MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25h
bEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKgogI2lmIEVOQUJM
RShDT05ESVRJT04pCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
bmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PihzdGF0ZSwgdmFsdWUs
IFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0F0dHJpYnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlv
bmFsQW5kQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIsICJOb2RlIik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q29u
ZGl0aW9uYWxBbmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7
CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q29uZGl0aW9uYWxBbmRDb25k
aXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSkpPjo6Y2FsbChzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9uYWxBbmRDb25kaXRpb25h
bGx5UmVhZFdyaXRlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7IH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC00OTY2LDEyICs0ODg0LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwKIAog
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5k
b3dBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0
dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKGltcGwuc2V0Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZShXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGlt
cGwuc2V0Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00OTk2LDEyICs0OTEzLDEx
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0
Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q29uZGl0aW9uYWxseUV4
cG9zZWRUb1dvcmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9uYWxseUV4cG9zZWRU
b1dvcmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC01MDI2LDEyICs0OTQyLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGUoRXhlY1N0YXRl
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRv
V2luZG93QW5kV29ya2VyQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldENvbmRpdGlvbmFsbHlFeHBv
c2VkVG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAg
IEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldENvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
aW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldENvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCmluZGV4IGMw
YjFiNDYzOTBkOTUzNTllM2YzODE2MjRlNmE1NGZmNmJjYTU1NDMuLmU2YmQ4NzM1Yzc1MmZiMGRj
YmE1ZThmMWYzZGFkYjI5MmZkM2E3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAK
QEAgLTIxOCwxMiArMjE4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25G
aXJzdFN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGVTZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Rmlyc3RTdHJpbmdBdHRyaWJ1dGUoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEZpcnN0
U3RyaW5nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRGaXJzdFN0cmluZ0F0dHJpYnV0ZShXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDgsMTIgKzI0
NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uU2Vjb25kTG9uZ0F0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0U2VyaWFsaXphdGlvblNlY29uZExvbmdBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZh
bHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBp
bXBsLnNldFNlY29uZExvbmdBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0
dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFNlY29uZExvbmdBdHRyaWJ1dGUoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBp
bXBsLnNldFNlY29uZExvbmdBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjc4LDEyICsyNzYsMTEgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0U2VyaWFsaXphdGlvblRoaXJkVW5zZXJpYWxpemFibGVBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25UaGly
ZFVuc2VyaWFsaXphYmxlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNl
cmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0RXhjZXB0aW9uPj4oc3Rh
dGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdFNlcmlhbGl6
YXRpb24iLCAidGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZSIsICJUZXN0RXhjZXB0aW9uIik7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlt
cGwuc2V0VGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOworICAgIEF0
dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFRoaXJkVW5zZXJpYWxpemFibGVBdHRyaWJ1
dGUoKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4g
aW1wbC5zZXRUaGlyZFVuc2VyaWFsaXphYmxlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7IH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDgsMTIgKzMwNSwxMSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogcwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkZv
dXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExVbnJlc3RyaWN0ZWREb3VibGU+KHN0
YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgaW1wbC5zZXRGb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEZvdXJ0
aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0Rm91cnRoVW5yZXN0cmlj
dGVkRG91YmxlQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTMzOCwxMiArMzM0LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6YXRpb25GaWZ0aExvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRmlmdGhMb25nQXR0
cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRGaWZ0aExvbmdBdHRyaWJ1dGUoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEZp
ZnRoTG9uZ0F0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0RmlmdGhMb25nQXR0cmlidXRlKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OCwxMiArMzYz
LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25TaXh0aFR5cGVkZWZBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RTZXJpYWxpemF0aW9uU2l4dGhUeXBlZGVmQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERvdWJsZT4oc3RhdGUs
IHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAg
ICBpbXBsLnNldFNpeHRoVHlwZWRlZkF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Cisg
ICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0U2l4dGhUeXBlZGVmQXR0cmlidXRl
KFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyBy
ZXR1cm4gaW1wbC5zZXRTaXh0aFR5cGVkZWZBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzk4LDEyICszOTIsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvblNldmVudGhEaXJlY3RseVNlcmlhbGl6YWJsZUF0
dHJpYnV0ZShFeGVjU3RhdGUKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6
YXRpb25TZXZlbnRoRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsPj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdFNlcmlhbGl6YXRpb24iLCAic2V2ZW50aERpcmVjdGx5
U2VyaWFsaXphYmxlQXR0cmlidXRlIiwgIlRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsIik7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlt
cGwuc2V0U2V2ZW50aERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7
CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0U2V2ZW50aERpcmVjdGx5U2Vy
aWFsaXphYmxlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0U2V2ZW50aERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmli
dXRlKCpuYXRpdmVWYWx1ZSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MjgsMTIg
KzQyMSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRoSW5kaXJl
Y3RseUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbgogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0U2VyaWFsaXphdGlvbkVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGVTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJm
YWNlPFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZT4+KHN0YXRlLCB2YWx1ZSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlRlc3RTZXJpYWxpemF0aW9uIiwgImVp
Z2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUiLCAiVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVy
aXRhbmNlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwotICAgIGltcGwuc2V0RWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwor
ICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEVpZ2h0aEluZGlyZWN0bHlBdHRy
aWJ1dGUoKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1
cm4gaW1wbC5zZXRFaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7IH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0LmNwcAppbmRleCBlMjI5Mzc2NDZlMTdmMGYyNjZiYzkxY2RmYjBmYWU1YTRiNDc1OGMzLi45
YzU5OTg4NTA1MTMyMTU0NGU1OTIxNWQyMzM1ZmUxYzhmNmIxNzYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKQEAgLTE4MywxMiArMTgzLDExIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0SW5oZXJpdExvbmdBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0SW5oZXJpdExvbmdBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExvbmc+KHN0YXRlLCB2
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAg
aW1wbC5zZXRJbmhlcml0TG9uZ0F0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0SW5oZXJpdExvbmdBdHRyaWJ1dGUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVy
biBpbXBsLnNldEluaGVyaXRMb25nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA4MGUwZjYyMTYwYTJmNmIzYTZjNWQ1ZDE3NTQ4YTNi
MDE3NjVhZTExLi5iZmI5YjU5OThmMGU2ZjFkMzM4NDlhYTk2ZTg3NDE0YjIxZGUwZmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCkBAIC0x
ODYsMTIgKzE4NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dEZpbmFsRmluYWxMb25nQXR0cmlidXRlRm9vKEV4ZWNTdGF0ZSogcwogCiBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0
ZUZvb1NldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0RmluYWxMb25nQXR0cmli
dXRlRm9vKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRGaW5hbExvbmdBdHRyaWJ1dGVGb28oV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46
OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEZpbmFsTG9uZ0F0
dHJpYnV0ZUZvbyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yMTYsMTIgKzIxNSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRlQmFyKEV4ZWNTdGF0ZSogcwogCiBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9u
Z0F0dHJpYnV0ZUJhclNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0RmluYWxM
b25nQXR0cmlidXRlQmFyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0
ZXI8ZGVjbHR5cGUoaW1wbC5zZXRGaW5hbExvbmdBdHRyaWJ1dGVCYXIoV1RGTW92ZShuYXRpdmVW
YWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldEZp
bmFsTG9uZ0F0dHJpYnV0ZUJhcihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVy
biB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGIzMjFiYWUxNGYwMWViZjVkNzhiNTVmM2MzZThmNzdh
Mzc0MzE4NDguLmFjZTRiYWZmZGFhZjVhODI1ZTI3ZmRiMmE3NDM5ZjM0NzNlNmE3YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCkBAIC0yMTAsMTIgKzIxMCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZAogCiBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFs
dWVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFZhbHVlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRWYWx1ZShXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0
VmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjU3LDEyICsyNTYsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwKIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZh
bHVlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRDYWNoZWRWYWx1ZShXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q2FjaGVkVmFsdWUo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJl
dHVybiBpbXBsLnNldENhY2hlZFZhbHVlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCmluZGV4IGJkODRkZDZlZmYwNDAzNDEwYmMxMjYzMTBkN2Zj
ZTBiNTkzNGNhYTguLjRkNDBlMTllMDMwZDU4ZTMzNzQ3YWQ2NDAxODU5YTdhNTNhZWE4NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
LmNwcApAQCAtMTkwLDEyICsxOTAsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGVJZGVudGlmaWVyKEV4ZWNTdGF0ZSogc3RhdGUsIEUKIAogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlSWRl
bnRpZmllclNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0SWRl
bnRpZmllcihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKGltcGwuc2V0SWRlbnRpZmllcihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0SWRlbnRpZmllcihXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAppbmRleCA3MTVjNzlmYTU0NzgzZjJmZmM1YmIyNTQ1YTk5ODNhYWM5NTZlYWJiLi42MWQ5N2Ix
ZTY1NzY5YzU5ZGQwMGQ4YWJmOWRiODRmMmJkYzVhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
QEAgLTMwNSwxMiArMzA1LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzVW5zaWdu
ZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsCiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyU2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExVbnNpZ25lZExv
bmdMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwotICAgIGltcGwuc2V0VW5zaWduZWRMb25nTG9uZ0F0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFVuc2lnbmVk
TG9uZ0xvbmdBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRVbnNpZ25lZExvbmdMb25nQXR0cihXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzUsMTIgKzMzNCwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0VHlwZWRlZnNTZXJpYWxpemVkU2NyaXB0VmFsdWVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0U2VyaWFsaXplZFNjcmlwdFZhbHVl
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1w
bC5zZXRTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwo
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7IHJldHVybiBpbXBsLnNldFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0zNzcsMTIgKzM3NSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJpYnV0
ZVdpdGhDbGFtcChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXBTZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJ
RExVbnNpZ25lZExvbmdMb25nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhDbGFtcChX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwu
c2V0QXR0cmlidXRlV2l0aENsYW1wKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRoQ2xhbXAoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDEy
ICs0MDQsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xh
bXBJblR5cGVkZWYoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2QKIAogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdFR5cGVkZWZzQXR0cmlidXRlV2l0aENsYW1wSW5UeXBlZGVmU2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExDbGFtcEFkYXB0b3I8
SURMTG9uZz4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRoQ2xhbXBJblR5cGVkZWYoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNl
dEF0dHJpYnV0ZVdpdGhDbGFtcEluVHlwZWRlZihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0QXR0cmlidXRlV2l0aENs
YW1wSW5UeXBlZGVmKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTQzNywxMiArNDMzLDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
U2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
b25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwotICAgIGltcGwuc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NjcsMTIg
KzQ2MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvblNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVl
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBwcm9w
YWdhdGVFeGNlcHRpb24oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuc2V0QXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVj
bHR5cGUoaW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0QXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNDk3LDEyICs0OTEsMTEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmMK
IAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25TZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVj
bHR5cGUoaW1wbC5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTI3LDEyICs1MjAsMTEgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBFbmMKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25TZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0VHlw
ZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRp
b24oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUo
aW1wbC5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsgcmV0dXJuIGltcGwuc2V0U3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpOyB9KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTU3LDEyICs1NDksMTEgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNCdWZmZXJTb3VyY2VBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHQKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFR5cGVkZWZzQnVmZmVyU291cmNl
QXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMVW5pb248SURMQXJyYXlCdWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+KHN0YXRlLCB2YWx1
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1w
bC5zZXRCdWZmZXJTb3VyY2VBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1
dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRCdWZmZXJTb3VyY2VBdHRyKFdURk1vdmUobmF0aXZl
VmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geyByZXR1cm4gaW1wbC5zZXRC
dWZmZXJTb3VyY2VBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTU4NywxMiArNTc4LDExIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzRG9tVGltZVN0YW1wQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0RvbVRpbWVTdGFtcEF0dHJTZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVuc2ln
bmVkTG9uZ0xvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXREb21UaW1lU3RhbXBBdHRyKFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXREb21UaW1l
U3RhbXBBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geyByZXR1cm4gaW1wbC5zZXREb21UaW1lU3RhbXBBdHRyKFdURk1vdmUobmF0aXZlVmFs
dWUpKTsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321489</attachid>
            <date>2017-09-21 16:14:05 -0700</date>
            <delta_ts>2017-09-21 16:37:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177099-20170921161405.patch</filename>
            <type>text/plain</type>
            <size>114898</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGYwYTZlYzRmMmQ4N2Zl
NWYyMmQ2NjMyMTdjZjE1OTk5MDgxMDA3Zi4uMGI3YjY5ZDFiZWIwMjRmZDA3N2Y2ZTBhYzg5YTE3
MWZjN2JiMDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA5LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIG5lZWQg
Zm9yIFNldHRlck1heVRocm93RXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKyAgICAgICAgSW50cm9kdWNp
bmcgQXR0cmlidXRlU2V0dGVyIHRvIGhhbmRsZSBleGNlcHRpb24gcmFpc2luZyBhdHRyaWJ1dGUg
c2V0dGVycywKKyAgICAgICAgYmFzZWQgb24gdGhlIEMrKyBjbGFzcyBtZXRob2QgaW5zdGVhZCBv
ZiBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbi4KKyAgICAgICAgQSBmb2xsb3ctdXAgcGF0Y2ggc2hv
dWxkIHJlbW92ZSBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbiBmcm9tIHRoZSBJRExzCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXR0
cmlidXRlU2V0dGVyPEV4Y2VwdGlvbk9yPHZvaWQ+Pjo6Y2FsbCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdHRyaWJ1dGVTZXR0ZXI8dm9pZD46OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJC
b2R5RGVmaW5pdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgor
CiAyMDE3LTA5LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IEFTQU4gYnVpbGQgYWZ0ZXIgcjIyMjMwNgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgKaW5kZXggNjM0ZjQ0MjRkNTI2MzY3ZTJhODcx
Mjc4MTZmYjJkZjEwNjg4MjQ0Yy4uZGNmYTgyMDM4YmYyZjZlZmQxYmI2NTk0NGYzZmMyMzdmMDUz
OTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCkBA
IC05MCw0ICs5MCwyOCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuVHlwZT4KK3N0cnVjdCBBdHRyaWJ1dGVTZXR0ZXI7CisKK3RlbXBsYXRlPD4KK3N0cnVj
dCBBdHRyaWJ1dGVTZXR0ZXI8RXhjZXB0aW9uT3I8dm9pZD4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgorICAgIHN0YXRpYyB2b2lkIGNhbGwoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEZ1bmN0b3ImJiBmdW5jdG9yKQorICAgIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBmdW5jdG9yKCk7CisgICAgICAgIGlmICghcmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBwcm9wYWdhdGVFeGNl
cHRpb24oc3RhdGUsIHRocm93U2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
IH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBdHRyaWJ1dGVTZXR0ZXI8dm9pZD4geworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgc3RhdGljIHZvaWQgY2FsbChKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIEZ1bmN0b3ImJiBmdW5jdG9yKQorICAgIHsKKyAg
ICAgICAgZnVuY3RvcigpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggNWU3MDlmMThjNGU4ZWZiZDFjNjRiY2M3YWYxNmNiODFmYTkzNzk5Zi4uMzgxMzk1MWQ3
ZmI1YzYzZTdkZmQ3MDY3ZWQwZmJjOTA3YWJjOTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ4MDEsNyArNDgwMSw2
IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW9uCiAgICAgCiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBib29sICR7YXR0cmlidXRlU2V0dGVy
Qm9keU5hbWV9KCIgLiBqb2luKCIsICIsIEBzaWduYXR1cmVBcmd1bWVudHMpIC4gIilcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogICAgIAogICAgIGlmICgkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDRVJlYWN0aW9uc30pIHsKQEAgLTQ5MTUsOSArNDkx
NCw2IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW9uCiAgICAgICAg
IHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJDYWxsV2l0aH0sICRvdXRwdXRBcnJh
eSwgImZhbHNlIiwgInRoaXNPYmplY3QiKSk7CiAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywg
R2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgImZhbHNlIiwgInRoaXNPYmplY3QiKSk7
CiAKLSAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInBy
b3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYg
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyTWF5VGhyb3dFeGNlcHRpb259
OwotCiAgICAgICAgIG15ICRjYWxsVHJhY2luZ0NhbGxiYWNrID0gJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja30gfHwgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja307CiAgICAgICAgIGlmICgkY2FsbFRy
YWNpbmdDYWxsYmFjaykgewogICAgICAgICAgICAgbXkgJGluZGVudCA9ICIgICAgIjsKQEAgLTQ5
MjYsNyArNDkyMiwxMCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlv
bgogICAgICAgICAgICAgR2VuZXJhdGVDYWxsVHJhY2VyKCRvdXRwdXRBcnJheSwgJGNhbGxUcmFj
aW5nQ2FsbGJhY2ssICRhdHRyaWJ1dGUtPm5hbWUsIFxAY2FsbFRyYWNlckFyZ3VtZW50cywgJGlu
ZGVudCk7CiAgICAgICAgIH0KIAotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtm
dW5jdGlvblN0cmluZ307XG4iKTsKKyAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiR7ZnVu
Y3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZSgkZnVuY3Rpb25T
dHJpbmcpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHtcbiIpOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiAkZnVuY3Rpb25TdHJpbmc7XG4iKTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH0pO1xuIik7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgIH0KICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKaW5kZXggNzBhZjRi
YzYzMWU1ZmE5NTAxNzE1ODcxMTk1NWZkZjIxYzJiZjg5OS4uZTJmMmM5NTU5ZWU3NWQyZTYwMmNm
ZGFlYTdhNWE1NDMwNjhkNWUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCkBAIC0yMDEs
MTMgKzIwMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0ZVdp
dGhDRVJlYWN0aW9ucyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZAogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0Q0VSZWFjdGlvbnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyhXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0cmli
dXRlV2l0aENFUmVhY3Rpb25zKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0
aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRoQ0VS
ZWFjdGlvbnMoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yMzIsMTMgKzIzMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0
aW9uc1JlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0
aENFUmVhY3Rpb25zU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdENFUmVhY3Rpb25zJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGF0dHJpYnV0ZXdp
dGhjZXJlYWN0aW9uc0F0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVT
ZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGF0dHJpYnV0ZXdpdGhjZXJlYWN0aW9uc0F0dHIsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAg
ICAgICByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGF0dHJpYnV0ZXdpdGhjZXJlYWN0aW9uc0F0dHIsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjYz
LDcgKzI2NSw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTCiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdENFUmVhY3Rpb25zJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInN0cmlu
Z2lmaWVyQXR0cmlidXRlIiksIHN0cmxlbigic3RyaW5naWZpZXJBdHRyaWJ1dGUiKSk7CiAgICAg
YXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5nZXQoJnN0YXRlLCBpZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKaW5kZXggYzllMjkxNWQw
OTZkNmMxMWRlYWRmYTk3YTgwNmE3ZmFjZmU3YTIzZi4uZTM3YTUxMjdlY2IzZjE2ZDY4ZmI0OGRm
YWE0MzY0ZmEwYTJhODBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyLmNwcApAQCAtMTkxLDEzICsxOTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUK
IAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1
ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRWYWx1ZShXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VmFs
dWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
CisgICAgICAgIHJldHVybiBpbXBsLnNldFZhbHVlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCmluZGV4
IDRkNmQ5NTM3MGIzNmJmNTdmMzFhZGVhZTI2OGU0N2E0MDkwZjEyMGMuLjU0NDIxMDdhN2VjOGMw
YTRjMmI1YjUyM2U1Zjk5YzVjYWFhNWQ0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKQEAg
LTIzNCw3ICsyMzQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJp
YnV0ZUludGVyZmFjZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJbnRlcmZhY2VTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0Q2FsbFRyYWNlciYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4o
c3RhdGUsIHZhbHVlKTsKQEAgLTI0NCw3ICsyNDMsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0Q2FsbFRyYWNlclRlc3RBdHRyaWJ1dGVJbnRlcmZhY2VTZXR0ZXIoRXhlY1N0YXRlJiBz
dAogICAgICAgICBjYWxsVHJhY2VyUGFyYW1ldGVycy5hcHBlbmQobmF0aXZlVmFsdWUpOwogICAg
ICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVy
YWwoInRlc3RBdHRyaWJ1dGVJbnRlcmZhY2UiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVy
cykpOwogICAgIH0KLSAgICBpbXBsLnNldFRlc3RBdHRyaWJ1dGVJbnRlcmZhY2UoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFRlc3RB
dHRyaWJ1dGVJbnRlcmZhY2UoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRo
cm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFRlc3RBdHRyaWJ1dGVJbnRl
cmZhY2UoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yNzEsNyArMjcyLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclRl
c3RBdHRyaWJ1dGVTcGVjaWZpZWQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEoKIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlU3BlY2lmaWVkU2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdENhbGxUcmFjZXImIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEJv
b2xlYW4+KHN0YXRlLCB2YWx1ZSk7CkBAIC0yODEsNyArMjgxLDkgQEAgc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdENhbGxUcmFjZXJUZXN0QXR0cmlidXRlU3BlY2lmaWVkU2V0dGVyKEV4ZWNT
dGF0ZSYgc3QKICAgICAgICAgY2FsbFRyYWNlclBhcmFtZXRlcnMuYXBwZW5kKG5hdGl2ZVZhbHVl
KTsKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJBdHRyaWJ1dGUoaW1wbCwgQVND
SUlMaXRlcmFsKCJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIiksIFdURk1vdmUoY2FsbFRyYWNlclBh
cmFtZXRlcnMpKTsKICAgICB9Ci0gICAgaW1wbC5zZXRUZXN0QXR0cmlidXRlU3BlY2lmaWVkKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5z
ZXRUZXN0QXR0cmlidXRlU3BlY2lmaWVkKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmli
dXRlU3BlY2lmaWVkKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMzA4LDcgKzMxMCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxU
cmFjZXJUZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlCiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDYWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVdpdGhW
YXJpYW50U2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdENhbGxUcmFjZXImIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+PihzdGF0ZSwg
dmFsdWUpOwpAQCAtMzE4LDcgKzMxOSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RD
YWxsVHJhY2VyVGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50U2V0dGVyKEV4ZWNTdGF0ZSYKICAgICAg
ICAgV1RGOjp2aXNpdChbJl0gKGF1dG8mIHZhbHVlKSB7IGNhbGxUcmFjZXJQYXJhbWV0ZXJzLmFw
cGVuZCh2YWx1ZSk7IH0sIG5hdGl2ZVZhbHVlKTsKICAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENh
bGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0QXR0cmlidXRlV2l0aFZh
cmlhbnQiKSwgV1RGTW92ZShjYWxsVHJhY2VyUGFyYW1ldGVycykpOwogICAgIH0KLSAgICBpbXBs
LnNldFRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudChXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50
KFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0gewor
ICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXggNTllY2M4N2EwNTMwYjUwOWZkNWRkYzA4OTY0
M2M5ZTVhMzFhMDk1OC4uMzJjNTVjNTZkODRkZmRiNDRkMDNmNDE2MWE5NTU1OWFjOTRkNzUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcApAQCAtMjI1LDcgKzIyNSw2IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclNldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgogICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVj
dChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIiksIHN0
cmxlbigiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSksIHZhbHVlKTsKQEAgLTI1NiwxMiAr
MjU1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlT
ZXR0aW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5
U2V0dGluZ0F0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRFbmFibGVk
QnlTZXR0aW5nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVT
ZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKFdURk1vdmUo
bmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCA1ZDA4YmQxNjU3NWVhYjg1MmZmOTA2MTc4YmUzYmU1YWJhMzJiZGZiLi5h
ODA3NzliMGUwMjNlZWE5NzQwNmQ1ZWNiZTgzNWY1MWE3OTY5MGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xv
YmFsT2JqZWN0LmNwcApAQCAtMjU4LDEyICsyNTgsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWwKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRy
aWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRSZWd1bGFyQXR0cmlidXRlKFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRS
ZWd1bGFyQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRSZWd1bGFyQXR0cmlidXRlKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
Mjg4LDEyICsyODksMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGlj
QW5kUHJpdmF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmMKIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGVTZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRQ
dWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRQdWJsaWNBbmRQ
cml2YXRlQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMzIyLDEyICszMjQsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKEV4ZWNTdGF0
ZSoKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZVNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0
ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGlt
cGwuc2V0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKFdURk1vdmUobmF0aXZl
VmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4g
aW1wbC5zZXRQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNTgsMTIgKzM2
MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuYwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNs
dHlwZShpbXBsLnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1
ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBs
LnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAg
IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDQ2
YjFmMzZmZjgzMWU0YjMwNGFkYzljYWQzOTllZGQ1YTIyZDQ0OTkuLmE5NDdhMjc4N2FhZDQxOTgy
OGU2YzMwYWJmMjExZmE2OTk4ZjM5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC00OTEs
MTEgKzQ5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcklt
cGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0clNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBUZXN0SW50ZXJm
YWNlOjpzZXRJbXBsZW1lbnRzU3RhdGljQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKFRlc3RJbnRlcmZhY2U6OnNldEltcGxlbWVudHNTdGF0
aWNBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geworICAgICAgICByZXR1cm4gVGVzdEludGVyZmFjZTo6c2V0SW1wbGVtZW50c1N0YXRpY0F0
dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01NDMsMTIgKzU0NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aAogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwu
c2V0SW1wbGVtZW50c1N0cjIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNl
dHRlcjxkZWNsdHlwZShpbXBsLnNldEltcGxlbWVudHNTdHIyKFdURk1vdmUobmF0aXZlVmFsdWUp
KSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5z
ZXRJbXBsZW1lbnRzU3RyMihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTU3Nyw3ICs1NzksNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzU2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICB0aGlzT2JqZWN0LnNldEltcGxlbWVudHNT
dHIzKHN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MTAsMTIgKzYxMSwxMyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUlt
cGxlbWVudHNOb2RlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEludGVyZmFjZSYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PihzdGF0ZSwgdmFsdWUsIFtdKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIiwgIk5v
ZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaW1wbC5zZXRJbXBsZW1lbnRzTm9kZSgqbmF0aXZlVmFsdWUpOworICAgIEF0dHJpYnV0ZVNl
dHRlcjxkZWNsdHlwZShpbXBsLnNldEltcGxlbWVudHNOb2RlKCpuYXRpdmVWYWx1ZSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0SW1wbGVt
ZW50c05vZGUoKm5hdGl2ZVZhbHVlKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNjYxLDExICs2NjMsMTIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHJTZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAg
V2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RhdGljQXR0cihXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKFdlYkNvcmU6
OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0aWNBdHRyKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NzEzLDEyICs3MTYsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0SW50ZXJmYWNlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgV2ViQ29yZTo6
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXBsLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKFdlYkNvcmU6OlRlc3RTdXBw
bGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0cjIoaW1wbCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
KT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcGwsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzQ3LDcgKzc1
MSw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZh
Y2VTdXBwbGVtZW50YWxTdHIzU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEludGVyZmFj
ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICB0aGlzT2JqZWN0LnNldFN1cHBsZW1lbnRhbFN0cjMoc3RhdGUsIHZhbHVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTc4MCwxMiArNzgzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlU2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdEludGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5v
ZGU+PihzdGF0ZSwgdmFsdWUsIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0
SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiLCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxl
bWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcGwsICpuYXRpdmVWYWx1ZSk7CisgICAgQXR0
cmlidXRlU2V0dGVyPGRlY2x0eXBlKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBs
ZW1lbnRhbE5vZGUoaW1wbCwgKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3Vw
cGxlbWVudGFsTm9kZShpbXBsLCAqbmF0aXZlVmFsdWUpOworICAgIH0pOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC04MTYsMTIgKzgyMCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VSZWZsZWN0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlUmVmbGVjdEF0dHJpYnV0ZVNldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3Rh
dGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
LSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRN
TE5hbWVzOjpyZWZsZWN0YXR0cmlidXRlQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAg
IEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0YXR0cmlidXRlQXR0ciwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAg
IHJldHVybiBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0YXR0cmlidXRlQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYjAyNWRjY2YzMmI1MTdmZmY3NmQ5ZTI1ZWFlMzc2OTZj
OWRjNGNmLi4yNzRjNDUzZGE0NjVjOTcwNzc0N2RlMTE2ZjczZTdkYjQwMzQzMzk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTIwNyw3ICsyMDcsNiBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVS
V0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b21TZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3ImIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgdGhpc09iamVjdC5zZXRUZXN0
QXR0cmlidXRlUldDdXN0b20oc3RhdGUsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAppbmRleCA0ZGEyN2QwZGZhZjVjNGZiZmZiMjJmMTc0ZWMwMWEyODRiYzVlYjAwLi5lMGY2
YmVmOGRhZjZiYjgwYmQ0M2I5ODkwMThhZjI1YTFhZTk4MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0y
NjIsMTIgKzI2MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcgogCiBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0Tm9kZU5hbWVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Tm9k
ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0TmFtZShXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0TmFt
ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsK
KyAgICAgICAgcmV0dXJuIGltcGwuc2V0TmFtZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
fSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZTY1ZjUyYTYyZWYwNDYy
MWM2NmE5NDdmZDcwOTdjZjYyZmFhYjQwZC4uOTJlYjU0ZWRiMGMwZjc4NTFlMzU4Mzk3ZTExZWU1
ODIwYmY3MWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIyMzMsMTEgKzIyMzMsMTIgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1YKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbnN0cnVj
dG9yU3RhdGljU3RyaW5nQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBUZXN0T2JqOjpzZXRTdGF0aWNTdHJpbmdBdHRyKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoVGVzdE9i
ajo6c2V0U3RhdGljU3RyaW5nQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OnNldFN0YXRpY1N0
cmluZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yMjc0LDcgKzIyNzUsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVt
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBybwogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW51bUF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
ICBhdXRvIG9wdGlvbmFsTmF0aXZlVmFsdWUgPSBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVu
dW1UeXBlPihzdGF0ZSwgdmFsdWUpOwpAQCAtMjI4Miw3ICsyMjgyLDkgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9iakVudW1BdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dE9iaiYgdGhpc08KICAgICBpZiAoVU5MSUtFTFkoIW9wdGlvbmFsTmF0aXZlVmFsdWUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IG9wdGlvbmFsTmF0aXZl
VmFsdWUudmFsdWUoKTsKLSAgICBpbXBsLnNldEVudW1BdHRyKFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRFbnVtQXR0cihXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAg
cmV0dXJuIGltcGwuc2V0RW51bUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzA3LDEyICsyMzA5LDEzIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0clNl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEJ5dGU+KHN0
YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgaW1wbC5zZXRCeXRlQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmli
dXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Qnl0ZUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
KT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNl
dEJ5dGVBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMjMzNywxMiArMjM0MCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpP
Y3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcgog
CiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyU2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMT2N0ZXQ+KHN0YXRlLCB2YWx1ZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5z
ZXRPY3RldEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxk
ZWNsdHlwZShpbXBsLnNldE9jdGV0QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0T2N0ZXRBdHRy
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjM2NywxMiArMjM3MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcgogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU2hvcnRBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMU2hvcnQ+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRTaG9ydEF0
dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShp
bXBsLnNldFNob3J0QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0U2hvcnRBdHRyKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjM5Nywx
MiArMjQwMiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqQ2xhbXBlZFNob3J0QXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExTaG9ydD4+KHN0YXRlLCB2
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAg
aW1wbC5zZXRDbGFtcGVkU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRy
aWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRDbGFtcGVkU2hvcnRBdHRyKFdURk1vdmUobmF0
aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1
cm4gaW1wbC5zZXRDbGFtcGVkU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQyNywxMiArMjQzMywxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW5mb3Jj
ZVJhbmdlU2hvcnRBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRW5mb3JjZVJhbmdlQWRhcHRvcjxJRExTaG9ydD4+KHN0YXRlLCB2YWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRF
bmZvcmNlUmFuZ2VTaG9ydEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0
ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEVuZm9yY2VSYW5nZVNob3J0QXR0cihXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0
dXJuIGltcGwuc2V0RW5mb3JjZVJhbmdlU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQ1NywxMiArMjQ2NCwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
VW5zaWduZWRTaG9ydEF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExVbnNpZ25lZFNob3J0PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0VW5zaWduZWRTaG9ydEF0
dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShp
bXBsLnNldFVuc2lnbmVkU2hvcnRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRVbnNpZ25lZFNo
b3J0QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTI0ODcsMTIgKzI0OTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9u
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm8KIAog
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakxvbmdBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldExv
bmdBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRMb25nQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TG9uZ0F0dHIoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTE3
LDEyICsyNTI2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nTG9uZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldExvbmdMb25n
QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBl
KGltcGwuc2V0TG9uZ0xvbmdBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRMb25nTG9uZ0F0dHIo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNTQ3LDEyICsyNTU3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9u
Z0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoCiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0clNldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KHN0
YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgaW1wbC5zZXRVbnNpZ25lZExvbmdMb25nQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VW5zaWduZWRMb25nTG9uZ0F0
dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7
CisgICAgICAgIHJldHVybiBpbXBsLnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU3NywxMiAr
MjU4OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUAogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqU3RyaW5nQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFN0cmluZ0F0dHIoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNl
dFN0cmluZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2Nv
cGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFN0cmluZ0F0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjA3LDEyICsy
NjE5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMVVNWU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0VXN2c3RyaW5nQXR0
cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGlt
cGwuc2V0VXN2c3RyaW5nQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0VXN2c3RyaW5nQXR0cihX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTI2MzcsMTIgKzI2NTAsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KHN0YXRlLCB2YWx1
ZSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdE9i
akF0dHIiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VGVzdE9iakF0dHIoKm5hdGl2ZVZhbHVl
KSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5z
ZXRUZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yNjY3LDEyICsyNjgxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RO
dWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyU2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50
ZXJmYWNlPFRlc3RPYmo+Pj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIiwgIlRlc3RPYmoiKTsg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1w
bC5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRy
aWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKFdURk1vdmUo
bmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY5NywxMiArMjcxMiwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpcwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
TGVuaWVudFRlc3RPYmpBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0ZSwgdmFsdWUsIFtdKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgImxlbmllbnRUZXN0T2JqQXR0ciIs
ICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwotICAgIGltcGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKCpuYXRp
dmVWYWx1ZSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJu
IGltcGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CisgICAgfSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTI3NDEsMTIgKzI3NTcsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBz
dGF0ZSwgRW4KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4oc3Rh
dGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
LSAgICBpbXBsLnNldFN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRTdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6
Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0U3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNzcxLDEyICsyNzg4LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpV
c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ1NldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElE
TFVTVlN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRl
Y2x0eXBlKGltcGwuc2V0VXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAg
ICAgIHJldHVybiBpbXBsLnNldFVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjgwMSwxMiArMjgxOSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlU3RyaW5n
QXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
VHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMQnl0ZVN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRC
eXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEJ5dGVTdHJpbmdBdHRy
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0Qnl0ZVN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjgzMSwxMiArMjg1MCwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdMb25nUmVjb3JkQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3Ry
aW5nTG9uZ1JlY29yZEF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4oc3RhdGUsIHZhbHVlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNl
dFN0cmluZ0xvbmdSZWNvcmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1
dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRTdHJpbmdMb25nUmVjb3JkQXR0cihXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0
dXJuIGltcGwuc2V0U3RyaW5nTG9uZ1JlY29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yODYxLDEyICsyODgxLDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpV
c3ZzdHJpbmdMb25nUmVjb3JkQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETFJlY29yZDxJRExVU1ZTdHJpbmcsIElETExvbmc+PihzdGF0ZSwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlt
cGwuc2V0VXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAg
IEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFVzdnN0cmluZ0xvbmdSZWNvcmRBdHRy
KFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0gewor
ICAgICAgICByZXR1cm4gaW1wbC5zZXRVc3ZzdHJpbmdMb25nUmVjb3JkQXR0cihXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI4OTEsMTIg
KzI5MTIsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nTG9uZ1JlY29yZEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKIAogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9ialVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMUmVjb3JkPElETEJ5dGVTdHJpbmcsIElETExv
bmc+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwotICAgIGltcGwuc2V0VXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFVzdnN0cmlu
Z0xvbmdSZWNvcmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRVc3ZzdHJpbmdMb25nUmVjb3Jk
QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTI5MjEsMTIgKzI5NDMsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5n
T2JqUmVjb3JkQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkKIAogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialN0cmluZ09ialJlY29yZEF0dHJTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExSZWNvcmQ8SURMRE9NU3Ry
aW5nLCBJRExJbnRlcmZhY2U8VGVzdE9iaj4+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0U3RyaW5nT2JqUmVj
b3JkQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKGltcGwuc2V0U3RyaW5nT2JqUmVjb3JkQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6
Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0U3Ry
aW5nT2JqUmVjb3JkQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTI5NTEsMTIgKzI5NzQsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqU3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1YKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialN0cmluZ051bGxhYmxlT2Jq
UmVjb3JkQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETFJlY29yZDxJRExET01TdHJpbmcsIElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2Jq
Pj4+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwotICAgIGltcGwuc2V0U3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRTdHJp
bmdOdWxsYWJsZU9ialJlY29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFN0cmluZ051bGxh
YmxlT2JqUmVjb3JkQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTI5ODEsMTIgKzMwMDUsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqRGljdGlvbmFyeUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHUKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakRpY3Rpb25hcnlBdHRyU2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRGljdGlvbmFy
eTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldERpY3Rpb25hcnlBdHRyKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5z
ZXREaWN0aW9uYXJ5QXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0RGljdGlvbmFyeUF0dHIoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0z
MDExLDEyICszMDM2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRGljdGlv
bmFyeUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9iak51bGxhYmxlRGljdGlvbmFyeUF0dHJTZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExEaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+Pj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldE51bGxhYmxlRGljdGlvbmFy
eUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlw
ZShpbXBsLnNldE51bGxhYmxlRGljdGlvbmFyeUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46
OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldE51
bGxhYmxlRGljdGlvbmFyeUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zMDQxLDEyICszMDY3LDEzIEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakFubm90YXRlZFR5cGVJblVuaW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpBbm5vdGF0ZWRUeXBl
SW5VbmlvbkF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExVbmlvbjxJRExET01TdHJpbmcsIElETENsYW1wQWRhcHRvcjxJRExMb25nPj4+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaW1wbC5zZXRBbm5vdGF0ZWRUeXBlSW5VbmlvbkF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEFubm90YXRlZFR5cGVJblVu
aW9uQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwg
WyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0QW5ub3RhdGVkVHlwZUluVW5pb25BdHRyKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MzA3MSwxMiArMzA5OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbm5vdGF0ZWRUeXBl
SW5TZXF1ZW5jZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVgogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0T2JqQW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyU2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMQ2xh
bXBBZGFwdG9yPElETExvbmc+Pj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEFubm90YXRlZFR5cGVJblNlcXVl
bmNlQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKGltcGwuc2V0QW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyKFdURk1vdmUobmF0aXZlVmFs
dWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1w
bC5zZXRBbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTAxLDcgKzMxMjksNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbXBsZW1lbnRhdGlvbkVudW1BdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpJbXBs
ZW1lbnRhdGlvbkVudW1BdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBvcHRpb25hbE5hdGl2
ZVZhbHVlID0gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oc3RhdGUsIHZhbHVl
KTsKQEAgLTMxMDksNyArMzEzNiw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpJ
bXBsZW1lbnRhdGlvbkVudW1BdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTCiAgICAgaWYg
KFVOTElLRUxZKCFvcHRpb25hbE5hdGl2ZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBvcHRpb25hbE5hdGl2ZVZhbHVlLnZhbHVlKCk7Ci0gICAg
aW1wbC5zZXRJbXBsZW1lbnRhdGlvbkVudW1BdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRJbXBsZW1lbnRhdGlvbkVudW1BdHRy
KFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0gewor
ICAgICAgICByZXR1cm4gaW1wbC5zZXRJbXBsZW1lbnRhdGlvbkVudW1BdHRyKFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEzNCwxMiAr
MzE2MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUAogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqWE1MT2JqQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpBdHRyIiwgIlRl
c3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgaW1wbC5zZXRYTUxPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CisgICAgQXR0cmlidXRlU2V0
dGVyPGRlY2x0eXBlKGltcGwuc2V0WE1MT2JqQXR0cigqbmF0aXZlVmFsdWUpKT46OmNhbGwoc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFhNTE9iakF0dHIo
Km5hdGl2ZVZhbHVlKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzE2NCwx
MiArMzE5NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqQ3JlYXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldENyZWF0ZShXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q3JlYXRl
KFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0gewor
ICAgICAgICByZXR1cm4gaW1wbC5zZXRDcmVhdGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAg
IH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTk0LDEyICszMjI1LDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRTdHJpbmdBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwu
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZHN0cmluZ2F0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0
dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTMyMjQsMTIgKzMyNTYsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkVVNWU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0clNldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVTVlN0cmluZz4o
c3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdh
dHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdhdHRyQXR0ciwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0z
MjU0LDEyICszMjg3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVn
cmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHJTZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0
SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0
dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKGltcGwuc2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRpbnRlZ3JhbGF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwg
dGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0SW50ZWdyYWxBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMyODQs
MTIgKzMzMTgsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEoKIAogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyU2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPihzdGF0
ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwot
ICAgIGltcGwuc2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFVuc2lnbmVkSW50ZWdyYWxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0
ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBb
Jl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMz
MTQsMTIgKzMzNDksMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVh
bkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyU2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIHZhbHVlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNl
dEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0
ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVk
Ym9vbGVhbmF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhy
b3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0Qm9vbGVhbkF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzQ0LDEyICsz
MzgwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0
dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0
eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1M
TmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVy
bGF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTMzNzQsMTIgKzM0MTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVmbGVjdGVkVVNWVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkK
IAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlVSTEF0dHJTZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExVU1ZTdHJpbmc+
KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0
dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eworICAgICAgICByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0dHIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQwNCwxMiAr
MzQ0MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50U3RyaW5nQXR0ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVT
ZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0
dXJuIGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1M
TmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNDM0LDEyICszNDczLDEzIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0SW50ZWdyYWxBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0ciwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBs
LnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudElu
dGVncmFsQXR0ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJv
d1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM0NjQs
MTIgKzM1MDQsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmEKIAogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyU2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIHZhbHVl
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBs
LnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50Qm9v
bGVhbkF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVy
PGRlY2x0eXBlKGltcGwuc2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1
c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIsIFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxs
KHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRCb29sZWFu
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0
ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zNDk0LDEyICszNTM1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHJTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxO
YW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Cisg
ICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7Cisg
ICAgICAgIHJldHVybiBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2Vi
Q29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzUyOCwxMiArMzU3
MCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldEVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0zNTYwLDEyICszNjAzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0clNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEZsb2F0MzJBcnJheT4o
c3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdE9iamVj
dCIsICJ0eXBlZEFycmF5QXR0ciIsICJGbG9hdDMyQXJyYXkiKTsgfSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRUeXBlZEFycmF5QXR0
cihuYXRpdmVWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVj
bHR5cGUoaW1wbC5zZXRUeXBlZEFycmF5QXR0cihuYXRpdmVWYWx1ZS5yZWxlYXNlTm9uTnVsbCgp
KSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5z
ZXRUeXBlZEFycmF5QXR0cihuYXRpdmVWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzU5MCwxMiArMzYzNCwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKUwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRl
V2l0aEdldHRlckV4Y2VwdGlvblNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRoR2V0dGVyRXhj
ZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFs
dWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1w
bC5zZXRBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzYyMCwxMiArMzY2NSwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKUwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
QXR0cmlidXRlV2l0aFNldHRlckV4Y2VwdGlvblNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0
YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnNldEF0dHJpYnV0ZVdpdGhTZXR0ZXJFeGNlcHRpb24oV1RG
TW92ZShuYXRpdmVWYWx1ZSkpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5z
ZXRBdHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+Ojpj
YWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRBdHRy
aWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY1MCwxMiArMzY5NiwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25TZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRTdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVy
PGRlY2x0eXBlKGltcGwuc2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShu
YXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJl
dHVybiBpbXBsLnNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY4MCwxMiArMzcy
NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25TZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgcHJvcGFn
YXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKSk7CisgICAgQXR0cmlidXRlU2V0dGVy
PGRlY2x0eXBlKGltcGwuc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShu
YXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJl
dHVybiBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcwOCw3ICszNzU2
LDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFAKIAogc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdE9iakN1c3RvbUF0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHRo
aXNPYmplY3Quc2V0Q3VzdG9tQXR0cihzdGF0ZSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpA
QCAtMzczMyw3ICszNzgwLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT25mb28oRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXIKIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9iak9uZm9vU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoc3RhdGUsIHRoaXNPYmplY3QsIHRoaXNP
YmplY3Qud3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTM3NTgsNyArMzgwNCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9u
d2Via2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKIAog
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak9ud2Via2l0Zm9vU2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoc3RhdGUsIHRo
aXNPYmplY3QsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZh
bHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3ODUsMTIgKzM4MzAsMTMgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHUKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
c3RhdGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoc3RhdGUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4g
aW1wbC5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoc3RhdGUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzgxNSwxMiArMzg2MSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0
aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwu
c2V0V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoc3RhdGUsIGFjdGl2ZURP
TVdpbmRvdyhzdGF0ZSksIGZpcnN0RE9NV2luZG93KHN0YXRlKSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFdpdGhDYWxsV2l0aEFu
ZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKHN0YXRlLCBhY3RpdmVET01XaW5kb3coc3RhdGUpLCBm
aXJzdERPTVdpbmRvdyhzdGF0ZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRXaXRoQ2FsbFdpdGhB
bmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZShzdGF0ZSwgYWN0aXZlRE9NV2luZG93KHN0YXRlKSwg
Zmlyc3RET01XaW5kb3coc3RhdGUpLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM4NDgsNyArMzg5NSw2IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7IH0pOwpAQCAtMzg1Niw3ICszOTAyLDkg
QEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlU2V0dGVyKEV4ZWNTdGEKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlKCpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlw
ZShpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpjb250ZXh0LCAq
bmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJl
dHVybiBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpjb250ZXh0
LCAqbmF0aXZlVmFsdWUpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zODgx
LDEyICszOTI5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9i
aj4+KHN0YXRlLCB2YWx1ZSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlRlc3RP
YmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsgfSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5z
ZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoc3RhdGUsICpuYXRpdmVWYWx1ZSk7Cisg
ICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKHN0YXRlLCAqbmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyhzdGF0ZSwgKm5hdGl2ZVZhbHVlKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMzkxNCw3ICszOTYzLDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGEKIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMSW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0ZSwgdmFsdWUsIFtdKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsgfSk7CkBAIC0zOTIyLDcgKzM5NzAsOSBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXNTZXR0ZXIoRQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXMoKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBl
KGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKmNvbnRl
eHQsICpuYXRpdmVWYWx1ZSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAg
ICAgcmV0dXJuIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXMoKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTM5NTAsNyArNDAwMCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0ZSwgdmFsdWUsIFtdKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKQEAgLTM5NTgs
NyArNDAwNyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlCiAgICAgYXV0byogY29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVl
KTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCwgKm5hdGl2
ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4g
aW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
KHN0YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMzk4Niw3ICs0MDM3LDYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygKIAog
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KHN0YXRlLCB2YWx1ZSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsICJUZXN0T2Jq
Iik7IH0pOwpAQCAtMzk5NCw3ICs0MDQ0LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUKICAg
ICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJ
S0VMWSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoc3RhdGUs
ICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShp
bXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMoc3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUsIHRocm93
U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoc3RhdGUsICpjb250ZXh0LCAqbmF0
aXZlVmFsdWUpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MDIyLDcgKzQw
NzQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KHN0YXRlLCB2YWx1ZSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9y
KHN0YXRlLCBzY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOyB9KTsKQEAgLTQw
MzAsNyArNDA4MSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlCiAgICAgYXV0byogY29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShzdGF0ZSwgKmNvbnRleHQs
ICpuYXRpdmVWYWx1ZSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUo
c3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCwgKm5hdGl2
ZVZhbHVlKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA1OSwxMiArNDEx
MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYQogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjFTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlt
cGwuc2V0Q29uZGl0aW9uYWxBdHRyMShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmli
dXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMShXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJu
IGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQwOTUsMTIgKzQxNDksMTMgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmEKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlv
bjIpCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMlNldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExvbmc+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaW1wbC5zZXRDb25kaXRpb25hbEF0dHIyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBB
dHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRDb25kaXRpb25hbEF0dHIyKFdURk1vdmUo
bmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRDb25kaXRpb25hbEF0dHIyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDEzMSwxMiArNDE4NiwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYQogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMikKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIz
U2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4o
c3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBpbXBsLnNldENvbmRpdGlvbmFsQXR0cjMoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldENvbmRpdGlvbmFsQXR0cjMoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAg
ICAgIHJldHVybiBpbXBsLnNldENvbmRpdGlvbmFsQXR0cjMoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MTY1LDcgKzQyMjEsNiBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVgogI2lmIEVOQUJMRShDb25kaXRpb24xKQogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvclNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCiAgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiY29uZGl0aW9uYWxBdHRyNCIpLCBzdHJsZW4oImNvbmRpdGlvbmFsQXR0cjQiKSks
IHZhbHVlKTsKQEAgLTQxOTYsNyArNDI1MSw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvclNldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IuCiAgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiY29uZGl0aW9uYWxBdHRyNSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsQXR0cjUiKSksIHZh
bHVlKTsKQEAgLTQyMjcsNyArNDI4MSw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvclNldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IuCiAgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiY29uZGl0aW9uYWxBdHRyNiIpLCBzdHJsZW4oImNvbmRpdGlvbmFsQXR0cjYiKSksIHZhbHVl
KTsKQEAgLTQyOTAsMTIgKzQzNDMsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKIAogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEFueT4oc3RhdGUsIHZhbHVlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEFu
eUF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRl
Y2x0eXBlKGltcGwuc2V0QW55QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxs
KHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRBbnlBdHRy
aWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC00MzIwLDEyICs0Mzc0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9iamVj
dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExPYmplY3Q+KHN0YXRlLCB2YWx1
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1w
bC5zZXRPYmplY3RBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0
ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldE9iamVjdEF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGlt
cGwuc2V0T2JqZWN0QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDM2NCwxMiArNDQxOSwxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50
U2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJm
YWNlPFNWR1BvaW50Pj4oc3RhdGUsIHZhbHVlLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiLCAiU1ZHUG9pbnQiKTsgfSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRNdXRh
YmxlUG9pbnQoKm5hdGl2ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1w
bC5zZXRNdXRhYmxlUG9pbnQoKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3Bl
LCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRNdXRhYmxlUG9pbnQoKm5hdGl2ZVZhbHVl
KTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDM5NCwxMiArNDQ1MCwxMyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
T2JqU3RyYXdiZXJyeVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRCbHVlYmVycnkoV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEJsdWViZXJyeShXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAg
ICAgcmV0dXJuIGltcGwuc2V0Qmx1ZWJlcnJ5KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDQzOCwxMiArNDQ5NSwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqSWRTZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0
ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwot
ICAgIGltcGwuc2V0SWQoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRl
cjxkZWNsdHlwZShpbXBsLnNldElkKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRl
LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRJZChXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ0ODIsNyAr
NDU0MCw2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gcHJvcGVydHkuCiAgICAgcmV0dXJu
IHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicmVwbGFjZWFibGVB
dHRyaWJ1dGUiKSwgc3RybGVuKCJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpKSwgdmFsdWUpOwpAQCAt
NDU2NSwxMiArNDYyMiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVTZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExM
b25nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldE51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0TnVsbGFi
bGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NTk1LDEyICs0NjUzLDEzIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ1NldHRhYmxlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oc3RhdGUsIHZhbHVlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldE51
bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAg
IEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldE51bGxhYmxlU3RyaW5nU2V0dGFibGVB
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUs
IFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldE51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRy
aWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC00NjI1LDEyICs0Njg0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxh
YmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0
cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMVVNWU3RyaW5nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldE51bGxhYmxlVVNWU3RyaW5n
U2V0dGFibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNl
dHRlcjxkZWNsdHlwZShpbXBsLnNldE51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7Cisg
ICAgICAgIHJldHVybiBpbXBsLnNldE51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC00NjU1LDEyICs0NzE1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQnl0
ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuCiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0
ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETE51bGxh
YmxlPElETEJ5dGVTdHJpbmc+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0TnVsbGFibGVCeXRlU3RyaW5nU2V0
dGFibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRl
cjxkZWNsdHlwZShpbXBsLnNldE51bGxhYmxlQnl0ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAg
ICAgICByZXR1cm4gaW1wbC5zZXROdWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTQ2ODUsMTIgKzQ3NDYsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJp
bmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkKIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWVTZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExMb25nPj4oc3Rh
dGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
LSAgICBpbXBsLnNldE51bGxhYmxlU3RyaW5nVmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldE51bGxhYmxlU3RyaW5nVmFsdWUo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7Cisg
ICAgICAgIHJldHVybiBpbXBsLnNldE51bGxhYmxlU3RyaW5nVmFsdWUoV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NzI5LDcgKzQ3OTEs
NiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBh
dXRvIG9wdGlvbmFsTmF0aXZlVmFsdWUgPSBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlv
bmFsPihzdGF0ZSwgdmFsdWUpOwpAQCAtNDczNyw3ICs0Nzk4LDkgQEAgc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlU2V0dGVyKEV4ZWNT
dGF0ZSYgc3QKICAgICBpZiAoVU5MSUtFTFkoIW9wdGlvbmFsTmF0aXZlVmFsdWUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IG9wdGlvbmFsTmF0aXZlVmFs
dWUudmFsdWUoKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5z
ZXRBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6
Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0QXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0p
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NzkwLDcgKzQ4NTMsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2Fy
ZHNBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gaWQg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oInB1dEZvcndhcmRzQXR0cmlidXRlIiksIHN0cmxlbigicHV0Rm9yd2FyZHNB
dHRyaWJ1dGUiKSk7CiAgICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5nZXQo
JnN0YXRlLCBpZCk7CkBAIC00ODI3LDcgKzQ4ODksNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
UwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0
dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byBpZCA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpLCBzdHJsZW4oInB1dEZvcndh
cmRzTnVsbGFibGVBdHRyaWJ1dGUiKSk7CiAgICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhp
c09iamVjdC5nZXQoJnN0YXRlLCBpZCk7CkBAIC00ODY0LDEyICs0OTI1LDEzIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialN0cmluZ2lmaWVyQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdp
ZmllckF0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETFVTVlN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFN0cmluZ2lmaWVyQXR0cmlidXRlKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5z
ZXRTdHJpbmdpZmllckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0
ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0U3RyaW5naWZpZXJB
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC00ODk1LDEyICs0OTU3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlCiAj
aWYgRU5BQkxFKENPTkRJVElPTikKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDb25k
aXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPE5vZGU+PihzdGF0ZSwgdmFsdWUsIFtdKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVBdHRyaWJ1dGUiLCAiTm9kZSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldENvbmRpdGlvbmFsbHlSZWFkV3JpdGVB
dHRyaWJ1dGUoKm5hdGl2ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1w
bC5zZXRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSkpPjo6Y2Fs
bChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOworICAgIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC00OTMyLDEyICs0OTk1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZShFeGVj
U3RhdGUqCiAjaWYgRU5BQkxFKENPTkRJVElPTikKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVTZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExJbnRlcmZhY2U8Tm9k
ZT4+KHN0YXRlLCB2YWx1ZSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlRlc3RP
YmplY3QiLCAiY29uZGl0aW9uYWxBbmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIiwg
Ik5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgaW1wbC5zZXRDb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1
dGUoKm5hdGl2ZVZhbHVlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRD
b25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUoKm5hdGl2ZVZhbHVl
KSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5z
ZXRDb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUoKm5hdGl2ZVZh
bHVlKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDk2NiwxMiArNTAzMCwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNl
dENvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldENvbmRpdGlvbmFsbHlF
eHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldENvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0p
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00OTk2LDEyICs1MDYxLDEzIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q29uZGl0aW9uYWxs
eUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0
cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtl
ckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9uYWxseUV4cG9zZWRUb1dv
cmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTUwMjYsMTIgKzUwOTIsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZShFeGVjU3Rh
dGUKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q29uZGl0aW9uYWxseUV4
cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Cisg
ICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0Q29uZGl0aW9uYWxseUV4cG9zZWRU
b1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChz
dGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0Q29uZGl0aW9u
YWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uLmNwcAppbmRleCBjMGIxYjQ2MzkwZDk1MzU5ZTNmMzgxNjI0ZTZhNTRmZjZiY2E1NTQzLi44
YzgxZmFhMDQ1ZGRlMDA5MmVlNTZmNGQxZTVmOGI0NjYwZDNkNDA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb24uY3BwCkBAIC0yMTgsMTIgKzIxOCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkZpcnN0U3Ry
aW5nQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEZpcnN0U3RyaW5nQXR0
cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRGaXJzdFN0cmluZ0F0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6
Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0Rmly
c3RTdHJpbmdBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0yNDgsMTIgKzI0OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemF0aW9uU2Vjb25kTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSgogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblNlY29uZExv
bmdBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFNlY29uZExvbmdBdHRyaWJ1dGUo
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBs
LnNldFNlY29uZExvbmdBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3Rh
dGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFNlY29uZExvbmdB
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yNzgsMTIgKzI4MCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxp
emF0aW9uVGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLAogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvblRoaXJkVW5zZXJpYWxpemFi
bGVBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RFeGNlcHRpb24+PihzdGF0ZSwgdmFsdWUsIFtd
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0F0
dHJpYnV0ZVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJUZXN0U2VyaWFsaXphdGlvbiIsICJ0aGly
ZFVuc2VyaWFsaXphYmxlQXR0cmlidXRlIiwgIlRlc3RFeGNlcHRpb24iKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRUaGlyZFVu
c2VyaWFsaXphYmxlQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7CisgICAgQXR0cmlidXRlU2V0dGVy
PGRlY2x0eXBlKGltcGwuc2V0VGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZSgqbmF0aXZlVmFs
dWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBs
LnNldFRoaXJkVW5zZXJpYWxpemFibGVBdHRyaWJ1dGUoKm5hdGl2ZVZhbHVlKTsKKyAgICB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA4LDEyICszMTEsMTMgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXphdGlvbkZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHMKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25G
b3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRG91YmxlPihz
dGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwotICAgIGltcGwuc2V0Rm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRGb3Vy
dGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNh
bGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldEZvdXJ0
aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
fSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMzOCwxMiArMzQyLDEzIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25GaWZ0aExvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0
aW9uRmlmdGhMb25nQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlh
bGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExvbmc+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRGaWZ0aExvbmdB
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNs
dHlwZShpbXBsLnNldEZpZnRoTG9uZ0F0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6
Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0Rmlm
dGhMb25nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMzY4LDEyICszNzMsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvblNpeHRoVHlwZWRlZkF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGUKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25TaXh0aFR5cGVk
ZWZBdHRyaWJ1dGVTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRG91YmxlPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0U2l4dGhUeXBlZGVmQXR0cmli
dXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUo
aW1wbC5zZXRTaXh0aFR5cGVkZWZBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNh
bGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFNpeHRo
VHlwZWRlZkF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTM5OCwxMiArNDA0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dFNlcmlhbGl6YXRpb25TZXZlbnRoRGlyZWN0bHlTZXJpYWxpemFibGVBdHRyaWJ1dGUoRXhlY1N0
YXRlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uU2V2ZW50aERp
cmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEludGVyZmFjZTxUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbD4+KHN0YXRlLCB2YWx1ZSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBz
Y29wZSwgIlRlc3RTZXJpYWxpemF0aW9uIiwgInNldmVudGhEaXJlY3RseVNlcmlhbGl6YWJsZUF0
dHJpYnV0ZSIsICJUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbCIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFNldmVudGhE
aXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOworICAgIEF0dHJpYnV0
ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFNldmVudGhEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJp
YnV0ZSgqbmF0aXZlVmFsdWUpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAg
ICAgIHJldHVybiBpbXBsLnNldFNldmVudGhEaXJlY3RseVNlcmlhbGl6YWJsZUF0dHJpYnV0ZSgq
bmF0aXZlVmFsdWUpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MjgsMTIg
KzQzNSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRWlnaHRoSW5kaXJl
Y3RseUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbgogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0U2VyaWFsaXphdGlvbkVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGVTZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMSW50ZXJm
YWNlPFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZT4+KHN0YXRlLCB2YWx1ZSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXR0cmlidXRlVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIlRlc3RTZXJpYWxpemF0aW9uIiwgImVp
Z2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUiLCAiVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVy
aXRhbmNlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwotICAgIGltcGwuc2V0RWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwor
ICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldEVpZ2h0aEluZGlyZWN0bHlBdHRy
aWJ1dGUoKm5hdGl2ZVZhbHVlKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAg
ICAgICByZXR1cm4gaW1wbC5zZXRFaWdodGhJbmRpcmVjdGx5QXR0cmlidXRlKCpuYXRpdmVWYWx1
ZSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IGUyMjkzNzY0NmUxN2YwZjI2NmJjOTFjZGZiMGZh
ZTVhNGI0NzU4YzMuLmVjNDViNTVjNzliY2M0MDQwM2M4MzM2YzQ2YjJhZGNhYjI1ZmQzN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMTgzLDEyICsx
ODMsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRJbmhlcml0
TG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0ZVNldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TG9uZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKLSAgICBpbXBsLnNldEluaGVyaXRMb25nQXR0cmlidXRlKFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRJbmhlcml0TG9u
Z0F0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0SW5oZXJpdExvbmdBdHRyaWJ1dGUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKaW5kZXggODBl
MGY2MjE2MGEyZjZiM2E2YzVkNWQxNzU0OGEzYjAxNzY1YWUxMS4uMDFlNjBjMzYyZTIyZDFjZDcw
ZDdmODdkZWVjYWVmMTdhYmU1OTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsLmNwcApAQCAtMTg2LDEyICsxODYsMTMgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUZvbyhF
eGVjU3RhdGUqIHMKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVGb29TZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3Rh
dGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
LSAgICBpbXBsLnNldEZpbmFsTG9uZ0F0dHJpYnV0ZUZvbyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0RmluYWxMb25nQXR0cmlidXRl
Rm9vKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0g
eworICAgICAgICByZXR1cm4gaW1wbC5zZXRGaW5hbExvbmdBdHRyaWJ1dGVGb28oV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMTYsMTIg
KzIxNywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFs
RmluYWxMb25nQXR0cmlidXRlQmFyKEV4ZWNTdGF0ZSogcwogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUJhclNl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0RmluYWxMb25nQXR0cmlidXRlQmFy
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1w
bC5zZXRGaW5hbExvbmdBdHRyaWJ1dGVCYXIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwo
c3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldEZpbmFsTG9u
Z0F0dHJpYnV0ZUJhcihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKaW5kZXggYjMyMWJhZTE0ZjAxZWJmNWQ3OGI1NWYzYzNlOGY3N2Ez
NzQzMTg0OC4uYmUyOTYzNzRiM2JjZTkyZTY0NDg2ZjJiYmZkY2I5NjNiOGJlN2RiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKQEAgLTIxMCwxMiArMjEwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1
ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0VmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwor
ICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFZhbHVlKFdURk1vdmUobmF0aXZl
VmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4g
aW1wbC5zZXRWYWx1ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTI1NywxMiArMjU4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUs
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDYWNoZWRWYWx1ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0Q2FjaGVkVmFsdWUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNl
dENhY2hlZFZhbHVlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Nj
b3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRDYWNoZWRWYWx1ZShXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCmluZGV4IGJk
ODRkZDZlZmYwNDAzNDEwYmMxMjYzMTBkN2ZjZTBiNTkzNGNhYTguLjgwMTZkNDUzNGNmODBjNzMy
ZDg4MDI5ZTRiYTFiZWM2ZWMwYzY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcApAQCAtMTkwLDEyICsxOTAsMTMgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVJZGVudGlmaWVy
KEV4ZWNTdGF0ZSogc3RhdGUsIEUKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlSWRlbnRpZmllclNldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwotICAgIGltcGwuc2V0SWRlbnRpZmllcihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0SWRlbnRpZmllcihXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAg
cmV0dXJuIGltcGwuc2V0SWRlbnRpZmllcihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDcxNWM3OWZh
NTQ3ODNmMmZmYzViYjI1NDVhOTk4M2FhYzk1NmVhYmIuLmVhNTZjZTg5ZTE0ZTkwMjZlYWI1MjRl
ZjAxMWI2MWM0YWQ1ZWJlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMzA1LDEyICszMDUs
MTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWwKIAogc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KHN0YXRlLCB2
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAg
aW1wbC5zZXRVbnNpZ25lZExvbmdMb25nQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0VW5zaWduZWRMb25nTG9uZ0F0dHIoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsmXSB7CisgICAg
ICAgIHJldHVybiBpbXBsLnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzM1LDEyICszMzYsMTMg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmEKIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dFR5cGVkZWZzU2VyaWFsaXplZFNjcmlwdFZhbHVlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwu
c2V0U2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0zNzcsMTIgKzM3OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc0F0dHJpYnV0ZVdpdGhDbGFtcChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXBT
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETENs
YW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJpYnV0
ZVdpdGhDbGFtcChXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmlidXRlU2V0dGVyPGRl
Y2x0eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aENsYW1wKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+
OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRB
dHRyaWJ1dGVXaXRoQ2xhbXAoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC00MDcsMTIgKzQxMCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc0F0dHJpYnV0ZVdpdGhDbGFtcEluVHlwZWRlZihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRo
Q2xhbXBJblR5cGVkZWZTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExMb25nPj4oc3RhdGUsIHZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEF0dHJp
YnV0ZVdpdGhDbGFtcEluVHlwZWRlZihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgQXR0cmli
dXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0QXR0cmlidXRlV2l0aENsYW1wSW5UeXBlZGVmKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAg
ICAgICByZXR1cm4gaW1wbC5zZXRBdHRyaWJ1dGVXaXRoQ2xhbXBJblR5cGVkZWYoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MzcsMTIg
KzQ0MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvblNldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVl
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBs
LnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBB
dHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUoaW1wbC5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSkpPjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAg
ICAgICAgcmV0dXJuIGltcGwuc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NjcsMTIgKzQ3
MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvblNldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTG9uZz4oc3RhdGUsIHZhbHVlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBwcm9wYWdh
dGVFeGNlcHRpb24oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuc2V0QXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5
cGUoaW1wbC5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkp
Pjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00OTcsMTIgKzUwMywxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuYwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvblNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBl
ZGVmcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0U3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIEF0dHJpYnV0
ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKFdU
Rk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAg
ICAgICByZXR1cm4gaW1wbC5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUyNywx
MiArNTM0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jCiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uU2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnNldFN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKFdURk1vdmUobmF0aXZlVmFsdWUpKSk7CisgICAg
QXR0cmlidXRlU2V0dGVyPGRlY2x0eXBlKGltcGwuc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNTU3LDEyICs1NjUsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNCdWZmZXJT
b3VyY2VBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHQKIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdFR5cGVkZWZzQnVmZmVyU291cmNlQXR0clNldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5pb248SURMQXJyYXlC
dWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXRCdWZmZXJTb3VyY2VB
dHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI8ZGVjbHR5cGUo
aW1wbC5zZXRCdWZmZXJTb3VyY2VBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKSk+OjpjYWxsKHN0
YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRCdWZmZXJTb3Vy
Y2VBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNTg3LDEyICs1OTYsMTMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNE
b21UaW1lU3RhbXBBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHQKIAogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdFR5cGVkZWZzRG9tVGltZVN0YW1wQXR0clNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5zaWduZWRM
b25nTG9uZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldERvbVRpbWVTdGFtcEF0dHIoV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOworICAgIEF0dHJpYnV0ZVNldHRlcjxkZWNsdHlwZShpbXBsLnNldERvbVRpbWVTdGFt
cEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpKT46OmNhbGwoc3RhdGUsIHRocm93U2NvcGUsIFsm
XSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldERvbVRpbWVTdGFtcEF0dHIoV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>